Compartir a través de


Administrar el acceso de emergencia a una máquina sin sistema operativo mediante el az networkcloud cluster bmckeyset

Precaución

Tenga en cuenta que este proceso se usa en situaciones de emergencia cuando se han agotado todas las demás opciones de solución de problemas mediante Azure. El acceso SSH a estas máquinas sin sistema operativo está restringido a los usuarios administrados a través de este método desde la lista de hosts de salto especificada.

Hay situaciones poco frecuentes en las que un usuario necesita investigar y resolver problemas con una máquina sin sistema operativo y todas las demás formas mediante Azure se han agotado. Operator Nexus proporciona el comando az networkcloud cluster bmckeyset para que los usuarios puedan administrar el acceso SSH al controlador de administración de placa base (BMC) en estas máquinas sin sistema operativo. En la creación del conjunto de claves, los usuarios se validan con el identificador de Microsoft Entra para obtener la autorización adecuada haciendo referencia cruzada al nombre principal de usuario proporcionado para un usuario con el identificador de grupo de Azure proporcionado --azure-group-id <Entra Group ID>.

Los usuarios de un conjunto de claves se validan cada cuatro horas y también cuando se realizan cambios en cualquier conjunto de claves. El estado de cada usuario se establece en "Activo" o "No válido". Los usuarios no válidos permanecen en el conjunto de claves, pero sus claves se quitan de todos los hosts y no se les permite el acceso. Las razones para que un usuario no sea válido son:

  • No se ha especificado el nombre principal de usuario
  • El nombre principal de usuario no es miembro del grupo de Entra especificado
  • El grupo de Entra especificado no existe (en cuyo caso ninguno de los usuarios del conjunto de claves es válido)
  • El conjunto de claves ha expirado (en cuyo caso ninguno de los usuarios del conjunto de claves es válido)

Nota:

El nombre principal de usuario ahora es necesario para los conjuntos de claves, ya que se aplica la validación de Microsoft Entra ID para todos los usuarios. Los conjuntos de claves actuales que no especifican nombres principales de usuario para todos los usuarios seguirán funcionando hasta la fecha de expiración. Si un conjunto de claves sin nombres principales de usuario expira, el conjunto de claves deberá actualizarse con nombres principales de usuario, para todos los usuarios, con el fin de volver a ser válido. Los conjuntos de claves que no se han actualizado con los nombres principales de usuario para todos los usuarios antes de diciembre de 2024 corren el riesgo de ser Invalid. Tenga en cuenta que, si algún usuario no puede especificar el nombre principal de usuario, se invalida todo el conjunto de claves.

El conjunto de claves y cada usuario individual también tienen mensajes de estado detallados que comunican otra información:

  • El mensaje detailedStatusMessage del conjunto de claves indica si el conjunto de claves ha expirado, así como otra información sobre los problemas detectados al actualizar el conjunto de claves en el clúster.
  • El mensaje statusMessage del usuario indica si el usuario está activo o no es válido, así como una lista de máquinas que aún no se han actualizado al estado activo o no válido del usuario. En cada caso, las causas de problemas se incluyen si se conocen.

Cuando se ejecuta el comando, se ejecuta en cada máquina sin sistema operativo del clúster con un nodo de Kubernetes activo. Hay un proceso de conciliación que se ejecuta periódicamente que reintenta el comando en cualquier máquina sin sistema operativo que no estuviera disponible en el momento del comando original. Además, cualquier máquina sin sistema operativo que vuelva al clúster a través de un comando az networkcloud baremetalmachine actionreimage o az networkcloud baremetalmachine actionreplace (consulte Funciones de BareMetal) envía una señal que provoca que los conjuntos de claves activos se envíen a la máquina tan pronto como vuelva al clúster. Se ejecutan varios comandos en el orden recibido.

Los BMC admiten un número máximo de 12 usuarios. Los usuarios se definen por clúster y se aplican a cada máquina sin sistema operativo. Los intentos de agregar más de 12 usuarios producen un error. Elimine un usuario antes de agregar otro cuando ya hayan 12.

Requisitos previos

  • Instale la versión más reciente de las extensiones de la CLI adecuadas.
  • El clúster local debe tener conectividad con Azure.
  • Obtenga el nombre del grupo de recursos para el recurso Cluster.
  • El proceso aplica conjuntos de claves a todas las máquinas sin sistema operativo en ejecución.
  • Los usuarios agregados deben formar parte de un grupo de Microsoft Entra. Para obtener más información, consulte Cómo administrar grupos.
  • Para restringir el acceso para administrar conjuntos de claves, cree un rol personalizado. Para más información, consulte Roles personalizados de Azure. En esta instancia, agregue o excluya permisos para Microsoft.NetworkCloud/clusters/bmcKeySets. Las opciones son /read, /write, y /delete.

Nota:

