首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Azure ARM模板中使用来自Azure KeyVault的密钥

在Azure ARM模板中使用来自Azure KeyVault的密钥
EN

Stack Overflow用户
提问于 2019-02-08 21:34:53
回答 2查看 723关注 0票数 2

我在azurecr.io中有一个容器实例的模板,可以在ARM模板中使用Azure Key Vault密钥吗?以下示例不起作用:

代码语言:javascript
复制
            "imageRegistryCredentials": [
                {
                    "server": "***.azurecr.io",
                    "username": "***",
                    "password": {   
                        "reference": {                      
                            "keyVault": {
                                "id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
                            },
                            "secretName": "[parameters('secretName')]"  
                        }                       
                    }
                }
            ],

我已经尝试过了:

代码语言:javascript
复制
"resources": [        
        {
            ...
            "properties": {
                "parameters":{
                    "secretPassword": { 
                        "type": "securestring",
                        "reference": {                      
                            "keyVault": {
                                "id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
                            },
                            "secretName": "[parameters('secretName')]"  
                        }                       
                    }                   
                },

和:

代码语言:javascript
复制
        "imageRegistryCredentials": [
            {
                "server": "**.azurecr.io",
                "username": "**",
                "password": "[parameters('secretPassword')]"
            }
        ],

结果:

代码语言:javascript
复制
  "error": {
    "code": "InvalidTemplate",
    "message": "Unable to process template language expressions for resource '/subscriptions/**/resourceGroups/**/providers/Microsoft.ContainerInstance/containerGroups/**' at line '28' and co
lumn '9'. 'The template parameter 'secretPassword' is not found. Please see https://aka.ms/arm-template/#parameters for
 usage details.'"
  }
}'
EN

回答 2

Stack Overflow用户

发布于 2019-05-29 19:10:33

因此,我已经创建了一个变通方法,它使您能够通过使用github上的公开模板来相对简单地在模板中使用任何密钥库秘密。有关示例,请参阅https://github.com/bobvandevijver/azure-arm-keyvault-secret-output

如果微软只是修复这个实现,显然会更好,但它是什么东西!

票数 1
EN

Stack Overflow用户

发布于 2019-02-08 21:38:29

只能在模板(或嵌套模板)的参数中使用密钥库引用。

因此,您需要将此部分移动到参数部分,或者将其移动到嵌套模板,并将其用作嵌套模板的参数。下面是将值从kv传递到嵌套模板的示例:

代码语言:javascript
复制
{
    "apiVersion": "2017-05-10",
    "name": "[concat('kvReference-', copyIndex())]",
    "type": "Microsoft.Resources/deployments",
    "copy": {
        "name": "kvReference",
        "count": 2
    },
    "properties": {
        "mode": "Incremental",
        "templateLink": {
            "uri": "nested_template_uri"
        },
        "parameters": {
            "cer": {
                "reference": {
                    "keyVault": {
                        "id": "keyvaultId"
                    },
                    "secretName": "secretname"
                }
            }
        }
    }
},

您可以将这些输入用作嵌套模板中的参数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54593568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档