Dela via


Använda hanterade identiteter

Azure AD-hanterade identiteter kan användas för att ge Azure CycleCloud behörighet att hantera kluster i din prenumeration (som ett alternativ till att använda ett tjänstens huvudnamn). De kan också tilldelas till virtuella CycleCloud-datorer för att ge åtkomst till Azure-resurser (till exempel Storage, Key Vault eller Azure Container Registries).

CycleCloud VM-behörigheter med hanterad identitet

CycleCloud automatiserar många anrop till Azure Resource Manager i syfte att hantera HPC-kluster. Den här automatiseringen kräver att vissa behörigheter beviljas CycleCloud. Den här åtkomsten kan beviljas CycleCloud genom att konfigurera ett huvudnamn för tjänsten eller genom att tilldela en hanterad identitet till den virtuella CycleCloud-datorn.

Vi rekommenderar vanligtvis att du använder antingen en systemtilldelad eller User-Assigned hanterad identitet för att bevilja dessa behörigheter i stället för ett tjänsthuvudnamn.

När Azure CycleCloud har installerats på en virtuell Azure-dator med en tilldelad hanterad identitet fungerar dialogrutan Skapa molnleverantörskonto något annorlunda. Det kommer att finnas en ny kryssruta för hanterad identitet och prenumerations-ID fylls i i förväg med prenumerationen på den virtuella värddatorn.

Lägg till prenumerationshanterade identiteter

Lägg till prenumerationshanterade identiteter

Det går fortfarande att ange standarduppsättningen med autentiseringsuppgifter genom att helt enkelt avmarkera kryssrutan hanterad identitet. När du gör det läggs standardfälten till i formuläret. Dessutom är det helt acceptabelt att använda ett separat prenumerations-ID; det angivna värdet är bara för enkelhetens skull.

Skapa en anpassad roll och hanterad identitet för CycleCloud

Det enklaste alternativet (med tillräcklig åtkomstbehörighet) är att tilldela Deltagarrollen för prenumerationen till CycleCloud-VM:n som en System-Assigned-hanterad identitet. Deltagarrollen har dock en högre behörighetsnivå än vad CycleCloud kräver. En anpassad roll kan skapas och tilldelas till den virtuella datorn.

Den här rollen omfattar alla CycleCloud-funktioner:

{
    "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/*/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/read",
          "Microsoft.Storage/storageAccounts/listKeys/action",
          "Microsoft.Storage/storageAccounts/write"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "Name": "CycleCloud <SubscriptionId>",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
}

Ersätt <SubscriptionId> med ditt prenumerations-ID. Den här rollen är begränsad till en prenumeration, men den kan begränsas till en enskild resursgrupp om så önskas. Observera också att namnet måste vara unikt för klientorganisationen.

Viktig

Användning av en anpassad roll kräver en Microsoft Entra ID P1-licens. Information om hur du hittar rätt licens för dina krav finns i Microsoft Entra-planer och priser.

Valfria behörigheter

Om du omfångar CycleCloud för att använda en enskild resursgrupp per kluster kan du ta bort följande från actions:

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

Om du inte använder CycleCloud för att tilldela hanterade identiteter till virtuella datorer som skapas i kluster kan du ta bort följande från actions:

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

Varning

Framtida versioner av CycleCloud kräver möjligheten att tilldela hanterade identiteter till virtuella datorer, så att ta bort dessa behörigheter rekommenderas inte.

Skapa rollen

En roll kan skapas från rolldefinitionerna via Azure CLI- . Använd den här rollen för att skapa en rolldefinition i Azure-tenant. När rollen finns i klientorganisationen tilldelar du rollen till en identitet med rätt omfång.

Nedan visas det grundläggande flödet med hjälp av Azure CLI.

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

Nu är den anpassade rollen tilldelad och begränsad till identiteten och kan användas på en virtuell dator.

Tilldela roller till virtuella klusterdatorer med hanterad identitet

Det är vanligt att klusternoder kräver åtkomst till Azure-resurser. Många kluster kräver till exempel åtkomst till Azure Storage, Key Vault eller Azure Container Registries för att köra sin arbetsbelastning. Vi rekommenderar starkt att du skickar de åtkomstautentiseringsuppgifter som krävs med hjälp av en User-Assigned hanterad identitet i stället för att skicka hemligheter/autentiseringsuppgifter till noden via klusterkonfigurationen.

User-Assigned Hanterade identiteter kan konfigureras på de virtuella klusterdatorerna med nodens egenskap Azure.Identities. Värdet för egenskapen Azure.Identities är en kommaavgränsad lista över resurs-ID-strängar för hanterad identitet:

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