Cuando se crea, modifica o elimina el acceso a BMC a través de los comandos descritos en este artículo, un proceso en segundo plano entrega esos cambios a las máquinas. Este proceso se pausa durante las actualizaciones del software Operator Nexus. Si se sabe que hay una actualización en curso, puede usar la opción --no-wait con el comando para evitar que el símbolo del sistema espere a que se complete el proceso.

Creación de un conjunto de claves de BMC

El comando bmckeyset create crea acceso SSH a la máquina sin sistema operativo en un clúster para un grupo de usuarios.

La sintaxis del comando es la siguiente:

az networkcloud cluster bmckeyset create \
  --name <BMC Keyset Name> \
  --extended-location name=<Extended Location ARM ID> \
    type="CustomLocation" \
  --location <Azure Region> \
  --azure-group-id <Azure AAD Group ID> \
  --expiration <Expiration Timestamp> \
  --privilege-level <"Administrator" or "ReadOnly"> \
  --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 <Resource Group Name>

Crear argumentos

  --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.
  --bmc-key-set-name --name -n                [Required] : The name of the BMC 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 BMCs. 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".
  --privilege-level                           [Required] : The access level allowed for the users
                                                           in this key set.  Allowed values:
                                                           "Administrator" or "ReadOnly".
  --resource-group -g                         [Required] : Name of 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: Required. The User Principal Name of the User.

      Multiple users can be specified by using more than one --user-list argument.
  --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.

Argumentos globales de la CLI de Azure (aplicables a todos los comandos)

  --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.

En este ejemplo se crea un nuevo conjunto de claves con dos usuarios que tienen acceso estándar desde dos hosts de salto.

az networkcloud cluster bmckeyset create \
  --name "bmcKeySetName" \
  --extended-location name="/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ExtendedLocation/customLocations/clusterExtendedLocationName" \
    type="CustomLocation" \
  --location "location" \
  --azure-group-id "f110271b-XXXX-4163-9b99-214d91660f0e" \
  --expiration "2023-12-31T23:59:59.008Z" \
  --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"}},\
  {"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"}}]' \
  --tags key1="myvalue1" key2="myvalue2" \
  --cluster-name "clusterName" \
  --resource-group "resourceGroupName"

Para obtener ayuda para crear la estructura --user-list, consulte CLI de Azure Shorthand.

Eliminación de un conjunto de claves de BMC

El comando bmckeyset delete quita el acceso SSH al BMC para un grupo de usuarios. Todos los miembros del grupo pierden el acceso SSH a cualquiera de los BMC del clúster.

La sintaxis del comando es la siguiente:

az networkcloud cluster bmckeyset delete \
  --name <BMC Keyset Name> \
  --cluster-name <Cluster Name> \
  --resource-group <Resource Group Name> \

Eliminar argumentos

  --bmc-key-set-name --name -n                [Required] : The name of the BMC key set to be deleted.
  --cluster-name                              [Required] : The name of the cluster.
  --resource-group -g                         [Required] : Name of 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.

En este ejemplo se quita el grupo de conjuntos de claves "bmcKeysetName" en el clúster "clusterName".

az networkcloud cluster bmckeyset delete \
  --name "bmcKeySetName" \
  --cluster-name "clusterName" \
  --resource-group "resourceGroupName" \

Actualización de un conjunto de claves de BMC

El comando bmckeyset update permite a los usuarios realizar cambios en un grupo de conjuntos de claves existente.

La sintaxis del comando es la siguiente:

az networkcloud cluster bmckeyset update \
  --name <BMC Keyset Name> \
  --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 <Resource Group Name>

Actualizar argumentos

  --bmc-key-set-name --name -n                [Required] : The name of the BMC 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 BMCs. The maximum expiration date is a
                                                           year from creation date. Format is
                                                           "YYYY-MM-DDTHH:MM:SS.000Z".
  --privilege-level                                      : The access level allowed for the users
                                                           in this key set.  Allowed values:
                                                           "Administrator" or "ReadOnly".
  --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: Required. 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 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.

En este ejemplo se agregan dos nuevos usuarios al grupo "bmcKeySetName" y se cambia la hora de expiración del grupo.

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

Enumeración de conjuntos de claves de BMC

El comando bmckeyset list permite a los usuarios ver los grupos de conjuntos de claves existentes en un clúster.

La sintaxis del comando es la siguiente:

az networkcloud cluster bmckeyset list \
  --cluster-name <Cluster Name> \
  --resource-group <Resource Group Name>

Enumerar argumentos

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

Visualización de detalles del conjunto de claves de BMC

El comando bmckeyset show permite a los usuarios ver los detalles de un grupo de conjuntos de claves existente en un clúster.

La sintaxis del comando es la siguiente:

az networkcloud cluster bmckeyset show \
  --cluster-name <Cluster Name> \
  --resource-group <Resource Group Name>

Mostrar argumentos

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