Azure 运营商关系群集支持托管标识和用户提供的资源

为了提高运营商关系平台的安全性,运营商关系群集现在支持托管标识。 托管标识为应用程序提供访问其他 Azure 资源的安全方式,并且无需用户管理凭据。 此外,运营商关系现在具有用户提供的资源模型。 除了提高安全性之外,此转变还提供跨平台的一致用户体验。

托管标识用于运营商关系群集上提供的以下用户资源:

  • 用于裸机 run-* 命令输出的存储帐户。
  • 用于凭据轮换的密钥保管库。
  • Log Analytics 工作区(LAW)用于捕获某些指标。

若要了解 Azure 中托管标识的详细信息,请参阅 Azure 资源托管标识。 运营商关系群集支持多个用户分配的托管标识 (UAMI) 或一个系统分配的托管标识 (SAMI)。 还支持一个或多个 UAMI 与 SAMI 的组合。

虽然用户可以选择使用任一托管标识类型,但建议使用 UAMIS。 UAMIS 允许用户在创建或更新运营商关系群集之前预配置对 UAMI 的适当访问权限。 同一个 UAMI 可用于所有资源,或者如果用户想要精细访问,则可以为每个资源定义 UAMI。

有关使用 API 更新群集托管标识的信息,请参阅更新群集标识

先决条件

  • 安装 Azure CLI
  • 安装最新版本的相应 Azure CLI 扩展
  • 存储帐户托管标识支持需要使用 2024-07-01 版本或更高版本的 NetworkCloud API。
  • Key Vault 和 Log Analytics 工作区的托管标识支持需要使用2025-02-01 NetworkCloud API 或更高版本。

具有用户分配的托管标识的运营商关系群集 (UAMI)

最佳做法是首先定义所有用户提供的资源(存储帐户、LAW 和 Key Vault)、与这些资源关联的托管标识,然后为托管标识分配对资源的适当访问权限。 如果在创建群集之前未完成这些步骤,则需要在群集部署之前完成这些步骤。

不为新群集配置这些资源的影响如下:

  • 存储帐户:群集创建失败,因为有一个检查来确保群集输入上存在 commandOutputSettings
  • LAW: 群集部署失败,因为需要 Log Analytics 工作区(LAW)才能在部署期间安装软件扩展。
  • Key Vault:凭据轮换失败,因为存在检查,以确保在执行凭据轮换之前对用户提供的 Key Vault 的写入访问权限。

可以随时更新群集。 更改 LAW 设置会导致将指标发送到 LAW 的短暂中断,因为需要重新安装使用 LAW 的扩展。

应遵循以下步骤,将 UAMI 与运营商关系和关联的资源一起使用。

  1. 创建一个或多个 UAMI
  2. 创建资源并将 UAMI 分配给资源
  3. 创建或更新群集以使用用户分配的托管标识和用户提供的资源
  4. 部署群集(如果为新建群集)

创建一个或多个 UAMI

  1. 为有问题的资源创建一个或多个 UAMI。 有关创建托管标识的详细信息,请参阅管理用户分配的托管标识

创建资源并将 UAMI 分配给资源

UAMI 存储帐户设置

  1. 创建存储帐户,或标识要使用的现有存储帐户。 请参阅创建 Azure 存储帐户
  2. 在存储帐户中创建 Blob 存储容器。 请参阅创建容器
  3. Storage Blob Data Contributor 角色分配给需要访问 run-* 命令输出的用户和 UAMI。 请参阅分配 Azure 角色以访问 blob 数据
  4. 若要将存储帐户的访问权限限制为已选择的一组 IP 或虚拟网络,请参阅配置 Azure 存储防火墙和虚拟网络
    1. 需要将执行 run-* 命令的所有用户的 IP 添加到存储帐户的 Virtual Networks 和/或 Firewall 列表中。
    2. 确保已选择 Allow Azure services on the trusted services list to access this storage account. 下的 Exceptions

