簡體   English   中英

如何安全地為運行 R 腳本的 azure 批處理服務提供秘密

[英]How to securely provide secrets to azure batch service running R scripts

我正在嘗試找到一種方法來為我的批處理服務作業提供敏感數據。 數據是在 R 腳本中用於連接到 SQL 並獲取表的 sql 連接憑據。 所以如果我們在批處理工作目錄中有一個配置文件,代碼看起來像這樣。

    dbConfig <- config::get(file = "config.yml")

    db_connect <- function(database_config_name){
      dbConfig <- config::get(database_config_name)
      connection <- DBI::dbConnect(odbc::odbc(),
                                   Driver = dbConfig$driver,
                                   Server = dbConfig$server,
                                   UID    = dbConfig$uid,
                                   PWD    = dbConfig$pwd,
                                   Database = dbConfig$database,
                                   encoding = "UTF-8"
      )

為了創建這個配置文件,我找到了 AzureKeyVault包來驗證我在 Azure Key Vault 中的機密並將文件寫入 Azure 批處理環境。 所以代碼看起來像:

devtools::install_github("Azure/AzureKeyVault")

vault <- AzureKeyVault::key_vault("https://mykeyvault.vault.azure.net")
secret <- vault$secrets$get("secretname")


yaml::write_yaml(secret$value,"config.yml")

dbConfig <- config::get(file = "config.yml")

然后我想對秘密進行的操作並最終將其刪除:

unlink("config.yml", recursive = FALSE, force = TRUE)

這個操作的問題是,它不是自動認證,控制台打印了以下命令:

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and 

enter the code xxxxxxxx to authenticate. 
Waiting for device code in browser...

這不是我想要的。 我希望 Azure 批處理自動進行身份驗證並獲取機密。 或者,如果有任何其他安全方式向 azure 批次提供機密信息。

您需要使用應用程序身份驗證初始化您的保管庫:

cert  <- PKI.load.cert(file=system.file("certs", "app_cert.pfx", package="PKI"))
token <- AzureAuth::get_azure_token("https://vault.azure.net", "myaadtenant",
                                     app="app_id", certificate=cert)
vault <- AzureKeyVault::key_vault("mykeyvault", token=token)

或者(推薦),使用Managed Identity

vault <- AzureKeyVault::key_vault("mykeyvault", as_managed_identity=TRUE)

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM