Uso de identidades administradas

Las identidades administradas de Azure AD se pueden usar para permitir que Azure CycleCloud administre clústeres de la suscripción (como alternativa al uso de una entidad de servicio). También se pueden asignar a las máquinas virtuales de CycleCloud para proporcionar acceso a los recursos de Azure (como Storage, Key Vault o Azure Container Registries).

Permisos de máquina virtual de CycleCloud con identidad administrada

CycleCloud automatiza muchas llamadas a Azure Resource Manager para administrar clústeres de HPC. Esta automatización requiere que se concedan determinados permisos a CycleCloud. Este acceso se puede conceder a CycleCloud mediante la configuración de una entidad de servicio o mediante la asignación de una identidad administrada a la máquina virtual de CycleCloud.

Por lo general, se recomienda usar una identidad administrada asignada por el sistema o asignada por el usuario para conceder esos permisos en lugar de una entidad de servicio.

Cuando Azure CycleCloud se haya instalado en una máquina virtual de Azure con una identidad administrada asignada, el cuadro de diálogo Crear cuenta de proveedor de nube se comportará ligeramente de forma diferente. Habrá una nueva casilla para Identidad administrada y el identificador de suscripción se rellenará previamente con la suscripción de la máquina virtual host.

Agregar identidades administradas de suscripción

Agregar identidades administradas de suscripción

Todavía es posible escribir el conjunto estándar de credenciales desactivando simplemente la casilla Identidad administrada . Al hacerlo, los campos estándar se agregarán al formulario. Además, es perfectamente aceptable usar un identificador de suscripción independiente; el valor proporcionado es solo para mayor comodidad.

Creación de un rol personalizado e identidad administrada para CycleCloud

La opción más sencilla (con derechos de acceso suficientes) consiste en asignar el rol colaborador de la suscripción a la máquina virtual cycleCloud como una identidad administrada de System-Assigned. Sin embargo, el rol colaborador tiene un nivel de privilegios superior al que requiere CycleCloud. Se puede crear y asignar un rol personalizado a la máquina virtual.

A continuación se publica una directiva suficiente para la mayoría de las características de CycleCloud.

{
    "assignableScopes": [
      "/"
    ],
    "description": "CycleCloud Orchestrator Role",
    "permissions": [
      {
        "actions": [
          "Microsoft.Commerce/RateCard/read",
          "Microsoft.Compute/*/read",
          "Microsoft.Compute/availabilitySets/*",
          "Microsoft.Compute/disks/*",
          "Microsoft.Compute/images/read",
          "Microsoft.Compute/locations/usages/read",
          "Microsoft.Compute/register/action",
          "Microsoft.Compute/skus/read",
          "Microsoft.Compute/virtualMachines/*",
          "Microsoft.Compute/virtualMachineScaleSets/*",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/*",
          "Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action",
          "Microsoft.Network/*/read",
          "Microsoft.Network/locations/*/read",
          "Microsoft.Network/networkInterfaces/read",
          "Microsoft.Network/networkInterfaces/write",
          "Microsoft.Network/networkInterfaces/delete",
          "Microsoft.Network/networkInterfaces/join/action",
          "Microsoft.Network/networkSecurityGroups/read",
          "Microsoft.Network/networkSecurityGroups/write",
          "Microsoft.Network/networkSecurityGroups/delete",
          "Microsoft.Network/networkSecurityGroups/join/action",
          "Microsoft.Network/publicIPAddresses/read",
          "Microsoft.Network/publicIPAddresses/write",
          "Microsoft.Network/publicIPAddresses/delete",
          "Microsoft.Network/publicIPAddresses/join/action",
          "Microsoft.Network/register/action",
          "Microsoft.Network/virtualNetworks/read",
          "Microsoft.Network/virtualNetworks/subnets/read",
          "Microsoft.Network/virtualNetworks/subnets/join/action",
          "Microsoft.Resources/deployments/read",
          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Resources/subscriptions/resourceGroups/resources/read",
          "Microsoft.Resources/subscriptions/operationresults/read",
          "Microsoft.Storage/*/read",
          "Microsoft.Storage/checknameavailability/read",
          "Microsoft.Storage/register/action",
          "Microsoft.Storage/storageAccounts/read",
          "Microsoft.Storage/storageAccounts/listKeys/action",
          "Microsoft.Storage/storageAccounts/write"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "Name": "CycleCloud",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
}

Importante

El uso de un rol personalizado requiere una licencia de Azure AD Premium P1. Para encontrar la licencia adecuada para sus requisitos, consulte Comparación de las características disponibles con carácter general de las ediciones Free, Basic y Premium.

Permisos opcionales

Para permitir que CycleCloud asigne identidades administradas a las máquinas virtuales que crea dentro de los clústeres, agregue lo siguiente "actions":

          "Microsoft.Authorization/*/read",
          "Microsoft.Authorization/roleAssignments/*",
          "Microsoft.Authorization/roleDefinitions/*",

Para habilitar CycleCloud para crear y administrar grupos de recursos por clúster (recomendado, si lo permite la directiva), agregue lo siguiente "actions":

          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Resources/subscriptions/resourceGroups/write",
          "Microsoft.Resources/subscriptions/resourceGroups/delete",

Creación del rol

Se puede crear un rol a partir de las definiciones de roles a través de la CLI de Azure . Use este rol para crear una definición de rol dentro del inquilino de Azure. Una vez que el rol existe en el inquilino, asigne el rol a una identidad con el ámbito adecuado.

A continuación se muestra el flujo básico mediante la CLI de Azure.

# Create a custom role definition
az role definition create --role-definition role.json
# Create user identity
az identity create --name <name>
# Assign the custom role to the identity with proper scope
az role assignment create --role <CycleCloudRole> --assignee-object-id <identity-id> --scope <subscription>

Ahora el rol personalizado se asigna y tiene ámbito a la identidad y se puede usar con una máquina virtual.

Asignación de roles a máquinas virtuales de clúster con identidad administrada

Es habitual que los nodos de clúster requieran acceso a los recursos de Azure. Por ejemplo, muchos clústeres requieren acceso a Azure Storage, Key Vault o Azure Container Registries para ejecutar su carga de trabajo. Se recomienda encarecidamente pasar las credenciales de acceso necesarias mediante una identidad administrada asignada por el usuario en lugar de pasar secretos o credenciales al nodo a través de la configuración del clúster.

User-Assigned identidades administradas se pueden configurar en las máquinas virtuales del clúster mediante la Azure.Identities propiedad node. El valor de la Azure.Identities propiedad es una lista separada por comas de cadenas de identificador de recurso de identidad administrada:

[cluster sample]
...
    [[node defaults]]
    ...
    Azure.Identities = $ManagedServiceIdentity
...

[parameters Required Settings]
...
  [[parameter ManagedServiceIdentity]]
  ParameterType = Azure.ManagedIdentity
  Label = MSI Identity
  Description = The resource ID of the Managed Service Identity to apply to the nodes
...