UAMI Log Analytics 工作区设置

  1. 创建 Log Analytics 工作区 (LAW),或标识要使用的现有 LAW。 请参阅创建 Log Analytics 工作区
  2. Log Analytics Contributor 角色分配给 Log Analytics 工作区的 UAMI。 请参阅管理对 Log Analytics 工作区的访问权限

UAMI Key Vault 设置

  1. 创建 Key Vault,或标识要使用的现有 Key Vault。 请参阅创建 Key Vault
  2. 为基于角色的访问控制 (RBAC) 启用 Key Vault。 请参阅对 Key Vault 启用 Azure RBAC 权限
  3. Operator Nexus Key Vault Writer Service Role (Preview) 角色分配给 Key Vault 的 UAMI。 请参阅分配角色
    1. 运营商关系 Key Vault 编写器服务角色的角色定义 ID 为 44f0a1a8-6fea-4b35-980a-8ff50c487c97。 如果使用 Azure 命令行执行角色分配,则此格式为必需项。
  4. 若要将 Key Vault 的访问权限限制为已选择的一组 IP 或虚拟网络,请参阅配置 Azure Key Vault 防火墙和虚拟网络
    1. 需要访问 Key Vault 的所有用户的 IP 需要添加到 Key Vault 的 Virtual Networks 和/或 Firewall 列表中。
    2. 确保已选择 Allow trusted Microsoft services to bypass this firewall. 下的 Exceptions

创建或更新运营商关系群集以使用用户分配的托管标识和用户提供的资源

在群集上定义 UAMI

使用用户分配的托管标识创建或更新群集时,请将 --mi-user-assigned 参数与 UAMI 的 Azure 资源管理器(ARM)资源标识符一起使用。 如果想要指定多个 UAMIs,请列出 UAMIs 的 Azure 资源管理器 (ARM) 资源标识符,并用它们之间的空格。 此列表中必须提供用于 Key Vault、LAW 或存储帐户的每个 UAMI。

创建集群时,您可以在 --mi-user-assigned 中指定 UAMIs,并定义资源设置。 更新群集以设置或更改 UAMI 还应包括资源设置更改,以将 UAMI 关联到资源。

UAMI 存储帐户设置

数据 --command-output-settings 构造用于定义写入运行命令输出的存储帐户。 它由以下字段组成:

  • container-url:要由指定标识使用的存储帐户容器的 URL。
  • identity-resource-id:要使用的用户分配的托管标识资源 ID。 与系统分配的标识类型互斥。
  • identity-type:所选择的托管标识类型。 使用 UserAssignedIdentity
  • overrides:可选。 覆盖对象数组,可用于覆盖存储帐户容器和标识,以用于特定类型的运行命令。 每个重写对象都包含以下字段:
    • command-output-type:要覆写的 run 命令类型。
    • container-url:要用于指定命令类型的存储帐户容器的 URL。
    • identity-resource-id:用户分配的托管标识资源 ID,用于指定的命令类型。
    • identity-type:正在选择的托管标识的类型。 使用 UserAssignedIdentity

有效 command-output-type 值为:

  • BareMetalMachineRunCommandaz networkcloud baremetalmachine run-command 命令的输出。
  • BareMetalMachineRunDataExtractsaz networkcloud baremetalmachine run-data-extract 命令的输出。
  • BareMetalMachineRunDataExtractsRestrictedaz networkcloud baremetalmachine run-data-extracts-restricted 命令的输出。
  • BareMetalMachineRunReadCommandsaz networkcloud baremetalmachine run-read-command 命令的输出。
  • StorageRunReadCommandsaz networkcloud storageappliance run-read-command 命令的输出。

运行命令输出将写入为特定命令类型定义的 overrides 存储帐户容器,并使用该替代的关联标识。 如果未找到匹配的重写,则使用来自命令输出设置的默认值 container-urlidentity-resource-id

UAMI Log Analytics 工作区设置

