簡體   English   中英

訪問 Azure ARM 模板中的機密

[英]Accessing secrets in Azure ARM templates

我按照官方文檔教程如何訪問 arm 模板中的密鑰庫機密。 我用 static 和動態密鑰庫 id 嘗試了這兩種方法,我讓它們都工作了。 奇怪的是需要設置的樣板(需要嵌套模板)的動態 id 方法數量。

在 static id 方法中,您需要在模板參數文件中指定:

"adminPassword": {
        "reference": {
          "keyVault": {
          "id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
          },
          "secretName": "ExamplePassword"
        }
      }

這是不錯且簡單的設置。

但是,如果我在主模板文件的參數部分(不在參數文件中)嘗試類似的設置(沒有嵌套模板)的動態 id 方法,它不起作用:

"adminPassword": {
      "type": "secureobject",
      "metadata": {
        "description": "Key vault secret"
      },
      "defaultValue": {
        "reference": {
          "keyVault": {
            "id": "[resourceId('keyvault-resource-group','Microsoft.KeyVault/vaults', 'keyvault-name')]"
          },
          "secretName": "ExamplePassword"
        }
      }
    }

問題是為什么這種方法不起作用? 也許與 arm 模板生命周期有關? 當您只需要從密鑰保管庫訪問一兩個秘密時,這將顯着減少樣板文件的數量。

再說一遍,我確實使 static 和官方文檔中的動態 id 方法與嵌套模板一起工作。 這是為了盡可能減少 arm 模板中的行數或消除對嵌套模板的需求。

文檔中所示,您只能在鏈接模板參數中聲明動態密鑰保管庫 ID,對於每個鏈接模板,每次都必須重復該 ID。

據我了解,您希望傳入參數一次,然后將其重用於多個鏈接模板。

考慮到上述情況,您可以使用New-AzResourceGroupDeployment的內聯參數從 PowerShell 傳遞securestring字符串

ARM 模板

"adminPassword": {
  "type": "securestring",
  "metadata": {
    "description": "Key vault secret"
  }
}

PowerShell

$adminPassword = (Get-AzKeyVaultSecret `
    -VaultName "keyVaultName" `
    -Name "adminPassword").SecretValue

New-AzResourceGroupDeployment `
    -ResourceGroupName "my-resource-group" `
    -TemplateFile template.json `
    -TemplateParameterFile parameters.json `
    -adminPassword $adminPassword

您還可以將其與 Azure Devops YAML 管道中的Azure 密鑰庫任務集成:

- task: AzureKeyVault@1
  inputs:
    azureSubscription: $(subscriptionID)
    KeyVaultName: $(keyVaultName)
    SecretsFilter: '*'
    RunAsPreJob: false

然后您可以在后續任務中引用該秘密。 您還可以將此密鑰作為參數傳遞給Azure 資源組部署任務

簡短的回答是“不支持” - 較長的答案或與安全性有關的原因,我們不希望部署引擎(處理 defaultValues)全面訪問每個人的密鑰庫(並且 ARM 令牌是與 KV 令牌不同)。 我們正在考慮改進方案,但目前還沒有 ETA...

暫無
暫無

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

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