微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure ARM 在模板部署期间抛出错误的存储连接字符串请求

如何解决Azure ARM 在模板部署期间抛出错误的存储连接字符串请求

我正在创建一个 Azure 存储帐户、密钥保管库,并将存储帐户访问密钥作为密钥添加到密钥保管库中。我没有发现 ARM 代码有任何问题,但是当我在 Azure 中部署它时,我收到了对连接机密的错误请求。

for (let i = 0; i < listJobC.length; i++) {
  jobc = listJobC[i];
  
  var opt = document.createElement("option");
  opt.value= jobc['jobClassId'];
  opt.innerHTML = jobc['jobClassName'];
  seljob.appendChild(opt);
}

我已经设置了密钥保管库机密的依赖项,以确保它仅在部署存储帐户和密钥保管库后完成。这是来自 Azure 的部署错误。我使用 Azure Cli 的服务主体来部署它,因此 kv_owner_id 从 cli 作为服务主体客户端 ID 传递。

 {
            "condition": "[equals(parameters('storageAccountOption'),'new')]","name": "[variables('storageaccountuniqueName')]","type": "Microsoft.Storage/storageAccounts","apiVersion": "2019-06-01","tags": "[parameters('tagValues')]","location": "[parameters('location')]","kind": "StorageV2","sku": {
                "name": "Standard_lrs","tier": "Standard"
            }            
        },{
            "name": "[variables('kvname')]","type": "Microsoft.keyvault/vaults","apiVersion": "2019-09-01","location": "[resourceGroup().location]","properties": {
                "enabledForDeployment": false,"enabledForTemplateDeployment": true,"enabledFordiskEncryption": false,"tenantId": "[variables('tenantId')]","accesspolicies": [
                    {
                        "tenantId": "[variables('tenantId')]","objectId": "[parameters('kv_owner_id')]","permissions": {
                            "secrets": [
                                "all"
                            ]
                        }  
                    },{
                        "tenantId": "[variables('tenantId')]","objectId": "[reference(resourceId('Microsoft.DataFactory/factories',variables('adfname')),'2018-06-01','full').identity.principalId]","permissions": {
                            "keys": [],"secrets": [
                                "list","get"                                
                            ]
                        }
                    }                    
                ],"sku": {
                    "name": "standard","family": "A"
                }
            }            
        },{
            "name": "[concat(variables('kvname'),'/',variables('kv-stg-secretname'))]","type": "Microsoft.keyvault/vaults/secrets","dependsOn": [
                "[resourceId('Microsoft.Storage/storageAccounts',variables('storageaccountuniqueName'))]","[resourceId('Microsoft.keyvault/vaults',variables('kvname'))]"
            ],"properties": {
                "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageaccountuniqueName'),';AccountKey=',listKeys(variables('storageaccountid'),'2019-06-01').keys[0].value,';EndpointSuffix=core.windows.net')]"
            }
        }

以下是从门户看到的部署操作的概述。除了 conn 字符串秘密外,一切都已成功创建。

deployment operations

解决方法

如何定义 storageaccountid 变量?您可以在 resourceId() 中使用标准的 listKeys 引用:

"properties": {
    "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageaccountuniqueName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts',variables('storageaccountuniqueName')),'2019-06-01').keys[0].value,';EndpointSuffix=core.windows.net')]"
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。