Не удается применить шифрование CMK к учетной записи хранилища Azure с помощью шаблона ARM

#encryption #azure-storage #arm-template #azure-files #azure-storage-account

#шифрование #azure-хранилище #arm-template #azure-файлы #azure-storage-account

Вопрос:

Я пытаюсь подключить шифрование CMK к учетной записи хранилища Azure через шаблон ARM, но я получаю сообщение об ошибке, как показано ниже. Нужна быстрая помощь с этим. Возможность применить его через портал после создания учетной записи хранения, но не возможность сделать это через шаблон ARM при создании учетной записи хранения.

Ошибка- [ошибка]FeatureNotSupportedForAccount: отсутствуют предварительные требования для включения ключа шифрования, управляемого трестом / клиентом, для этой учетной записи хранения.

ARM:-

 "resources": [
{​​​​​​​
  "type": "Microsoft.Storage/storageAccounts",
  "apiVersion": "2019-04-01",
  "name": "[variables('storageaccountname')]",
  "location": "[resourceGroup().location]",
  "sku": {​​​​​​​
    "name": "[parameters('storageaccountype')]"
  }​​​​​​​,
  "kind": "[parameters('storagekind')]",
  "properties": {​​​​​​​
    "supportsHttpsTrafficOnly": true,
    "accesstier": "[parameters('accesstier')]",
    "largeFileSharesState": "[parameters('largefilesharesstate')]",
    "allowBlobPublicAccess": false,
    "encryption": {​​​​​​​
      "services": {​​​​​​​
        "file": {​​​​​​​
          "enabled": true
        }​​​​​​​,
        "blob": {​​​​​​​
          "enabled": true
        }​​​​​​​
      }​​​​​​​,
      "keySource": "Microsoft.Keyvault",
      "keyvaultproperties": {​​​​​​​
        "keyvaulturi": "[parameters('kvuri')]",
        "keyname": "[parameters('keyname')]",
        "keyversion": "[parameters('keyversion')]"
      }​​​​​​​
    }​​​​​​​
  }​​​​​​​,
  "tags": {​​​​​​​
    "abcid": "[parameters('abcid')]"
  }​​​​​​​
}​​​​​​​
 

Комментарии:

1. пожалуйста, попробуйте использовать Microsoft.Storage/storageAccounts/encryptionScopes .

2. Спасибо, но, пожалуйста, объясните немного подробнее 🙂

3. Привет. Я допустил ошибку. Согласно ошибке, кажется, что вы не зарегистрировали эту функцию. Не могли бы вы, пожалуйста, проверить это? Для получения более подробной информации, пожалуйста, обратитесь к docs.microsoft.com/en-us/azure/storage/common /…

4. да, я взглянул на эту ссылку. Но обязательно ли регистрироваться перед автоматизацией, как если бы это делалось вручную в SA, это не требуется. Так ли это? Более того, ссылка объясняет о таблице и очереди. Как насчет Blob amp; File? Требуется ли регистрация?

5. Нет. Если вы хотите использовать эту функцию, мы должны это сделать. Azure blob и File не должны этого делать. Для получения более подробной информации, пожалуйста, обратитесь к docs.microsoft.com/en-us/azure/storage/common /…

Ответ №1:

Согласно документу, если вы хотите настроить шифрование с помощью ключей, управляемых клиентом, хранящихся в Azure key valt, нам необходимо выполнить следующие шаги

  1. Создайте учетную запись хранилища и включите идентификацию
  2. Обновите хранилище ключей Azure. Включите защиту от мягкого удаления и очистки.
  3. Настройка политики доступа для удостоверения учетной записи хранилища
  4. Настройте ключи, управляемые клиентом, для учетной записи хранения.

Относительно того, как настроить их с помощью шаблона arm, пожалуйста, обратитесь к следующему шаблону

 {
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "keyName": {
            "type": "string",
            "defaultValue": ""
        },
        "keyVersion": {
            "type": "string",
            "defaultValue": ""
        },
        "vaultName": {
            "defaultValue": "",
            "type": "String"
        },
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]"
        },
        "accountNmae": {
            "type": "string",
            "defaultValue": "tetsdfgfgdffd"
        },
    },
    "variables": {},
    "resources": [{
            "type": "Microsoft.Storage/storageAccounts",
            "sku": {
                "name": "Standard_LRS",
                "tier": "Standard"
            },
            "kind": "Storage",
            "name": "[ parameters('accountNmae')]",
            "apiVersion": "2019-06-01",
            "location": "[ parameters('location')]",
            "identity": {
                "type": "SystemAssigned"
            },
            "properties": {
                "supportsHttpsTrafficOnly": true
            },
            "dependsOn": []
        }, {
            "type": "Microsoft.KeyVault/vaults",
            "apiVersion": "2016-10-01",
            "name": "[parameters('vaultName')]",
            "location": "eastasia",
            "dependsOn": [
                "[resourceId('Microsoft.Storage/storageAccounts', parameters('accountNmae'))]"
            ],
            "properties": {
                "sku": {
                    "family": "A",
                    "name": "Standard"
                },
                "tenantId": "[subscription().tenantid]",
                "accessPolicies": [],
                "enabledForDeployment": true,
                "enabledForDiskEncryption": true,
                "enabledForTemplateDeployment": true,
                "enableSoftDelete": true
            }
        }, {

            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-07-01",
            "name": "updateStorageAccount",
            "dependsOn": [
                "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
            ],
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
                    "contentVersion": "0.1.0.0",
                    "resources": [{
                            "type": "Microsoft.KeyVault/vaults/accessPolicies",
                            "name": "[concat(parameters('vaultName'), '/add')]",
                            "apiVersion": "2019-09-01",
                            "properties": {
                                "accessPolicies": [{
                                        "tenantId": "[subscription().tenantid]",
                                        "objectId": "[reference(resourceId('Microsoft.Storage/storageAccounts',  parameters('accountNmae')),'2019-06-01', 'full').identity.principalId]",
                                        "permissions": {
                                            "keys": [
                                                "wrapkey",
                                                "unwrapkey",
                                                "get"
                                            ],
                                            "secrets": [],
                                            "certificates": []
                                        }
                                    }
                                ]
                            }
                        }, {
                            "type": "Microsoft.Storage/storageAccounts",
                            "sku": {
                                "name": "Standard_LRS",
                                "tier": "Standard"
                            },
                            "kind": "Storage",
                            "name": "[parameters('accountNmae')]",
                            "apiVersion": "2019-06-01",
                            "location": "[parameters('location')]",
                            "identity": {
                                "type": "SystemAssigned"
                            },
                            "properties": {
                                "encryption": {
                                    "services": {
                                        "file": {
                                            "enabled": true
                                        },
                                        "blob": {
                                            "enabled": true
                                        }
                                    },
                                    "keySource": "Microsoft.Keyvault",
                                    "keyvaultproperties": {
                                        "keyvaulturi": "[reference(resourceId('Microsoft.KeyVault/vaults',parameters('vaultName')),'2016-10-01', 'full').properties.vaultUri]",
                                        "keyname": "[parameters('keyName')]",
                                        "keyversion": "[parameters('keyversion')]"
                                    }
                                }
                            },
                            "dependsOn": [
                                "[resourceId('Microsoft.KeyVault/vaults/accessPolicies', parameters('vaultName'), 'add')]"
                            ]
                        }
                    ]
                }
            }
        }
    ]
}
 

введите описание изображения здесь

Для получения более подробной информации, пожалуйста, обратитесь к блогу

Комментарии:

1. да, это правда .. почти сделал то же самое через PS. У меня были КВ, Ключи заранее.

2. @Чайтанья, У тебя есть еще какие-нибудь проблемы? Если у вас есть «нет», не могли бы вы, пожалуйста, принять это как ответ?

3. но почему я получал это исходное сообщение об ошибке, мне до сих пор неизвестно… в блоге, на который я ссылался вчера, он просит запустить ARM дважды, в то время как мне нужно иметь все только при первом запуске..

4. @Chaitanya Что касается ошибки, в шаблоне arm мы не можем включить идентификацию в хранилище и настроить политику доступа для идентификации. Нам нужно включить идентификацию, настроить политику доступа, тогда мы сможем включить cmk в шаблоне.

5. @JimXu является ли версия ключа обязательным параметром в свойствах keyvault шаблона ARM, могу ли я жестко закодировать его для последней версии ключа в шаблоне. Я попытался удалить версию и запустить ее, выдает ошибку.