--analytics-output-settings 数据构造用于定义发送指标的 LAW。 它由以下字段组成:

  • analytics-workspace-id:要由指定标识使用的分析工作区的资源 ID。
  • identity-resource-id:要使用的用户分配的托管标识资源 ID。 与系统分配的标识类型互斥
  • identity-type:被选择的托管身份类型。 使用 UserAssignedIdentity

UAMI 密钥保管库设置

--secret-archive-settings 数据构造用于定义写入轮换凭据的 Key Vault。 它由以下字段组成:

  • identity-resource-id:要使用的用户分配的托管标识资源 ID。
  • identity-type:正在选择的托管标识的类型。 使用 UserAssignedIdentity
  • vault-uri:用作机密存档的 Key Vault 的 URI。

UAMI 群集创建命令示例

示例 1: 此示例是一个缩写的群集创建命令,该命令跨存储帐户、LAW 和 Key Vault 使用一个 UAMI。

az networkcloud cluster create --name "clusterName" -g "resourceGroupName" \

    ...

    --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAMI" \
    --command-output-settings identity-type="UserAssignedIdentity" \
      identity-resource-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAMI" \
      container-url="https://myaccount.blob.core.windows.net/mycontainer" \
    --analytics-output-settings analytics-workspace-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
      identity-type="UserAssignedIdentity" \
      identity-resource-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAMI" \
    --secret-archive-settings vault-uri="https://mykv.vault.azure.net/" \
      identity-type="UserAssignedIdentity" \
      identity-resource-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAMI"

示例 2: 此示例是一个使用两个 UAMIs 的简化群集创建命令。 存储帐户和 LAW 使用第一个 UAMI,Key Vault 使用第二个 UAMI。

az networkcloud cluster create --name "clusterName" -g "resourceGroupName" \

    ...

    --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myFirstUAMI" "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/mySecondUAMI" \
    --command-output-settings identity-type="UserAssignedIdentity" \
      identity-resource-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myFirstUAMI" \
      container-url="https://myaccount.blob.core.windows.net/mycontainer" \
    --analytics-output-settings analytics-workspace-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
      identity-type="UserAssignedIdentity" \
      identity-resource-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myFirstUAMI" \
    --secret-archive-settings vault-uri="https://mykv.vault.azure.net/" \
      identity-type="UserAssignedIdentity" \
      identity-resource-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/mySecondUAMI"

群集更新示例

更新群集是单步完成的。 更新群集以在 --mi-user-assigned 字段中包含 UAMI,并在存储帐户、LAW 或 Key Vault 中包含相应的 --identity-resource-id 字段。

如果使用多个 UIS,则必须在更新时在 --mi-user-assigned 字段中指定 UAMIS 的完整列表。 如果在群集上使用 SAMI 并且要添加 UAMI,则必须将 --mi-system-assigned 包含在更新命令中。 未能包含现有托管标识会导致系统删除这些标识。

对于 LAW 和 Key Vault,可以通过群集更新从现有数据构造转换到使用托管标识的新构造。

示例 1: 将 UAMI 添加到群集,并将 UAMI (myUAMI) 分配给机密存档设置(Key Vault)。 如果此群集定义了 SAMI,则系统会删除 SAMI。

az networkcloud cluster update --name "clusterName" --resource-group "resourceGroupName" \
   --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAMI" \
   --secret-archive-settings identity-type="UserAssignedIdentity" \
     identity-resource-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAMI" \
     vault-uri="https://keyvaultname.vault.azure.net/"

示例 2: 将 UAMI mySecondUAMI 添加到已包含 myFirstUAMI 的群集(myFirstUAMI 已保留)的群集中,并更新群集以将 分配给命令输出设置(存储帐户)。

az networkcloud cluster update --name "clusterName" --resource-group "resourceGroupName" \
   --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myFirstUAMI" "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/mySecondUAMI" \
  --command-output-settings identity-type="UserAssignedIdentity" \
    identity-resource-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/mySecondUAMI" \
    container-url="https://myaccount.blob.core.windows.net/mycontainer"

示例 3: 更新已具有 SAMI 的群集,并添加 UAMI 并将 UAMI 分配到 Log Analytics 输出设置(LAW)。 SAMI 将保留。

