Delen via


Beheerde identiteiten gebruiken

Azure AD Managed Identities kan 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 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 Managed Identity- toe te wijzen aan de CycleCloud-VM.

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

Wanneer Azure CycleCloud is geïnstalleerd op een Azure-VM waaraan een beheerde identiteit is toegewezen, gedraagt het dialoogvenster Cloudprovideraccount maken zich iets anders. Er is een nieuw selectievakje voor Managed Identity- 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 referenties in te voeren door het selectievakje Managed Identity uit te schakelen. Als u dit doet, worden de standaardvelden toegevoegd aan het formulier. Daarnaast is het perfect 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 om de Contributor-rol voor het abonnement toe te wijzen aan de CycleCloud-VM als een System-Assigned beheerde identiteit. De rol Inzender heeft echter een hoger bevoegdheidsniveau dan CycleCloud vereist. Een aangepaste rol kan worden gemaakt en toegewezen aan de virtuele machine.

Deze rol omvat alle CycleCloud-functies:

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

Zorg ervoor dat u <SubscriptionId> vervangt door uw abonnements-id. Deze rol is gericht op een abonnement, maar kan worden beperkt tot één resourcegroep, indien gewenst. Houd er ook rekening mee dat de naam uniek moet zijn voor de tenant.

Belangrijk

Voor het gebruik van een aangepaste rol is een Microsoft Entra ID P1-licentie vereist. Zie Microsoft Entra-abonnementen en -prijzenom de juiste licentie voor uw vereisten te vinden.

Optionele machtigingen

Als u CycleCloud instelt om één resourcegroep per cluster te gebruiken, kunt u het volgende verwijderen uit actions:

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

Als u CycleCloud niet gebruikt om beheerde identiteiten toe te wijzen aan virtuele machines die in clusters worden gemaakt, kunt u het volgende verwijderen uit actions:

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

Waarschuwing

Voor toekomstige versies van CycleCloud is de mogelijkheid nodig om beheerde identiteiten toe te wijzen aan VM's. Daarom wordt het verwijderen van deze machtigingen niet aanbevolen.

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, wijs de rol toe aan een identiteit met de juiste reikwijdte.

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 is nu toegewezen en afgestemd op de identiteit 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-registers om hun workload uit te voeren. Het wordt sterk aanbevolen om de toegangsreferenties door te geven die zijn vereist met behulp van een User-Assigned Managed Identity 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 knooppunt eigenschap Azure.Identities. De waarde van de eigenschap Azure.Identities is een door komma's gescheiden lijst met resource-id's voor beheerde identiteit:

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