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

使用 az networkcloud cluster baremetalmachinekeyset 管理对裸机计算机的紧急访问

注意

请注意,此过程在使用 Azure 的所有其他故障排除选项都已用尽的紧急情况下使用。 在 BMM 节点上执行的任何写入或编辑操作都需要用户“重置映像”,以便还原对受影响的 BMM 节点的 Microsoft 支持。 请注意,对这些裸机计算机的 SSH 访问仅限于通过此方法从指定的跳板机列表管理的用户。

在极少数情况下,用户需要调查和解决裸机计算机问题,而所有其他使用 Azure 的方法都已用尽。 Azure 运营商关系提供 az networkcloud cluster baremetalmachinekeyset 命令,以便用户可以管理对这些裸机计算机的 SSH 访问。 创建密钥集时,通过交叉引用为用户提供的用户主体名称与提供的 Microsoft Entra 组 ID --azure-group-id <Entra Group ID>,根据 Microsoft Entra ID 对用户进行验证,以进行正确的授权。

密钥集中的用户每四小时验证一次,当任何密钥集有任何更改时也会进行验证。 然后,每个用户的状态设置为“活动”或“无效”。无效用户仍保留在密钥集中,但他们的密钥会从所有主机上删除,而且不允许他们访问。 用户无效的原因包括:

  • 用户的用户主体名称不是给定 Entra 组的成员(如果指定)
  • 给定的 Entra 组(如果指定)不存在(在这种情况下,密钥集中的所有用户都无效)
  • 密钥集已过期(在这种情况下,密钥集中的所有用户都无效)

注意

目前有一个过渡期,在此期间,指定用户主体名称是可选操作。 在将来的版本中,这会成为强制性操作,将对所有用户强制执行 Microsoft Entra ID 验证。 建议用户在过渡期结束(计划于 2024 年 7 月)之前将用户主体名称添加到其密钥集,以避免密钥集失效。 请注意,如果将任何用户主体名称添加到密钥集,即使没有为所有用户添加它们,也会启用 Microsoft Entra ID 验证,如果指定的组 ID 无效,这会导致整个密钥集失效。

密钥集和每个单独的用户还具有传达其他信息的详细状态消息:

  • 密钥集的 detailedStatusMessage 会告知密钥集是否过期,以及有关在群集中更新密钥集时遇到的问题的其他信息。
  • 用户的 statusMessage 会告知该用户是活动状态还是无效状态,以及尚未更新到用户最新活动/无效状态的计算机列表。 在每种情况下,如果知道问题的原因,也会包括在内。

运行该命令时,它会在群集中具有活动 Kubernetes 节点的每台裸机计算机上执行。 有一个定期运行的协调过程,该过程会在执行原始命令时不可用的任何裸机计算机上重试该命令。 此外,任何通过 az networkcloud baremetalmachine reimageaz networkcloud baremetalmachine replace 命令返回群集的裸机计算机(请参阅 BareMetal 函数)都会发送一个信号,使任何活动密钥集在计算机返回到群集时立即发送到该计算机。 多个命令按接收的顺序执行。

组中的用户数没有限制。

注意

跳板机 IP 地址说明

  • 密钥集创建/更新过程将跳板机 IP 地址添加到群集中每台计算机的 IP 表中。 IP 表更新将 SSH 访问限制为只能从这些跳板机进行。
  • 请务必为跳板机指定面向群集的 IP 地址。 这些 IP 地址可能与用于访问跳板机的公共 IP 地址不同。
  • 当至少定义了一个密钥集时,允许从任何密钥集中的任何跳板机进行 SSH 访问。 例如,如果密钥集 A 指定跳板机 A,密钥集 B 指定跳板机 B,则任一密钥集的用户都可以使用跳板机 A 或 B。
  • 虽然没有定义密钥集,但允许从任何与计算机有网络连接的跳板机进行 SSH 访问。