注意

更改 LAW 设置会导致将指标发送到 LAW 的短暂中断,因为可能需要重新安装使用 LAW 的扩展。

az networkcloud cluster update --name "clusterName" --resource-group "resourceGroupName" \
   --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAMI" \
   --mi-system-assigned \
   --analytics-output-settings analytics-workspace-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
     identity-type="UserAssignedIdentity" \
     identity-resource-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAMI"

查看用户分配的托管标识的主体 ID

可以通过在标识资源上选择“JSON 视图”来找到标识资源 ID;ID 位于显示的面板顶部。 可以在容器资源的“设置 - > 属性”选项卡上找到容器 URL。

Azure CLI 是用于查看群集内标识和相关主体 ID 数据的又一个选项。

Example:

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

输出:

    "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"
            }
        }
    },

具有系统分配的托管标识的运营商关系群集

使用系统分配的托管标识 (SAMI) 遵循与 UAMI 略微不同的模式。 虽然用户提供的资源(存储帐户、LAW 和 Key Vault)应包含在群集创建命令或模板中,但在创建群集之前,SAMI 不存在。 创建群集后,用户需要查询群集以获取 SAMI,在部署群集之前为每个资源分配正确的 SAMI 权限。

对于新的群集,需要在群集部署之前完成这些步骤。 未按新群集的部署时间配置这些资源,会造成以下影响:

  • 存储帐户:群集创建失败,因为有一个检查来确保群集输入上存在 commandOutputSettings
  • LAW:群集部署失败,因为部署期间需要 LAW 才能安装软件扩展。
  • Key Vault:凭据轮换失败,因为存在检查,以确保在执行凭据轮换之前对用户提供的 Key Vault 的写入访问权限。

可以随时更新群集。 更改 LAW 设置会导致将指标发送到 LAW 的短暂中断,因为需要重新安装使用 LAW 的扩展。

应遵循以下步骤,将 UAMI 与运营商关系和关联的资源一起使用。

群集创建:

  1. 创建用户提供的资源
  2. 使用 SAMI 创建群集并指定使用 SAMI 的资源
  3. 通过查询群集获取 SAMI
  4. 更新资源并将 SAMI 分配给资源
  5. 部署群集

群集更新:

  1. 创建用户提供的资源
  2. 通过群集更新添加 SAMI
  3. 通过查询群集获取 SAMI
  4. 更新资源并将 SAMI 分配给资源
  5. 使用用户提供的资源信息更新群集

初始用户提供的资源创建

本部分提供创建群集之前需要发生的用户资源设置的外部链接。

初始存储帐户设置

  1. 创建存储帐户,或标识要使用的现有存储帐户。 请参阅创建 Azure 存储帐户
  2. 在存储帐户中创建 Blob 存储容器。 请参阅创建容器

日志分析工作区的初始设置

初始密钥保管库设置

  • 创建 Key Vault,或标识要使用的现有 Key Vault。 请参阅创建 Key Vault

使用 SAMI 和用户提供的资源创建群集

使用系统分配的托管标识创建群集时,请使用 --mi-system-assigned 参数。 群集创建过程生成 SAMI 信息。 创建群集时还会定义用户提供的资源。

SAMI 存储帐户设置

数据 --command-output-settings 构造用于定义写入运行命令输出的存储帐户。 它由以下字段组成:

  • container-url:要由指定标识使用的存储帐户容器的 URL。
  • identity-resource-id:使用 SAMI 时不需要
  • identity-type:正在选择的托管标识的类型。 使用 SystemAssignedIdentity

SAMI Log Analytics 工作区设置

--analytics-output-settings 数据构造用于定义发送指标的 LAW。 它由以下字段组成:

  • analytics-workspace-id:要由指定标识使用的分析工作区的资源 ID。
  • identity-resource-id:使用 SAMI 时不需要
  • identity-type:正在选择的托管标识类型。 使用 SystemAssignedIdentity

SAMI 密钥保管库设置

