在闪亮的应用程序部署中隐藏密钥
Hide Keys in Shiny Application Deploy
我正在使用从 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")
我还要补充一点,我使用的是免费计划,因此用户身份验证不可用,否则我不会因为我的密钥可见而大惊小怪。
也许这个解决方案太基础了,但您可以简单地创建一个 .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")
和评论中“管理秘密”link中的第一个解决方案类似,只是我们使用的是简单的文本格式,而不是JSON。
我推荐以下解决方案及其背后的原因:
首先,创建一个名为 .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
中检索,这样您就可以保护您的代码。
我正在使用从 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")
我还要补充一点,我使用的是免费计划,因此用户身份验证不可用,否则我不会因为我的密钥可见而大惊小怪。
也许这个解决方案太基础了,但您可以简单地创建一个 .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")
和评论中“管理秘密”link中的第一个解决方案类似,只是我们使用的是简单的文本格式,而不是JSON。
我推荐以下解决方案及其背后的原因:
首先,创建一个名为 .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
中检索,这样您就可以保护您的代码。