先决条件

  • 安装最新版本的相应 CLI 扩展
  • 本地群集必须连接到 Azure。
  • 获取 Cluster 资源的资源组名称。
  • 此过程将密钥集应用于所有正在运行的裸机计算机。
  • 添加的用户必须是 Microsoft Entra 组的一部分。 有关详细信息,请参阅如何管理组
  • 要限制用于管理密钥集的访问权限,请创建自定义角色。 有关详细信息,请参阅 Azure 自定义角色。 在此实例中,添加或排除 Microsoft.NetworkCloud/clusters/bareMetalMachineKeySets 的权限。 选项为 /read/write/delete

注意

通过本文所述的命令创建、修改或删除裸机计算机访问权限时,后台进程会将这些更改传递到计算机。 在运营商关系软件升级期间,此过程会暂停。 如果已知正在进行升级,则可以配合使用 --no-wait 选项和命令,以防止命令提示符等待该过程完成。

创建裸机计算机密钥集

baremetalmachinekeyset create 命令为一组用户创建对群集中裸机计算机的 SSH 访问权限。

命令语法为:

az networkcloud cluster baremetalmachinekeyset create \
  --name "<bare metal machine Keyset Name>" \
  --extended-location name="<Extended Location ARM ID>" \
    type="CustomLocation" \
  --location "<Azure Region>" \
  --azure-group-id "<Azure Group ID>" \
  --expiration "<Expiration Timestamp>" \
  --jump-hosts-allowed "<List of jump server IP addresses>" \
  --os-group-name "<Name of the Operating System Group>" \
  --privilege-level "<"Standard" or "Superuser">" \
  --user-list '[{"description":"<User List Description>","azureUserName":"<User Name>",\
    "sshPublicKey":{"keyData":"<SSH Public Key>"}, \
    "userPrincipalName":""}]', \
  --tags key1="<Key Value>" key2="<Key Value>" \
  --cluster-name "<Cluster Name>" \
  --resource-group "<cluster_RG>"

创建参数

  --azure-group-id                            [Required] : The object ID of Azure Active Directory
                                                           group that all users in the list must
                                                           be in for access to be granted. Users
                                                           that are not in the group do not have
                                                           access.
  --bare-metal-machine-key-set-name --name -n [Required] : The name of the bare metal machine key
                                                           set.
  --cluster-name                              [Required] : The name of the cluster.
  --expiration                                [Required] : The date and time after which the users
                                                           in this key set are removed from
                                                           the bare metal machines. The maximum
                                                           expiration date is a year from creation
                                                           date. Format is: "YYYY-MM-DDTHH:MM:SS.000Z".
  --extended-location                         [Required] : The extended location of the cluster
                                                           associated with the resource.
    Usage: --extended-location name=XX type=XX
      name: Required. The resource ID of the extended location on which the resource is created.
      type: Required. The extended location type: "CustomLocation".
  --jump-hosts-allowed                        [Required] : The list of IP addresses of jump hosts
                                                           with management network access from
                                                           which a login is be allowed for the
                                                           users. Supports IPv4 or IPv6 addresses.
  --privilege-level                           [Required] : The access level allowed for the users
                                                           in this key set.  Allowed values:
                                                           "Standard" or "Superuser".
  --resource-group -g                         [Required] : Name of cluster resource group. Optional if
                                                           configuring the default group using `az
                                                           configure --defaults group=<name>`.
  --user-list                                 [Required] : The unique list of permitted users.
    Usage: --user-list azure-user-name=XX description=XX key-data=XX
      azure-user-name: Required. User name used to login to the server.
      description: The free-form description for this user.
      key-data: Required. The public ssh key of the user.
      userPrincipalName: Optional. The User Principal Name of the User.

      Multiple users can be specified by using more than one --user-list argument.
  --os-group-name                                        : The name of the group that users are assigned
                                                           to on the operating system of the machines.
  --tags                                                 : Space-separated tags: key[=value]
                                                           [key[=value] ...]. Use '' to clear
                                                           existing tags.
  --location -l                                          : Azure Region. Values from: `az account
                                                           list-locations`. You can configure the
                                                           default location using `az configure
                                                           --defaults location=<location>`.
  --no-wait                                              : Do not wait for the long-running
                                                           operation to finish.