--secret-archive-settings 数据构造用于定义写入轮换凭据的 Key Vault。 它由以下字段组成:

  • identity-resource-id:使用 SAMI 时不需要
  • identity-type:正在选择的托管标识的类型。 使用 SystemAssignedIdentity
  • vault-uri:用作机密存档的 Key Vault 的 URI。

SAMI 群集创建命令示例

例: 此示例是一个缩写的群集创建命令,该命令指定 SAMI,并为每个用户提供的资源使用 SAMI。

az networkcloud cluster create --name "clusterName" -g "resourceGroupName" \

    ...

   --mi-system-assigned \
   --command-output-settings identity-type="SystemAssignedIdentity" \
    container-url="https://myaccount.blob.core.windows.net/mycontainer"
   --analytics-output-settings analytics-workspace-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
    identity-type="SystemAssignedIdentity" \
   --secret-archive-settings identity-type="SystemAssignedIdentity" \
     vault-uri="https://keyvaultname.vault.azure.net/"

通过群集更新添加 SAMI

使用系统分配的托管标识更新群集时,请使用参数 --mi-system-assigned 。 群集更新过程生成 SAMI 信息。 稍后会更新用户提供的资源,以在进行适当的角色分配后使用 SAMI。

重要

如果使用 UAMI 或 UMI 更新群集,在添加 SAMI 或更新时,必须在 --mi-user-assigned 标识列表中包括现有 UAMI 或更新。 如果在群集上使用 SAMI 并且要添加 UAMI,则必须将 --mi-system-assigned 包含在更新命令中。 未能这样做会导致系统删除相应的托管标识。

这些示例用于更新现有群集以添加 SAMI。

示例 1: 此示例更新群集以添加 SAMI。 系统会删除群集上定义的任何 UAMI。

az networkcloud cluster update --name "clusterName" -g "resourceGroupName" \
    --mi-system-assigned

示例 2:此示例更新群集以添加 SAMI 并保留现有的 UAMI。 myUAMI

az networkcloud cluster update --name "clusterName" -g "resourceGroupName" \
    --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAMI" \
    --mi-system-assigned

通过查询群集获取 SAMI

可以通过在 Azure 门户中的标识资源上选择“JSON 视图”来找到标识资源 ID。

CLI 还可用于查看群集中的标识和关联的主体 ID 数据。

请注意授予资源访问权限时使用的标识的principalId

示例

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

系统分配的标识示例:

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

更新资源并将 SAMI 分配给资源

这些更新适用于群集创建或更新后,以确保 SAMI 具有适当的角色分配,并为作员 Nexus 使用情况正确配置资源。

SAMI 存储帐户设置

  1. Storage Blob Data Contributor 角色分配给需要访问 run-* 命令输出的用户和 SAMI。 请参阅分配 Azure 角色以访问 blob 数据
  2. 若要将存储帐户的访问权限限制为已选择的一组 IP 或虚拟网络,请参阅配置 Azure 存储防火墙和虚拟网络
    1. 需要将执行 run-* 命令的所有用户的 IP 添加到存储帐户的 Virtual Networks 和/或 Firewall 列表中。
    2. 确保已选择 Allow Azure services on the trusted services list to access this storage account. 下的 Exceptions

SAMI Log Analytics 工作区设置

SAMI Key Vault 设置

  1. 为基于角色的访问控制 (RBAC) 启用 Key Vault。 请参阅对 Key Vault 启用 Azure RBAC 权限
  2. Operator Nexus Key Vault Writer Service Role (Preview) 角色分配给 Key Vault 的 SAMI。 请参阅分配角色
    1. 运营商关系 Key Vault 编写器服务角色的角色定义 ID 为 44f0a1a8-6fea-4b35-980a-8ff50c487c97。 如果使用 Azure 命令行执行角色分配,则此格式为必需项。
  3. 若要将 Key Vault 的访问权限限制为已选择的一组 IP 或虚拟网络,请参阅配置 Azure Key Vault 防火墙和虚拟网络
    1. 需要访问 Key Vault 的所有用户的 IP 需要添加到 Key Vault 的 Virtual Networks 和/或 Firewall 列表中。
    2. 确保已选择 Allow trusted Microsoft services to bypass this firewall. 下的 Exceptions

