【问题标题】:Hide Keys in Shiny Application Deploy在闪亮的应用程序部署中隐藏密钥
【发布时间】:2021-05-18 21:06:45
【问题描述】:

我正在使用从 S3 获取的数据将应用程序部署到 shinyapps.io,并且我想确保我的 AWS 密钥是安全的。目前在 app.R 代码中,我正在设置环境变量,然后查询 S3 以获取数据。

有没有办法创建一个隐藏密钥的文件并将其与我的 app.R 文件一起部署到 shinyApss

Sys.setenv("AWS_ACCESS_KEY_ID" = "XXXXXXXX",
           "AWS_SECRET_ACCESS_KEY" = "XXXXXXXXX",
           "AWS_DEFAULT_REGION" = "us-east-2")


inventory =aws.s3::s3read_using(read.csv, object = "s3://bucket/file.csv")

我还要补充一点,我使用的是免费计划,因此用户身份验证不可用,否则我不会担心我的密钥是否可见。

【问题讨论】:

标签: r amazon-s3 shiny shinyapps


【解决方案1】:

也许这个解决方案太简单了,但您可以简单地创建一个 .txt 文件,其中每行一个键。你可以使用scan() 来读取该文件。

类似:

   Sys.setenv("AWS_ACCESS_KEY_ID" = scan("file.txt",what="character")[1],
           "AWS_SECRET_ACCESS_KEY" = scan("file.txt",what="character")[2],
           "AWS_DEFAULT_REGION" = "us-east-2")

它与cmets中“管理机密”链接中的第一个解决方案类似,不同之处在于我们使用简单的文本格式而不是JSON。

【讨论】:

    【解决方案2】:

    我推荐以下解决方案及其背后的原因:

    首先,创建一个名为 .Renviron 的文件(只需使用 RStudio 上的文本编辑器创建它)。由于该文件的名称前有一个点,因此该文件将被隐藏(例如在 Mac/Linux 中)。输入以下内容:

    AWS_ACCESS_KEY_ID = "your_access_key_id"
    AWS_SECRET_ACCESS_KEY = "you_secret_access_key"
    AWS_DEFAULT_REGION = "us-east-2"
    

    其次,如果您使用 .git,建议在您的 gitignore 文件中添加以下文本(以避免共享该文件以进行版本控制):

    # R Environment Variables
    .Renviron
    

    最后,您可以检索存储在 .Renviron 中的值以连接到您的数据库、S3 存储桶等:

    library(aws.s3)
    bucketlist(key = Sys.getenv("AWS_ACCESS_KEY_ID"), 
    secret = Sys.getenv("AWS_SECRET_ACCESS_KEY"))
    

    这样,您的密钥将被“隐藏”,并由函数 Sys.getenv 从 .Renviron 检索,因此您可以保护您的代码。

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 1970-01-01
      • 2020-02-17
      • 2018-05-24
      • 2018-02-03
      • 2017-11-08
      • 2014-08-09
      • 2016-02-24
      相关资源
      最近更新 更多