4

我试图在我们的 ARM 部署中添加 Azure 密钥保管库集成,以便我们可以将所有密码保存在 Azure Key-Vault 中。

我正在按照尝试访问我在 Azure KeyVault (dSentienceAnalytics) 中创建的机密 (adminPassword)。是我的模板

我尝试通过 Powershell 部署这个模板,但它要求我输入变量“adminPassword”的值,它应该从 Azure 密钥库中检索。

你看到我在这里错过了什么吗?

4

3 回答 3

4

您不能在模板本身中使用 KeyVault 引用,只能在参数文件中使用。因此,如果您使用 KeyVault,您的模板看起来不会有任何不同,adminPassword 参数将简单地定义为 secureString。模板对密码的使用可以完全像这样:

https://github.com/Azure/azure-quickstart-templates/blob/master/101-vm-simple-linux/azuredeploy.json

参数文件是使用引用的地方。这里的第一个代码示例:

https://azure.microsoft.com/en-us/documentation/articles/resource-manager-keyvault-parameter/#reference-a-secret-with-static-id

向您显示参数文件,而不是模板文件的参数对象(有点混乱)。

对于一个非常简单的示例,请参阅此处的 KeyVaultUse.json 和 KeyVaultUse.parameters.json:

https://github.com/rjmax/ArmExamples/tree/master/keyvaultexamples

请注意,KeyVaultUse.json 没有任何独特或不同之处,“密钥”在参数文件中。

这种帮助?

于 2016-11-15T00:25:35.910 回答
1

您可以创建链接模板并将 keyvault 机密作为参数传递给该模板。您的链接模板需要在某些 uri 中可供 Azure 访问。

        "name": "linked-template",
        "type": "Microsoft.Resources/deployments",
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri":"<your linked template uri, e.g. a blob-store file with a sas token>"
            },
            "parameters": {

                "password": {
                    "reference": {
                        "keyVault": {
                            "id": "[variables('keyVaultId')]"
                        },
                    "secretName": "password"
                    }
                },

您将需要密钥保管库的 id,例如在这里,假设它位于由顶级模板上的参数构造的变量中,用户在其中为密钥保管库指定资源组和名称:

    "deploymentKeyVaultId" : "[resourceid(subscription().subscriptionId,
      parameters('keyVaultResourceGroup'), 'Microsoft.KeyVault/vaults',
      parameters('keyVaultName'))]",
于 2019-03-19T19:10:28.027 回答
0

你想部署什么?如果它是一项应用服务,则可以结合利用托管服务标识和 Key Vault 上的访问策略从 Key Vault 检索机密。以下是 为应用服务打开 MSI 身份验证并添加访问策略的方法

在 App Service 中可以添加如下内容:

   {
          "apiVersion": "2018-11-01",
          "name": "appsettings",
          "type": "config",
          "dependsOn": [
            "[resourceId('Microsoft.Web/Sites', WEBSITE NAME))]",
            "Microsoft.ApplicationInsights.AzureWebSites",
            "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]",
            "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('secretName'))]"

          ],
          "properties": {
            "ConnectionSecret": "[concat('@Microsoft.KeyVault(SecretUri=', reference(SECRET NAME).secretUriWithVersion, ')')]"


          }
于 2019-12-17T19:03:38.113 回答