使用用户提供的资源信息更新群集

只有在更新群集以添加 SAMI 后,才需要执行此步骤,并且应在更新资源后执行,以便为 SAMI 分配相应的角色或角色。

SAMI 存储帐户更新设置

数据 --command-output-settings 构造用于定义写入运行命令输出的存储帐户。 它由以下字段组成:

  • container-url:要由指定标识使用的存储帐户容器的 URL。
  • identity-resource-id:使用 SAMI 时不需要
  • identity-type:正在选择的托管标识的类型。 使用 SystemAssignedIdentity

SAMI Log Analytics 工作区更新设置

--analytics-output-settings 数据构造用于定义发送指标的 LAW。 它由以下字段组成:

  • analytics-workspace-id:要由指定标识使用的分析工作区的资源 ID。
  • identity-resource-id:使用 SAMI 时不需要
  • identity-type:选择的托管标识类型。 使用 SystemAssignedIdentity

SAMI Key Vault 更新设置

--secret-archive-settings 数据构造用于定义写入轮换凭据的 Key Vault。 它由以下字段组成:

  • identity-resource-id:使用 SAMI 时不需要
  • identity-type:正在选择的托管标识的类型。 使用 SystemAssignedIdentity
  • vault-uri:用作机密存档的 Key Vault 的 URI。

SAMI 群集更新示例

更新群集遵循与创建相同的模式。 如果需要更改资源的 UAMI,则必须在 --mi-user-assigned 字段中以及存储帐户、LAW 或 Key Vault 对应的 --identity-resource-id 中包括该资源。 如果使用多个 UIS,则必须在更新时在 --mi-user-assigned 字段中指定 UAMIS 的完整列表。

对于 LAW 和 Key Vault,可以通过群集更新从现有数据构造转换到使用 UAMI 的新构造。

示例 1:添加或更新群集的命令输出设置(存储帐户)。

az networkcloud cluster update --name "clusterName" --resource-group "resourceGroupName" \
   --command-output-settings identity-type="SystemAssignedIdentity" \
    container-url="https://myaccount.blob.core.windows.net/mycontainer"

示例 2:添加或更新群集的 Log Analytics 输出设置 (LAW)。

注意

更改 LAW 设置会导致将指标发送到 LAW 的短暂中断,因为需要重新安装使用 LAW 的扩展。

az networkcloud cluster update --name "clusterName" --resource-group "resourceGroupName" \
   --analytics-output-settings analytics-workspace-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
    identity-type="SystemAssignedIdentity" \

示例 3:添加或更新群集的机密存档设置 (Key Vault)。

az networkcloud cluster update --name "clusterName" --resource-group "resourceGroupName" \
   --secret-archive-settings identity-type="SystemAssignedIdentity" \
     vault-uri="https://keyvaultname.vault.azure.net/"

示例 4:此示例使用 SAMI 将所有三个资源合并为一个更新。

az networkcloud cluster update --name "clusterName" --resource-group "resourceGroupName" \
   --command-output-settings identity-type="SystemAssignedIdentity" \
     container-url="https://myaccount.blob.core.windows.net/mycontainer"
   --analytics-output-settings analytics-workspace-id="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
     identity-type="SystemAssignedIdentity" \
   --secret-archive-settings identity-type="SystemAssignedIdentity" \
     vault-uri="https://keyvaultname.vault.azure.net/"

通过 API 更新群集标识

