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

在运营商关系中为托管凭据轮换设置 Key Vault

Azure 运营商关系利用机密和证书来管理组件的跨平台安全性。 运营商关系平台处理这些机密和证书的轮换。 默认情况下,运营商关系将凭据存储在托管的 Key Vault 中。 若要将轮换后的凭据保存在自己的密钥保管库中,用户必须配置自己的密钥保管库来接收轮换后的凭据。 此配置要求用户为 Azure 运营商关系实例设置密钥保管库。 创建后,用户需要在客户 Key Vault 上添加角色分配,以允许运营商关系平台编写更新的凭据,并额外将客户 Key Vault 链接到关系群集资源。

先决条件

注意

单个 Key Vault 可用于任意数量的群集。

使用群集管理器的托管标识配置密钥保管库

从 2024-06-01-public-preview API 版本开始,群集管理器中的托管标识用于写入访问,以将轮换的凭据传送到密钥保管库。 群集管理器标识可以是系统分配的,也可以是用户分配的,还可以通过 API 或 CLI 直接管理。

以下示例介绍如何为群集管理器配置托管标识。

  • 创建或更新具有系统分配的标识的群集管理器
        az networkcloud clustermanager create --name "clusterManagerName" --location "location" \
        --analytics-workspace-id "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
        --fabric-controller-id "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/fabricControllerName" \
        --managed-resource-group-configuration name="my-managed-rg" --tags key1="myvalue1" key2="myvalue2" --resource-group "resourceGroupName" --mi-system-assigned

  • 创建或更新具有用户分配的标识的群集管理器
        az networkcloud clustermanager create --name <Cluster Manager Name> --location <Location> \
        --analytics-workspace-id "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
        --fabric-controller-id "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/fabricControllerName" \
        --managed-resource-group-configuration name="my-managed-rg" --tags key1="myvalue1" key2="myvalue2" \
        --resource-group <Resource Group Name> --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAI"

  • 将系统分配的标识添加到群集管理器
        az networkcloud clustermanager update --name <Cluster Manager Name> --resource-group <Resource Group Name> --mi-system-assigned

  • 将用户分配的标识添加到群集管理器
        az networkcloud clustermanager update --name <Cluster Manager Name> --resource-group <Resource Group Name> \
        --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAI"

配置 Nexus 群集机密存档

将客户密钥保管库注册为 Nexus 群集的机密存档。 必须在群集中配置 Key Vault 资源 ID,并启用该 ID 以存储群集的机密。

示例:

# Set and enable Customer Key Vault on Nexus cluster
az networkcloud cluster update --ids /subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Nexus Cluster Name> --secret-archive "{key-vault-id:<Key Vault Resource ID>,use-key-vault:true}"

# Show Customer Key Vault setting (secretArchive) on the Nexus cluster
az networkcloud cluster show --ids /subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Nexus Cluster Name> --query secretArchive

有关更多帮助:

az networkcloud cluster update --secret-archive ?? --help

获取群集管理器托管标识的主体 ID

配置托管标识后,使用 CLI 查看群集管理器中的标识和关联的主体 ID 数据。

示例:

az networkcloud clustermanager show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Manager Resource Group Name>/providers/Microsoft.NetworkCloud/clusterManagers/<Cluster Manager Name>

系统分配的标识示例:

    "identity": {
        "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
        "type": "SystemAssigned"
    },

用户分配的标识示例:

    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>": {
                "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
                "principalId": "bbbbbbbb-cccc-dddd-2222-333333333333"
            }
        }
    },

请参阅授予托管标识对密钥保管库的访问权限以进行凭据轮换,为托管标识主体 ID 分配适当的角色

使用群集的托管标识配置密钥保管库

重要

请注意,用于配置密钥保管库进行凭据轮换的方法目前以预览版提供。 此方法只可用于未启用防火墙的密钥保管库。 如果你的环境要求启用密钥保管库防火墙,请使用现有的群集管理器标识方法

从 2024-10-01-preview API 开始,可以使用 Nexus 群集资源中的托管标识而不是群集管理器。 群集托管标识可以是系统分配的,也可以是用户分配的,还可以通过 API 或 CLI 直接管理。

注意

如果为密钥保管库配置了 Nexus 群集托管标识,则这些设置将取代使用群集管理器的托管标识配置密钥保管库中配置的设置

配置 Nexus 群集机密存档设置

Nexus 群集机密存档设置指定存储轮换凭据的 Azure 密钥保管库 URI,以及用于访问它的托管标识