全局 Azure CLI 参数(适用于所有命令)

  --debug                                                : Increase logging verbosity to show all
                                                           debug logs.
  --help -h                                              : Show this help message and exit.
  --only-show-errors                                     : Only show errors, suppressing warnings.
  --output -o                                            : Output format.  Allowed values: json,
                                                           jsonc, none, table, tsv, yaml, yamlc.
                                                           Default: json.
  --query                                                : JMESPath query string. See
                                                           http://jmespath.org/ for more
                                                           information and examples.
  --subscription                              [Required] : Name or ID of subscription. Optional if
                                                           configuring the default subscription
                                                           using `az account set -s NAME_OR_ID`.
  --verbose                                              : Increase logging verbosity. Use --debug
                                                           for full debug logs.

本示例创建了一个新的密钥集,其中有两个用户,这两个用户具有从两个跳板机进行标准访问的权限。

az networkcloud cluster baremetalmachinekeyset create \
  --name "bareMetalMachineKeySetName" \
  --extended-location name="/subscriptions/subscriptionId/resourceGroups/cluster_RG/providers/Microsoft.ExtendedLocation/customLocations/clusterExtendedLocationName" \
    type="CustomLocation" \
  --location "eastus" \
  --azure-group-id "f110271b-XXXX-4163-9b99-214d91660f0e" \
  --expiration "2022-12-31T23:59:59.008Z" \
  --jump-hosts-allowed "192.0.2.1" "192.0.2.5" \
  --os-group-name "standardAccessGroup" \
  --privilege-level "Standard" \
  --user-list '[{"description":"Needs access for troubleshooting as a part of the support team","azureUserName":"userABC", "sshPublicKey":{"keyData":"ssh-rsa  AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXISTRnIDpcf5qytjs1XoyYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm"},"userPrincipalName":"example@contoso.com"},\
  {"description":"Needs access for troubleshooting as a part of the support team","azureUserName":"userXYZ","sshPublicKey":{"keyData":"ssh-rsa  AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXTSTRnIDpcf5qytjs1XoyYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm"}, "userPrincipalName":"example@contoso.com"}]' \
  --tags key1="myvalue1" key2="myvalue2" \
  --cluster-name "clusterName"
  --resource-group "cluster_RG"

要获取创建 --user-list 结构的帮助,请参阅 Azure CLI 速记

删除裸机计算机密钥集

baremetalmachinekeyset delete 命令移除一组用户对裸机计算机的 SSH 访问权限。 该组的所有成员都不再具有对群集中任何裸机计算机的 SSH 访问权限。

命令语法为:

az networkcloud cluster baremetalmachinekeyset delete \
  --name "<bare metal machine Keyset Name>" \
  --cluster-name "<Cluster Name>" \
  --resource-group "<cluster_RG>"

删除参数

    --bare-metal-machine-key-set-name --name -n [Required] : The name of the bare metal machine key set to be
                                                             deleted.
    --cluster-name                              [Required] : The name of the cluster.
    --resource-group -g                         [Required] : Name of cluster resource group. Optional if configuring the
                                                             default group using `az configure --defaults
                                                             group=<name>`.
    --no-wait                                              : Do not wait for the long-running operation to
                                                             finish.
    --yes -y                                               : Do not prompt for confirmation.

此示例移除了“clusterName”群集中的“bareMetalMachineKeysetName”密钥集组。

az networkcloud cluster baremetalmachinekeyset delete \
  --name "bareMetalMachineKeySetName" \
  --cluster-name "clusterName" \
  --resource-group "cluster_RG"

更新裸机计算机密钥集

baremetalmachinekeyset update 命令允许用户对现有密钥集组进行更改。

命令语法为:

az networkcloud cluster baremetalmachinekeyset update \
  --name "<bare metal machine Keyset Name>" \
  --jump-hosts-allowed "<List of jump server IP addresses>" \
  --privilege-level "<"Standard" or "Superuser">" \
  --user-list '[{"description":"<User List Description>","azureUserName":"<User Name>",\
   "sshPublicKey":{"keyData":"<SSH Public Key>"}, \
   "userPrincipalName":""}]', \
  --tags key1="<Key Value>" key2="<Key Value> "\
  --cluster-name "<Cluster Name>" \
  --resource-group "<cluster_RG>"

