你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Managed Instance for Apache Cassandra 中的客户管理的密钥

在 Azure Managed Instance for 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 Managed Instance for Apache Cassandra 群集时出现故障。 有关详细信息,请参阅使用 Azure CLI 创建 Azure Managed Instance for Apache Cassandra 群集

本文需要 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. 对于“密钥权限”,选择“获取”、“包装”和“解包”。 选中“选择主体”框以打开“主体”窗格。 输入之前检索到的群集的 principalId 值,然后选择“选择”按钮。 (在门户中,还可以按群集名称查找群集的主体 ID。)

    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. 创建数据中心,方法是针对托管磁盘 (managed-disk-customer-key-uri) 和备份存储 (backup-storage-customer-key-uri) 加密将 <key identifier> 替换为同一密钥(在上一步中复制的 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