Как создать хранилище ключей Azure и политики доступа к хранилищу с помощью шаблона Azure Resource Manager

Azure Key Vault — это облачная служба, которая предоставляет защищенное хранилище для секретов, например ключей, паролей и сертификатов. В этой статье показано, как развернуть шаблон Azure Resource Manager (шаблон ARM) для создания хранилища ключей.

Шаблон ARM является файлом нотации объектов JavaScript (JSON), определяющими инфраструктуру и конфигурацию вашего проекта. В шаблоне используется декларативный синтаксис. В декларативном синтаксисе вы можете описать предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.

Предварительные требования

Чтобы выполнить действия, описанные в этой статье, сделайте следующее:

Создание хранилища ключей с помощью шаблона Resource Manager

Следующий шаблон демонстрирует базовый способ создания хранилища ключей. Некоторые значения указываются в шаблоне.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "Standard",
      "allowedValues": [
        "Standard",
        "Premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    }
   },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2019-09-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "enabledForDeployment": "false",
        "enabledForDiskEncryption": "false",
        "enabledForTemplateDeployment": "false",
        "tenantId": "[subscription().tenantId]",
        "accessPolicies": [],
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    }
  ]
}

Дополнительные сведения о параметрах шаблонов Key Vault см. в разделе Справочник по шаблонам ARM для Key Vault.

Важно!

При повторном развертывании шаблона все существующие политики доступа в хранилище ключей будут переопределены. Рекомендуется указать для свойства accessPolicies существующие политики доступа, чтобы избежать потери доступа к хранилищу ключей.

Добавление политики доступа в шаблон Resource Manager для Key Vault

Политики доступа можно развернуть в существующем хранилище ключей без повторного развертывания всего шаблона хранилища ключей. Следующий шаблон демонстрирует базовый способ создания политик доступа:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "objectId": {
      "type": "string",
      "metadata": {
        "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets."
      }
    },
    "keysPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge."
      }
    },
    "secretsPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge."
      }
    },
    "certificatePermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to certificates in the vault. Valid values are: all,  create, delete, update, deleteissuers, get, getissuers, import, list, listissuers, managecontacts, manageissuers,  recover, backup, restore, setissuers, and purge."
      }
    }
  },
  "resources": [
     {
      "type": "Microsoft.KeyVault/vaults/accessPolicies",
      "name": "[concat(parameters('keyVaultName'), '/add')]",
      "apiVersion": "2019-09-01",
      "properties": {
        "accessPolicies": [
          {
            "tenantId": "[subscription().tenantId]",
            "objectId": "[parameters('objectId')]",
            "permissions": {
              "keys": "[parameters('keysPermissions')]",
              "secrets": "[parameters('secretsPermissions')]",
              "certificates": "[parameters('certificatePermissions')]"
            }
          }
        ]
      }
    }
  ]
}

Дополнительные сведения о параметрах шаблонов Key Vault см. в разделе Справочник по шаблонам ARM для Key Vault.

Дополнительные шаблоны Resource Manager для Key Vault

Существуют другие шаблоны Resource Manager, доступные для объектов Key Vault:

Секреты Ключи Сертификаты
Н/Д Н/Д

Дополнительные шаблоны для Key Vault можно найти здесь: Справочник по Resource Manager для Key Vault.

Развертывание шаблонов.

Вы можете использовать портал Azure для развертывания описанных выше шаблонов с помощью параметра Создать собственный шаблон в редакторе, как описано здесь: Развертывание ресурсов из пользовательского шаблона.

Вы также можете сохранить приведенные выше шаблоны в файлы и использовать следующие команды: New-AzResourceGroupDeployment и az deployment group create:

New-AzResourceGroupDeployment -ResourceGroupName ExampleGroup -TemplateFile key-vault-template.json
az deployment group create --resource-group ExampleGroup --template-file key-vault-template.json

Очистка ресурсов

Если вы планируете продолжить работу с последующими краткими руководствами и учебниками, эти ресурсы можно не удалять. Когда ресурсы будут не нужны, удалите группу ресурсов. При удалении группы хранилище ключей и связанные с ним ресурсы также будут удалены. Вы можете удалить группу ресурсов с помощью Azure CLI или Azure PowerShell, выполнив следующие действия:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Ресурсы

Дальнейшие действия