Управляемые клиентом ключи в Azure Управляемый экземпляр для Apache Cassandra

В Azure Управляемый экземпляр для Apache Cassandra можно использовать собственный ключ для шифрования данных на диске. В этой статье описывается, как реализовать ключи, управляемые клиентом, с помощью Azure Key Vault.

Необходимые компоненты

  • Настройте секрет с помощью Azure Key Vault. Дополнительные сведения см. в разделе "Сведения о секретах Azure Key Vault".

  • Разверните виртуальную сеть в группе ресурсов.

  • Примените роль участника сети к субъекту-службе Azure Cosmos DB в качестве члена. Используйте следующую команду:

        az role assignment create \
        --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
        --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
        --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>
    

    Применение соответствующей роли к виртуальной сети помогает избежать сбоев при развертывании Управляемый экземпляр Azure для кластера Apache Cassandra. Дополнительные сведения см. в статье "Создание azure Управляемый экземпляр для кластера Apache Cassandra с помощью Azure CLI".

Для этой статьи требуется Azure CLI версии 2.30.0 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

Создание кластера с удостоверением, назначаемого системой

  1. Создайте кластер с помощью следующей команды. Замените <subscriptionID>, <resourceGroupName>, <vnetName> и <subnetName> соответствующими значениями.

    subnet="/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>"
    cluster="thvankra-cmk-test-wcus"
    group="thvankra-nova-cmk-test"
    region="westcentralus"
    password="PlaceholderPassword"
    
    az managed-cassandra cluster create \
        --identity-type SystemAssigned \
        --resource-group $group \
        --location $region \
        --cluster-name $cluster \
        --delegated-management-subnet-id $subnet \
        --initial-cassandra-admin-password $password
    
  2. Получите сведения об удостоверениях созданного кластера:

    az managed-cassandra cluster show -c $cluster -g $group
    

    Выходные данные включают раздел удостоверений, как показано в следующем примере. principalId Скопируйте значение для последующего использования.

      "identity": {
        "principalId": "1aa51c7f-196a-4013-a656-1ccabfdc54e0",
        "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
        "type": "SystemAssigned"
      }
    
  3. В портал Azure перейдите в хранилище ключей и выберите политики доступа. Затем выберите "Добавить политику доступа", чтобы создать политику доступа для ключей.

    Screenshot that shows the pane for access policies in the Azure portal.

  4. Для разрешений ключей выберите get, wrap и unwrap. Выберите поле "Выбор субъекта", чтобы открыть область "Субъект". Введите значение кластера principalId , полученное ранее, и нажмите кнопку "Выбрать ". (На портале можно также найти идентификатор субъекта кластера по имени кластера.)

    Screenshot that shows an example of adding a principal for an access policy.

    Предупреждение

    Убедитесь, что в хранилище ключей включена защита от очистки. Развертывания центра обработки данных завершаются сбоем без него.

  5. Нажмите кнопку "Добавить", чтобы добавить политику доступа, а затем нажмите кнопку "Сохранить".

    Screenshot that shows the button for saving an access policy.

  6. Чтобы получить идентификатор ключа, выберите "Ключи" и выберите ключ.

    Screenshot that shows the pane for selecting a key.

  7. Выберите текущую версию.

    Screenshot that shows the box for selecting the current version of a key.

  8. Сохраните идентификатор ключа для последующего использования.

    Screenshot that shows copying a key identifier to the clipboard.

  9. Создайте центр обработки данных, заменив <key identifier> один и тот же ключ (URI, скопированный на предыдущем шаге) для шифрования управляемого диска (managed-disk-customer-key-uri) и хранилища резервных копий.backup-storage-customer-key-uri Используйте то же значение, subnet которое использовалось ранее.

    managedDiskKeyUri = "<key identifier>"
    backupStorageKeyUri = "<key identifier>"
    group="thvankra-nova-cmk-test"
    region="westcentralus"
    cluster="thvankra-cmk-test-2"
    dc="dc1"
    nodecount=3
    subnet="/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>"
    
    az managed-cassandra datacenter create \
        --resource-group $group \
        --cluster-name $cluster \
        --data-center-name $dc \
        --managed-disk-customer-key-uri $managedDiskKeyUri \
        --backup-storage-customer-key-uri $backupStorageKeyUri \
        --node-count $nodecount \
        --delegated-subnet-id $subnet \
        --data-center-location $region \
        --sku Standard_DS14_v2
    

Вы также можете назначить удостоверение существующему кластеру без сведений об удостоверениях:

az managed-cassandra cluster update --identity-type SystemAssigned -g $group -c $cluster

Смена ключа

Чтобы обновить ключ, используйте следующую команду:

managedDiskKeyUri = "<key identifier>"
backupStorageKeyUri = "<key identifier>"
    
az managed-cassandra datacenter update \
    --resource-group $group \
    --cluster-name $cluster \ 
    --data-center-name $dc \
    --managed-disk-customer-key-uri $managedDiskKeyUri \
    --backup-storage-customer-key-uri $backupStorageKeyUri