Sdílet prostřednictvím


Použití spravovaných identit

Azure AD spravované identity je možné použít k oprávnění Azure CycleCloud ke správě clusterů ve vašem předplatném (jako alternativu k použití instančního objektu). Je také možné je přiřadit k virtuálním počítačům CycleCloud, které poskytují přístup k prostředkům Azure (jako je Storage, Key Vault nebo Azure Container Registry).

Oprávnění virtuálního počítače CycleCloud se spravovanou identitou

CycleCloud automatizuje mnoho volání azure Resource Manager pro účely správy clusterů HPC. Tato automatizace vyžaduje, aby byla službě CycleCloud udělena určitá oprávnění. Tento přístup je možné udělit službě CycleCloud konfigurací instančního objektu nebo přiřazením spravované identity k virtuálnímu počítači CycleCloud.

K udělení těchto oprávnění se obecně doporučuje použít spravovanou identitupřiřazenou systémem nebo uživatelem místo instančního objektu.

Pokud je Azure CycleCloud nainstalovaný na virtuální počítač Azure s přiřazenou spravovanou identitou, bude se dialogové okno Vytvořit účet poskytovatele cloudu chovat trochu jinak. Pro spravovanou identitu se zobrazí nové zaškrtávací políčko a ID předplatného se předvyplní předplatným hostitelského virtuálního počítače.

Přidání spravovaných identit předplatného

Přidání spravovaných identit předplatného

Standardní sadu přihlašovacích údajů je stále možné zadat zrušením zaškrtnutí políčka Spravovaná identita . Po provedení této akce se standardní pole přidají do formuláře. Navíc je naprosto přijatelné použít samostatné ID předplatného. poskytnutá hodnota je jen pro pohodlí.

Vytvoření vlastní role a spravované identity pro CycleCloud

Nejjednodušší možností (s dostatečnými přístupovými právy) je přiřadit k virtuálnímu počítači CycleCloud roli přispěvatele předplatného jako System-Assigned spravovanou identitu. Role Přispěvatel má ale vyšší úroveň oprávnění, než vyžaduje CycleCloud. Virtuálnímu počítači se může vytvořit vlastní role a přiřadit ji.

Dostatečná zásada pro většinu funkcí CycleCloudu je zveřejněny níže.

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

Důležité

Použití vlastní role vyžaduje licenci Azure AD Premium P1. Pokud chcete najít správnou licenci pro vaše požadavky, přečtěte si článek Porovnání obecně dostupných funkcí edic Free, Basic a Premium.

Volitelná oprávnění

Pokud chcete službě CycleCloud povolit přiřazování spravovaných identit virtuálním počítačům, které vytvoří v rámci clusterů, přidejte následující "actions":

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

Pokud chcete službě CycleCloud povolit vytváření a správu skupin prostředků pro jednotlivé clustery (doporučeno, pokud to zásady povolují), přidejte následující "actions":

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

Vytvoření role

Roli je možné vytvořit z definic rolí prostřednictvím Azure CLI . Tuto roli použijte k vytvoření definice role v rámci tenanta Azure. Jakmile role v tenantovi existuje, přiřaďte ji identitě se správným oborem.

Níže je základní tok pomocí 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>

Teď se identitě přiřadí vlastní role, která je vymezená a dá se použít s virtuálním počítačem.

Přiřazování rolí virtuálním počítačům clusteru se spravovanou identitou

Je běžné, že uzly clusteru vyžadují přístup k prostředkům Azure. Mnoho clusterů například ke spouštění úloh vyžaduje přístup ke službě Azure Storage, Key Vault nebo Azure Container Registryies. Důrazně doporučujeme předávat požadované přístupové přihlašovací údaje pomocí spravované identity přiřazené uživatelem místo předávání tajných kódů nebo přihlašovacích údajů uzlu prostřednictvím konfigurace clusteru.

User-Assigned spravované identity je možné na virtuálních počítačích clusteru nakonfigurovat pomocí Azure.Identities vlastnosti node. Hodnota Azure.Identities vlastnosti je čárkami oddělený seznam řetězců ID prostředků spravované identity:

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