У нас есть большой шаблон azure, который создает для нас множество артефактов. Одним из артефактов является Azure Key Vault. Хранилище ключей создается, и там находятся необходимые секреты.
Один из других артефактов, которые он пытается создать, - это Microsoft.Web / сертификаты. Мы пытаемся создать это с помощью приведенного ниже json
{
"name": "create-certificate",
"kind": "template",
"properties": {
"template": {
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string"
},
"location": {
"type": "string"
},
"vaultName": {
"type": "string"
},
"serverFarmId": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.Web/certificates",
"name": "[parameters('name')]",
"apiVersion": "2016-03-01",
"location": "[parameters('location')]",
"properties": {
"keyVaultId": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]",
"keyVaultSecretName": "Origin-Certificate",
"serverFarmId": "[parameters('serverFarmId')]"
}
}
]
},
"resourceGroup": "TD-RG",
"parameters": {
"name": {
"value": "[concat(parameters('environmentSuffix'), '-Orgin')]"
},
"location": {
"value": "[parameters('location')]"
},
"vaultName": {
"value":"[concat(parameters('environmentSuffix'), '-Vault')]"
},
"ServerFarmId": {
"value": "[artifacts('create-service-plan').outputs.ServerFarmId]"
}
},
"dependsOn": ["create-service-plan", "create-key-vault"]
}
}
Так что приятно дождаться, что мы сначала создадим план обслуживания и хранилище ключей, а затем попробовали прочитать сертификат orgin из секретного хранилища ключей. Затем мы получаем ошибку:
Служба не имеет доступа к хранилищу ключей {KEY VAULT PATH}. Убедитесь, что вы предоставили службе необходимые разрешения для выполнения операции запроса.
При поиске в inte rnet мы обнаружили, что можем предоставить дополнительные разрешения хранилищу ключей. С такими вещами, как следующая команда powershell:
Set-AzureRmKeyVaultAccessPolicy -VaultName KEYVAULTNAME -PermissionsToSecrets get `
-ServicePrincipalName abfa0a7c-a6b6-4736-8310-5855508787cd
Источник этого сценария: Проблема со ссылкой KeyVault в шаблоне ARM
Но проблема в том, что разрешения перезаписываются определением артефакта, которое создает хранилище ключей, поэтому его нельзя установить с помощью Power shell. Но я не могу понять это правильно в проекте. Для других пользователей я уже установил разрешения, когда мы создаем хранилище ключей, и это работает. Но добавить это, как показано ниже, не работает.
{
"objectId": "abfa0a7c-a6b6-4736-8310-5855508787cd",
"tenantId": "[parameters('tenantId')]",
"permissions": {
"secrets": [
"get"
]
}
}
Так что теперь остается загадкой, как создать хранилище ключей и использовать секрет в следующем артефакте.