可通过 CLI 分配群集托管标识。 可通过 API 调用来完成标识的取消分配。 注意,<APIVersion> 是 API 版本 2024-07-01 或更高版本。

  • 若要删除所有托管标识,请执行:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body "{\"identity\":{\"type\":\"None\"}}"
    
  • 如果同时添加了用户分配的托管标识和系统分配的托管标识,可通过将 type 更新为 SystemAssigned 来删除用户分配的托管标识:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
    

    请求正文 (uai-body.json) 示例:

    {
      "identity": {
          "type": "SystemAssigned"
      }
    }
    
  • 如果同时添加了用户分配的托管标识和系统分配的托管标识,可通过将 type 更新为 UserAssigned 来删除系统分配的托管标识:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
    

    请求正文 (uai-body.json) 示例:

    {
      "identity": {
          "type": "UserAssigned",
          "userAssignedIdentities": {
            "/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": {}
          }
      }
    }
    
  • 如果添加了多个用户分配的托管标识,可通过执行以下操作删除其中一个标识:

    az rest --method PATCH --url /subscriptions/$SUB_ID/resourceGroups/$CLUSTER_RG/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME?api-version=<APIVersion> --body @~/uai-body.json
    

    请求正文 (uai-body.json) 示例:

    {
      "identity": {
          "type": "UserAssigned",
          "userAssignedIdentities": {
            "/subscriptions/$SUB_ID/resourceGroups/$UAI_RESOURCE_GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$UAI_NAME": null
          }
      }
    }
    

字段弃用和替换

本部分是有关已弃用的资源字段及其替换项的参考。 除了用于已弃用的密钥保管库方法的群集管理器托管标识之外,所有字段均可在群集资源上找到。 此列表还假定在与资源的托管标识相对应的群集上定义了关联的托管标识。

identity-resource-id 仅当使用 UAMI 时才必需。 如果使用 SAMI 作为资源,则不应指定。

群集概述

Azure 门户中的群集概述反映了新的数据字段。

Azure 门户操作员 Nexus 群集概述页的屏幕截图。

  1. “概述属性”部分包含用于Log analyticsSecret archive(Key Vault)和Storage account的只读视图。
    1. 选择每个资源旁边的 edit 会将您带到 Operator Nexus 中的资源特定页面,允许您更新资源和托管身份信息。
  2. 导航 Settings 菜单提供用于管理每个资源的链接。

注释

Secret Archive 示例展示了一个实例,其中群集已更新以填充 secretArchiveSettings Key Vault URI 和关联的托管标识,但旧 secretArchive 字段仍然填充。 概述从显示角度反映了这两个字段,但系统只使用 secretArchiveSettings。 如果只有 secretArchiveSettings 被填充,那么只有 Key Vault URI 会被填充。 字段 Key Vault 将为空。

Log Analytics 工作区

已弃用的字段:analytics-workspace-id

通过数据构造提供和查看 analytics-output-settings 法律信息。

替换字段:

analytics-output-settings:
  analytics-workspace-id
  identity-type
  identity-resource-id

输入格式(LAW Azure 资源管理器(ARM)资源 ID)在已弃用的analytics-workspace-id字段和analytics-output-settings中的analytics-workspace-id字段之间是相同的。 系统使用 analytics-output-settings:analytics-workspace-id 字段更新已弃用的 analytics-workspace-id 字段。 为了在从使用服务主体转为使用托管标识进行身份验证的过渡期间保持向后兼容性,已对已弃用的内容进行了更新。 它不再有任何用途,但仍存在。

Key Vault

已弃用的字段:

cluster-secret-archive:
  use-key-vault
  key-vault-id

集群管理器管理的身份用于身份验证。

替换字段:

提供和查看 Key Vault 信息是通过 secret-archive-settings 数据构造实现的。 群集托管标识用于此构造。

secret-archive-settings:
  vault-uri
  identity-type
  identity-resource-id

vault-uri in secret-archive-settings 是用于指定 Key Vault 的 URI,而 key-vault-id 指定的是 Azure 资源管理器(ARM)资源 ID。 为群集管理器指定的托管标识可以在群集上使用。

存储帐户

已弃用的字段: N/A - 以前,存储帐户是作为群集管理器创建的一部分自动创建的,不需要客户输入。

替换字段:

通过 command-output-settings 数据构件提供和查看存储帐户信息。

command-output-settings:
  container-url
  identity-type
  identity-resource-id