更新参数

  --bare-metal-machine-key-set-name --name -n [Required] : The name of the bare metal machine key set.
  --cluster-name                              [Required] : The name of the cluster.
  --expiration                                           : The date and time after which the users
                                                           in this key set are removed from
                                                           the bare metal machines. The maximum
                                                           expiration date is a year from creation
                                                           date. Format is: "YYYY-MM-DDTHH:MM:SS.000Z".
  --jump-hosts-allowed                                   : The list of IP addresses of jump hosts
                                                           with management network access from
                                                           which a login is allowed for the
                                                           users. Supports IPv4 or IPv6 addresses.
  --privilege-level                                      : The access level allowed for the users
                                                           in this key set.  Allowed values:
                                                           "Standard" or "Superuser".
  --user-list                                            : The unique list of permitted users.
    Usage: --user-list azure-user-name=XX description=XX key-data=XX
      azure-user-name: Required. User name used to login to the server.
      description: The free-form description for this user.
      key-data: Required. The public SSH key of the user.
      userPrincipalName: Optional. The User Principal Name of the User.

      Multiple users can be specified by using more than one --user-list argument.
  --resource-group -g                         [Required] : Name of cluster resource group. Optional if
                                                           configuring the default group using `az
                                                           configure --defaults group=<name>`.
  --tags                                                 : Space-separated tags: key[=value]
                                                           [key[=value] ...]. Use '' to clear
                                                           existing tags.
  --no-wait                                              : Do not wait for the long-running
                                                           operation to finish.

此示例将两个新用户添加到“baremetalMachineKeySetName”组,并更改该组的到期时间。

az networkcloud cluster baremetalmachinekeyset update \
  --name "bareMetalMachineKeySetName" \
 --expiration "2023-12-31T23:59:59.008Z" \
  --user-list '[{"description":"Needs access for troubleshooting as a part of the support team",\
  "azureUserName":"userABC", \
  "sshPublicKey":{"keyData":"ssh-rsa  AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXISTRnIDpcf5qytjs1XoyYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm"}, \
  "userPrincipalName":"example@contoso.com"},\
  {"description":"Needs access for troubleshooting as a part of the support team",\
    "azureUserName":"userXYZ", \
    "sshPublicKey":{"keyData":"ssh-rsa  AAtsE3njSONzDYRIZv/WLjVuMfrUSByHp+jfaaOLHTIIB4fJvo6dQUZxE20w2iDHV3tEkmnTo84eba97VMueQD6OzJPEyWZMRpz8UYWOd0IXeRqiFu1lawNblZhwNT/ojNZfpB3af/YDzwQCZgTcTRyNNhL4o/blKUmug0daSsSXTSTRnIDpcf5qytjs1XoyYyJMvzLL59mhAyb3p/cD+Y3/s3WhAx+l0XOKpzXnblrv9d3q4c2tWmm/SyFqthaqd0= admin@vm"}, \
    "userPrincipalName":"example@contoso.com"}]' \
   --cluster-name "clusterName" \
  --resource-group "cluster_RG"

列出裸机计算机密钥集

baremetalmachinekeyset list 命令允许用户查看群集中的现有密钥集组。

命令语法为:

az networkcloud cluster baremetalmachinekeyset list \
  --cluster-name "<Cluster Name>" \
  --resource-group "<cluster_RG>"

列出参数

  --cluster-name                              [Required] : The name of the cluster.
  --resource-group -g                         [Required] : Name of cluster resource group. Optional if
                                                           configuring the default group using `az
                                                           configure --defaults group=<name>`.

显示裸机计算机密钥集详细信息

baremetalmachinekeyset show 命令允许用户查看群集中现有密钥集组的详细信息。

命令语法为:

az networkcloud cluster baremetalmachinekeyset show \
  --cluster-name "<Cluster Name>" \
  --resource-group "<cluster_RG>"

显示参数

  --bare-metal-machine-key-set-name --name -n [Required] : The name of the bare metal machine key
                                                           set.
  --cluster-name                              [Required] : The name of the cluster.
  --resource-group -g                         [Required] : Name of cluster resource group. You can
                                                           configure the default group using `az
                                                           configure --defaults group=<name>`.