Delen via


Beheerde identiteiten gebruiken

Azure AD Beheerde identiteiten kunnen worden gebruikt om Azure CycleCloud toestemming te geven voor het beheren van clusters in uw abonnement (als alternatief voor het gebruik van een service-principal). Ze kunnen ook worden toegewezen aan CycleCloud-VM's om toegang te bieden tot Azure-resources (zoals Storage, Key Vault of Azure Container Registries).

CycleCloud VM-machtigingen met beheerde identiteit

CycleCloud automatiseert veel aanroepen naar de Azure Resource Manager voor het beheren van HPC-clusters. Voor deze automatisering moeten bepaalde machtigingen worden verleend aan CycleCloud. Deze toegang kan worden verleend aan CycleCloud door een service-principal te configureren of door een beheerde identiteit toe te wijzen aan de CycleCloud-VM.

Het wordt over het algemeen aanbevolen om een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit te gebruiken om deze machtigingen te verlenen in plaats van een service-principal.

Wanneer Azure CycleCloud is geïnstalleerd op een Virtuele Azure-machine waaraan een beheerde identiteit is toegewezen, gedraagt het dialoogvenster Cloudprovideraccount maken zich iets anders. Er is een nieuw selectievakje voor beheerde identiteit en de abonnements-id wordt vooraf ingevuld met het abonnement van de host-VM.

Beheerde identiteiten voor abonnementen toevoegen

Beheerde identiteiten voor abonnementen toevoegen

Het is nog steeds mogelijk om de standaardset met referenties in te voeren door het selectievakje Beheerde identiteit uit te schakelen. Wanneer u dit doet, worden de standaardvelden toegevoegd aan het formulier. Daarnaast is het volkomen acceptabel om een afzonderlijke abonnements-id te gebruiken; de opgegeven waarde is alleen voor het gemak.

Een aangepaste rol en beheerde identiteit maken voor CycleCloud

De eenvoudigste optie (met voldoende toegangsrechten) is het toewijzen van de rol Inzender voor het abonnement aan de CycleCloud-VM als een System-Assigned beheerde identiteit. De rol Inzender heeft echter een hoger bevoegdheidsniveau dan CycleCloud vereist. Er kan een aangepaste rol worden gemaakt en toegewezen aan de VM.

Hieronder vindt u een voldoende beleid voor de meeste CycleCloud-functies.

{
    "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"
}

Belangrijk

Voor het gebruik van een aangepaste rol is een Azure AD Premium P1 licentie vereist. Als u de juiste licentie voor uw vereisten wilt vinden, raadpleegt u Algemeen beschikbare functies van de edities Free, Basic en Premium vergelijken.

Optionele machtigingen

Als u CycleCloud wilt inschakelen om beheerde identiteiten toe te wijzen aan vm's die binnen clusters worden gemaakt, voegt u het volgende "actions"toe:

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

Als u CycleCloud wilt inschakelen voor het maken en beheren van resourcegroepen per cluster (aanbevolen, indien toegestaan door beleid), voegt u het volgende "actions"toe:

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

De rol maken

Een rol kan worden gemaakt op basis van de roldefinities via de Azure CLI . Gebruik deze rol om een roldefinitie te maken binnen de Azure-tenant. Zodra de rol in de tenant bestaat, wijst u de rol toe aan een identiteit met het juiste bereik.

Hieronder ziet u de basisstroom met behulp van de 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>

De aangepaste rol wordt nu toegewezen aan de identiteit en het bereik ervan is toegewezen en kan worden gebruikt met een VM.

Rollen toewijzen aan cluster-VM's met beheerde identiteit

Het is gebruikelijk dat clusterknooppunten toegang tot Azure-resources vereisen. Veel clusters hebben bijvoorbeeld toegang nodig tot Azure Storage, Key Vault of Azure Container Registries om hun workload uit te voeren. Het wordt sterk aanbevolen om de vereiste toegangsreferenties door te geven met behulp van een door de gebruiker toegewezen beheerde identiteit in plaats van geheimen/referenties door te geven aan het knooppunt via clusterconfiguratie.

User-Assigned Beheerde identiteiten kunnen worden geconfigureerd op de cluster-VM's met behulp van de Azure.Identities knooppunteigenschap. De waarde van de Azure.Identities eigenschap is een door komma's gescheiden lijst met beheerde identiteitsresource-id-tekenreeksen:

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