Compartir a través de


Uso de identidades administradas

Use identidades administradas de Microsoft Entra para conceder permiso a Azure CycleCloud para administrar clústeres de su suscripción. Este enfoque sirve como alternativa al uso de un principal de servicio. Asigne identidades administradas a máquinas virtuales de CycleCloud para proporcionar acceso a 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 necesita determinados permisos para CycleCloud. Puede conceder a CycleCloud este acceso configurando una entidad de servicio o asignando una identidad administrada a la máquina virtual CycleCloud.

Se recomienda usar una Identidad administrada asignada por el sistema o Identidad administrada asignada por el usuario para conceder estos permisos en lugar de una entidad de servicio.

Al instalar Azure CycleCloud en una máquina virtual de Azure y asignar una identidad administrada a la máquina virtual, el cuadro de diálogo Agregar suscripción funciona de forma ligeramente diferente. El cuadro de diálogo habilita y preselecciona la opción de autenticación de identidad administrada . También rellena el identificador de suscripción con la suscripción de la máquina virtual host.

Agregar Identidades Administradas de Suscripción

Agregar Identidades Administradas de Suscripción

Todavía puede escribir el conjunto estándar de credenciales seleccionando la opción de autenticación Registro de aplicaciones. Al seleccionar esta opción, los campos estándar aparecen en el formulario. También puede usar otro identificador de suscripción; el valor proporcionado es solo para mayor comodidad.

Cuando use una identidad administrada asignada por el sistema, deje el campo ClientID en blanco. Pero cuando utilice CycleCloud con una identidad administrada de User-Assigned, configure el ClientID al ClientID de la identidad administrada específica que desea para la orquestación del clúster.

Acceso al almacén de almacenamiento

Además de usar una identidad administrada para la orquestación de clústeres en la máquina virtual CycleCloud, puede configurar CycleCloud para asignar una identidad administrada asignada por el usuario a clústeres para el acceso de la cuenta de almacenamiento y el acceso de la caja de seguridad desde los nodos del clúster. Este enfoque usa la identidad administrada asignada por el usuario en lugar de los tokens de SAS derivados de la clave de acceso compartido de la cuenta de almacenamiento.

Para configurar clústeres para que usen una identidad administrada asignada por el usuario en lugar de la clave de acceso compartido, cree una identidad administrada asignada por el usuario dedicada con el acceso lector de datos de Storage Blob en el ámbito de la cuenta de almacenamiento. En primer lugar, cree la cuenta de almacenamiento y la identidad administrada asignada por el usuario en la suscripción de Azure. A continuación, en la sección Configuración de Storage Locker del cuadro de diálogo Agregar suscripción , seleccione la nueva identidad administrada en la lista desplegable Identidad de Locker y la cuenta de almacenamiento en la lista desplegable Cuenta de almacenamiento .

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

La opción más sencilla que proporciona derechos de acceso suficientes es asignar los roles Contributor y Storage Blob Data Contributor de la suscripción a la VM de CycleCloud como una identidad administrada asignada por el sistema. Sin embargo, el Contributor rol tiene un nivel de privilegio más alto que CycleCloud requiere. Puede crear y asignar un rol personalizado a la máquina virtual. Del mismo modo, asigne el rol Storage Blob Data Contributor en el ámbito de la cuenta de almacenamiento en lugar del ámbito de la suscripción si ya ha creado la cuenta de almacenamiento.

Este rol cubre todas las características de CycleCloud:

{
    "assignableScopes": [
      "/subscriptions/<SubscriptionId>"
    ],
    "description": "CycleCloud Orchestrator Role",
    "permissions": [
      {
        "actions": [
          "Microsoft.Authorization/*/read",
          "Microsoft.Authorization/roleAssignments/*",
          "Microsoft.Authorization/roleDefinitions/*",
          "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/*/read",
          "Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action",
          "Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read",
          "Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write",
          "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/write",
          "Microsoft.Resources/subscriptions/resourceGroups/delete",
          "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/blobServices/containers/delete",
          "Microsoft.Storage/storageAccounts/blobServices/containers/read",
          "Microsoft.Storage/storageAccounts/blobServices/containers/write",
          "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action",
          "Microsoft.Storage/storageAccounts/read",
          "Microsoft.Storage/storageAccounts/listKeys/action",
          "Microsoft.Storage/storageAccounts/write"
        ],
        "dataActions": [
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete",
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read",
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write",
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action",
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action"
        ],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "Name": "CycleCloud <SubscriptionId>",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
}

Asegúrese de reemplazar <SubscriptionId> por el identificador de suscripción. Puede limitar este rol a una suscripción, pero puede limitarlo a un único grupo de recursos si lo prefiere. El nombre debe ser único para el inquilino.

Importante

Para usar un rol personalizado, necesita una licencia de Microsoft Entra ID P1. Para obtener más información sobre las licencias, consulte Planes y precios de Microsoft Entra.

Permisos opcionales

Si está configurando el ámbito de CycleCloud para usar un único grupo de recursos para cada clúster, puede eliminar los siguientes permisos de actions:

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

Si no usa CycleCloud para asignar identidades administradas a las máquinas virtuales que crea en clústeres, puede quitar los permisos siguientes de actions:

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

Advertencia

Las versiones futuras de CycleCloud requieren la capacidad de asignar identidades administradas a máquinas virtuales. No se recomienda quitar estos permisos.

Creación del rol

Puede crear un rol a partir de las definiciones de roles mediante la CLI de Azure. Utilice este rol para crear una definición de un rol en el tenant de Azure. Cuando el rol existe en el arrendatario, asigne el rol a una identidad con el alcance adecuado.

En el ejemplo siguiente 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 se limita a la identidad. Puede usarlo con una máquina virtual.

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

A menudo, los nodos de clúster necesitan 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 usar una identidad administrada deUser-Assigned para proporcionar credenciales de acceso en lugar de pasar secretos o credenciales al nodo a través de la configuración del clúster.

Puede configurar identidades administradas asignadas por el usuario en las máquinas virtuales del clúster mediante la Azure.Identities propiedad node. Configure la propiedad Azure.Identities a una lista, separada por comas, de cadenas de identificadores de recursos de identidades administradas:

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