Gérer l’accès d’urgence à une machine nue à l’aide de az networkcloud cluster bmckeyset

Attention

Notez que ce processus est utilisé dans les situations d’urgence, lorsque toutes les autres options de résolution des problèmes via Azure sont épuisées. L’accès SSH à ces machines nues est limité aux utilisateurs gérés via cette méthode à partir de la liste d’hôtes de saut spécifiée.

Il existe de rares situations où un utilisateur doit examiner et résoudre les problèmes liés à une machine nue et que tous les autres moyens utilisant Azure sont épuisés. Nexus Operator fournit la commande az networkcloud cluster bmckeyset afin que les utilisateurs puissent gérer l’accès SSH au contrôleur de gestion de carte de base (BMC) sur ces machines nues. Lors de la création du jeu de clés, les utilisateurs sont validés par rapport à Microsoft Entra ID pour une autorisation appropriée en vérifiant le nom d’utilisateur principal fourni pour un utilisateur par rapport à l’ID de groupe Azure --azure-group-id <Entra Group ID> fourni.

Les utilisateurs d’un jeu de clés sont validés toutes les quatre heures, ainsi que lorsque des modifications sont apportées à n’importe lequel des jeux de clés. L’état de chaque utilisateur est alors défini sur « Actif » ou « Non valide ». Les utilisateurs non valides restent dans le jeu de clés, mais leurs clés sont supprimées de tous les hôtes et l’accès ne leur est pas autorisé. Les raisons pour lesquelles un utilisateur est non valide sont les suivantes :

  • Le nom d’utilisateur principal de l’utilisateur n’est pas membre du groupe Entra donné (si spécifié)
  • Le groupe Entra donné (si spécifié) n’existe pas (auquel cas tous les utilisateurs du jeu de clés sont non valides)
  • Le jeu de clés a expiré (auquel cas tous les utilisateurs du jeu de clés sont non valides)

Remarque

Il existe actuellement une période de transition où la spécification des noms d’utilisateur principal est facultative. Dans une prochaine version, cela deviendra obligatoire et la validation par Microsoft Entra ID sera appliquée pour tous les utilisateurs. Les utilisateurs sont encouragés à ajouter des noms d’utilisateur principal à leurs jeux de clés avant la fin de la période de transition (prévue pour juillet 2024) afin d’éviter que les jeux de clés soient déclarés non valides. Notez que si des noms d’utilisateur principal sont ajoutés à un jeu de clés, la validation par Microsoft Entra ID est activée même s’ils ne sont pas ajoutés pour tous les utilisateurs. Dans le même ordre d’idées, tout le jeu de clés sera déclaré non valide si l’ID de groupe spécifié n’est pas valide.

Le jeu de clés et chaque utilisateur individuel ont également des messages d’état détaillés qui communiquent d’autres informations :

  • Le fichier detailedStatusMessage du jeu de clés vous indique si le jeu de clés a expiré et d’autres informations sur les problèmes rencontrés lors de la mise à jour du jeu de clés sur le cluster.
  • Le statusMessage de l’utilisateur vous indique si l’utilisateur est actif ou non valide, et une liste de machines qui ne sont pas encore mises à jour vers l’état actif/non valide le plus récent de l’utilisateur. Dans chaque cas, les causes de problèmes sont incluses si elles sont connues.

Lorsque la commande s’exécute, elle s’exécute sur chaque machine nue du cluster avec un nœud Kubernetes actif. Un processus de rapprochement s’exécute régulièrement et retente la commande sur n’importe quelle machine nue indisponible au moment du lancement de la commande d’origine. En outre, toute machine nue qui retourne au cluster par le biais d’une commande az networkcloud baremetalmachine actionreimage ou az networkcloud baremetalmachine actionreplace (voir Fonctions Matériel nu) envoie un signal provoquant l’envoi de tous les jeux de clés actifs à la machine dès qu’elle revient au cluster. Plusieurs commandes s’exécutent dans l’ordre reçu.

Les BMC prennent en charge un nombre maximal de 12 utilisateurs. Les utilisateurs sont définis par cluster et appliqués à chaque machine nue. Les tentatives d’ajout de plus de 12 utilisateurs entraînent une erreur. Supprimez un utilisateur avant d’en ajouter un autre lorsqu’il en existe déjà 12.

Prérequis

  • Installez la dernière version des extensions Azure CLI appropriées.
  • Le cluster local doit disposer d’une connectivité à Azure.
  • Obtenez le nom du groupe de ressources pour la ressource Cluster.
  • Le processus applique des jeux de clés à toutes les machines nues en cours d’exécution.
  • Les utilisateurs ajoutés doivent faire partie d’un groupe Microsoft Entra. Pour plus d’informations, consultez Comment gérer des groupes.
  • Pour restreindre l’accès à la gestion des jeux de clés, créez un rôle personnalisé. Pour plus d’informations, consultez Rôles personnalisés Azure. Dans cette instance, ajoutez ou excluez les autorisations pour Microsoft.NetworkCloud/clusters/bmcKeySets. Les options sont /read, /write et /delete.

Remarque

Lorsqu’un accès BMC est créé, modifié ou supprimé via les commandes décrites dans cet article, un processus en arrière-plan transmet ces modifications aux machines. Ce processus est suspendu pendant les mises à niveau logicielles d’Operator Nexus. Si vous savez qu’une mise à niveau est en cours, vous pouvez utiliser l’option --no-wait avec la commande pour empêcher l’invite de commandes d’attendre la fin du processus.

Créer un jeu de clés BMC

La commande bmckeyset create crée un accès SSH à la machine nue dans un cluster pour un groupe d’utilisateurs.

Syntaxe de la commande :

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>

Créer des arguments

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

Arguments globaux de l’interface de ligne de commande Azure (applicables à toutes les commandes)

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

Cet exemple crée un nouveau jeu de clés avec deux utilisateurs disposant d’un accès standard à partir de deux hôtes de saut.

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"

Pour obtenir de l’aide concernant la création de la --user-list structure, consultez Abrégé Interface de ligne de commande Azure.

Supprimer un jeu de clés BMC

La commande bmckeyset delete supprime l’accès SSH au BMC pour un groupe d’utilisateurs. Tous les membres du groupe perdent l’accès SSH à l’un quelconque des BMC du cluster.

Syntaxe de la commande :

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

Supprimer des arguments

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

Cet exemple supprime le groupe de jeux de clés « bmcKeysetName » dans le cluster « clusterName ».

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

Mettre à jour un jeu de clés BMC

La commande bmckeyset update permet aux utilisateurs d’apporter des modifications à un groupe de jeux de clés existant.

Syntaxe de la commande :

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>

Mettre à jour les arguments

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

Cet exemple ajoute deux nouveaux utilisateurs au groupe « bmcKeySetName » et modifie la durée d’expiration du groupe.

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"

Lister les jeux de clés BMC

La commande bmckeyset list permet aux utilisateurs de consulter les groupes de jeux de clés existants dans un cluster.

Syntaxe de la commande :

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

Liste des arguments

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

Afficher les détails du jeu de clés BMC

La commande bmckeyset show permet aux utilisateurs de consulter les détails d’un groupe de jeux de clés existant dans un cluster.

Syntaxe de la commande :

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

Afficher les arguments

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