Verwenden von verwalteten Identitäten
Verwaltete Azure AD-Identitäten können verwendet werden, um Azure CycleCloud zum Verwalten von Clustern in Ihrem Abonnement zu gestatten (als Alternative zur Verwendung eines Dienstprinzipals). Sie können auch CycleCloud-VMs zugewiesen werden, um Zugriff auf Azure-Ressourcen (z. B. Speicher, Key Vault oder Azure-Containerregistrierungen) zu ermöglichen.
CycleCloud-VM-Berechtigungen mit verwalteter Identität
CycleCloud automatisiert viele Aufrufe der Azure-Resource Manager zum Verwalten von HPC-Clustern. Für diese Automatisierung müssen CycleCloud bestimmte Berechtigungen erteilt werden. Dieser Zugriff kann CycleCloud durch Konfigurieren eines Dienstprinzipals oder durch Zuweisen einer verwalteten Identität zur CycleCloud-VM gewährt werden.
Es wird im Allgemeinen empfohlen, entweder eine vom System zugewiesene oder eine benutzerseitig zugewiesene verwaltete Identität zu verwenden, um diese Berechtigungen anstelle eines Dienstprinzipals zu gewähren.
Wenn Azure CycleCloud auf einer Azure-VM installiert wurde, der eine verwaltete Identität zugewiesen ist, verhält sich das Dialogfeld Cloudanbieterkonto erstellen etwas anders. Es gibt ein neues Kontrollkästchen für verwaltete Identität , und die Abonnement-ID wird mit dem Abonnement der Host-VM vorab aufgefüllt.
Es ist weiterhin möglich, den Standardanmeldeinformationssatz einzugeben, indem Sie einfach das Kontrollkästchen Verwaltete Identität deaktivieren. Anschließend werden dem Formular die Standardfelder hinzugefügt. Darüber hinaus ist es durchaus akzeptabel, eine separate Abonnement-ID zu verwenden. Der angegebene Wert ist nur der Einfachheit halber.
Erstellen einer benutzerdefinierten Rolle und einer verwalteten Identität für CycleCloud
Die einfachste Option (mit ausreichenden Zugriffsrechten) besteht darin, der CycleCloud-VM die Rolle Mitwirkender für das Abonnement als System-Assigned verwaltete Identität zuzuweisen. Die Rolle "Mitwirkender" verfügt jedoch über eine höhere Berechtigungsstufe als CycleCloud erfordert. Es kann eine benutzerdefinierte Rolle erstellt und der VM zugewiesen werden.
Eine ausreichende Richtlinie für die meisten CycleCloud-Features finden Sie unten.
{
"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"
}
Wichtig
Für die Verwendung einer benutzerdefinierten Rolle ist eine Azure AD Premium P1 Lizenz erforderlich. Die richtige Lizenz für Ihre Anforderungen finden Sie unter Vergleich der allgemein verfügbaren Features der Editionen Free, Basic und Premium.
Optionale Berechtigungen
Fügen Sie Folgendes "actions"
hinzu, damit CycleCloud verwaltete Identitäten VMs zuweisen kann, die innerhalb von Clustern erstellt werden:
"Microsoft.Authorization/*/read",
"Microsoft.Authorization/roleAssignments/*",
"Microsoft.Authorization/roleDefinitions/*",
Fügen Sie Folgendes "actions"
hinzu, um CycleCloud das Erstellen und Verwalten von Ressourcengruppen pro Cluster zu aktivieren (empfohlen, sofern dies durch die Richtlinie zulässig ist):
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
Erstellen der Rolle
Eine Rolle kann aus den Rollendefinitionen über die Azure CLI erstellt werden. Verwenden Sie diese Rolle, um eine Rollendefinition innerhalb des Azure-Mandanten zu erstellen. Sobald die Rolle im Mandanten vorhanden ist, weisen Sie die Rolle einer Identität mit dem richtigen Bereich zu.
Im Folgenden finden Sie den grundlegenden Ablauf mithilfe der 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>
Die benutzerdefinierte Rolle ist nun der Identität zugewiesen und kann mit einem virtuellen Computer verwendet werden.
Zuweisen von Rollen zu Cluster-VMs mit verwalteter Identität
Es ist üblich, dass Clusterknoten Zugriff auf Azure-Ressourcen erfordern. Viele Cluster benötigen beispielsweise Zugriff auf Azure Storage, Key Vault oder Azure ContainerRegistries, um ihre Workload auszuführen. Es wird dringend empfohlen, die erforderlichen Zugriffsanmeldeinformationen mithilfe einer benutzerseitig zugewiesenen verwalteten Identität zu übergeben, anstatt Geheimnisse/Anmeldeinformationen über die Clusterkonfiguration an den Knoten zu übergeben.
User-Assigned verwaltete Identitäten können auf den Cluster-VMs mithilfe der Azure.Identities
node-Eigenschaft konfiguriert werden. Der Wert der Azure.Identities
-Eigenschaft ist eine durch Trennzeichen getrennte Liste von Zeichenfolgen für verwaltete Identitätsressourcen-ID:
[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
...