这些示例描述了如何为 Nexus 群集配置托管标识,并将其配置为机密存档设置的一部分

注意

机密档案设置指定 Key Vault URI 而不是 Key Vault 资源 ID,必须为 Nexus 群集配置指定的托管标识。

  • 使用系统分配的标识创建 Nexus 群集,以访问存储轮换的凭据的密钥保管库。
az networkcloud cluster create --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  ...
  --mi-system-assigned \
  --secret-archive-settings identity-type="SystemAssignedIdentity" vault-uri="https://<key vault name>.vault.azure.net/"
  ...
  --subscription "<subscription>"

  • 使用用户分配的标识创建 Nexus 群集,以访问存储轮换的凭据的密钥保管库。
az networkcloud cluster create --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  ...
  --mi-user-assigned "<user-assigned-identity-resource-id>" \
  --secret-archive-settings identity-type="UserAssignedIdentity" identity-resource-id="<user-assigned-identity-resource-id>" vault-uri="https://<key vault name>.vault.azure.net/"
  ...
  --subscription "<subscription>"

  • 使用系统分配的标识更新现有的 Nexus 群集,以访问存储轮换的凭据的密钥保管库。
az networkcloud cluster update --ids <cluster-resource-id> \
  --mi-system-assigned \
  --secret-archive-settings identity-type="SystemAssignedIdentity" vault-uri="https://<key vault name>.vault.azure.net/"

  • 使用用户分配的标识更新现有的 Nexus 群集
az networkcloud cluster update --ids <cluster-resource-id> \
  --mi-user-assigned "<user-assigned-identity-resource-id>" \
  --secret-archive-settings identity-type="UserAssignedIdentity" identity-resource-id="<user-assigned-identity-resource-id>" vault-uri="https://<key vault name>.vault.azure.net/"

有关更多帮助:

az networkcloud cluster update --secret-archive-settings '??' --help

获取群集托管标识的主体 ID

为 Nexus 群集配置托管标识后,使用 CLI 查看标识并获取机密存档设置中指定的托管标识的 principalId

示例:

az networkcloud cluster show --ids <cluster-resource-id>

系统分配的标识示例:

    "identity": {
        "principalId": "2cb564c1-b4e5-4c71-bbc1-6ae259aa5f87",
        "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
        "type": "SystemAssigned"
    },

用户分配的标识示例:

    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>": {
                "clientId": "e67dd610-99cf-4853-9fa0-d236b214e984",
                "principalId": "8e6d23d6-bb6b-4cf3-a00f-4cd640ab1a24"
            }
        }
    },

请参阅授予托管标识对密钥保管库的访问权限以进行凭据轮换,为托管标识主体 ID 分配适当的角色

授予托管标识对密钥保管库的访问权限以实现凭据轮换

注意

可以在创建 Nexus 群集之前和部署之前创建用户分配的托管标识,并分配对密钥保管库的访问权限。 在创建群集之后、部署之前,必须授予系统分配的标识对密钥保管库的访问权限。

  • 分配运营商关系 Key Vault 编写器服务角色。 确保在“访问配置”视图上选择“Azure 基于角色的访问控制”作为 Key Vault 的权限模型。 然后在“访问控制”视图中,选择以添加角色分配
角色名称 角色定义 ID
运营商关系 Key Vault 编写器服务角色(预览版) 44f0a1a8-6fea-4b35-980a-8ff50c487c97

示例:
az role assignment create --assignee <Managed Identity Principal Id> --role 44f0a1a8-6fea-4b35-980a-8ff50c487c97 --scope /subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.KeyVault/vaults/<Key Vault Name>

如果使用用户分配的托管标识,请继续向用户分配的标识添加权限

向用户分配的标识添加权限

使用用户分配的托管标识访问密钥保管库时,客户需要为 Nexus 平台配置对该标识的访问权限。 具体而言,需要将 Microsoft.ManagedIdentity/userAssignedIdentities/assign/action 权限添加到 AFOI-NC-MGMT-PME-PROD Microsoft Entra ID 的用户分配的标识。 这是该平台的一个已知限制,将在未来解决。

  1. 打开 Azure 门户并找到相关的用户分配标识。
  2. 在“访问控制(IAM)”下,单击“添加角色分配”
  3. 选择“角色”:托管标识操作员。 (查看托管标识操作员角色提供的权限)。
  4. 将访问权限分配给:用户、组或服务主体
  5. 选择“成员”:AFOI-NC-MGMT-PME-PROD 应用程序
  6. 查看并分配。