2017-06-14 82 views
1

在ARM模板中,我想在预先存在的KeyVault中编写一个秘密 - 我还没有将其创建为当前模板的一部分。在现有keyvault中创建KeyVault秘密

我使用此代码

{ 
     "dependsOn": [ 
      "/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.KeyVault/vaults/keyvaulttest" 
     ], 
     "type": "Microsoft.KeyVault/vaults/secrets", 
     "name": "keyvaulttest/test", 
     "apiVersion": "2015-06-01", 
     "tags": { 
      "displayName": "secret" 
     }, 
     "properties": { 
      "value": "value1" 
     } 
    } 

部署过程我得到以下异常(在dependsOn项目)

部署模板验证失败:“资源 ” Microsoft.KeyVault/vaults/keyvaulttest'未在 模板中定义。请参阅https://aka.ms/arm-template了解使用细节。'。 (代码:InvalidTemplate)

我也试着用这种替换dependsOn值(获取资源ID动态),但我得到了同样的异常

[resourceId('<resourceGroup>','Microsoft.KeyVault/vaults','keyvaulttest')] 

任何其他方式我可以用来从ARM模板中保存密钥中的密钥?

回答

1

您需要将资源Microsoft.KeyVault/vaults添加到您的模板。当您创建密钥保管库时,它将使用您的密钥保管库不创建新的密钥保管库。以下模板适用于我。

"resources": [ 
    { 
     "type": "Microsoft.KeyVault/vaults", 
     "name": "shui", 
     "apiVersion": "2015-06-01", 
     "location": "[resourceGroup().location]", 
     "properties": { 
     "sku": { 
     "family": "A", 
     "name": "Standard" 
     }, 
     "tenantId": "[subscription().tenantId]", 
     "accessPolicies": [ 
     { 
     "tenantId": "[subscription().tenantId]", 
     "objectId": "<your Azure account objectID>", 
     "permissions": { 
      "keys": [ "All" ], 
      "secrets": [ "All" ] 
     } 
     } 
    ] 
    } 
}, 
     { 
     "type": "Microsoft.KeyVault/vaults/secrets", 
     "name": "shui/SomeSecret", 
     "apiVersion": "2015-06-01", 
     "properties": { 
     "contentType": "text/plain", 
     "value": "ThisIpsemIsSecret" 
    }, 
     "dependsOn": [ 
      "[resourceId('Microsoft.KeyVault/vaults', 'shui')]" 
      ] 
     } 

    ] 

此博客(Add secrets to your Azure Key Vault using ARM templates) 会有所帮助。

您可以在Azure Portal上找到您的密钥库json文件。 enter image description here

将资源"type": "Microsoft.KeyVault/vaults/secrets",添加到json文件中。以下是我用来添加秘密的cmdlet,它适用于我。

PS C:\Users\v-shshui> New-AzureRmResourceGroupDeployment -Name shuitest -ResourceGroupName shui -TemplateFile "D:\vault.json" 

cmdlet New-AzureRmResourceGroupDeployment at command pipeline position 1 
Supply values for the following parameters: 
(Type !? for Help.) 
keyVaultName: shui 


DeploymentName   : shuitest 
ResourceGroupName  : shui 
ProvisioningState  : Succeeded 
Timestamp    : 6/16/2017 3:15:27 AM 
Mode     : Incremental 
TemplateLink   : 
Parameters    : 
          Name    Type      Value 
          =============== ========================= ========== 
          keyVaultName  String      shui 

Outputs     : 
DeploymentDebugLogLevel : 
+0

你可以找到在Azure门户'objectID','你的资源group' - ><自动化脚本> –

+1

获取用于现有keyvault' { “错误” 运行时,此错误:{ “代码” :“VaultAlreadyExists”, “message”:“名称'Mykeyvault'已被使用。” } }' – AlexDrenea

+0

不要修改保险库值,您可以在Portal上找到值。 –

相关问题