マネージド ID の使用
Azure AD マネージド ID は、(サービス プリンシパルを使用する代わりに) サブスクリプション内のクラスターを管理するために Azure CycleCloud にアクセス許可を付与するために使用できます。 また、Azure リソース (ストレージ、Key Vault、Azure Container Registries など) へのアクセスを提供するために、CycleCloud VM に割り当てることもできます。
マネージド ID を使用した CycleCloud VM のアクセス許可
CycleCloud では、HPC クラスターを管理するために、Azure Resource Manager への多くの呼び出しが自動化されます。 この自動化には、CycleCloud に特定のアクセス許可が付与されている必要があります。 このアクセス権を CycleCloud に付与するには、サービス プリンシパルを構成するか、マネージド ID を CycleCloud VM に割り当てます。
一般的には、サービス プリンシパルではなく、システム割り当て または User-Assigned マネージド ID を使用して、これらのアクセス許可を付与することをお勧めします。
マネージド ID が割り当てられた Azure VM に Azure CycleCloud がインストールされている場合、クラウド プロバイダー アカウントの作成 ダイアログの動作が若干異なります。 マネージド ID の新しいチェック ボックスが表示され、サブスクリプション ID にはホスト VM のサブスクリプションが事前に設定されます。
サブスクリプションマネージド ID の追加
サブスクリプションマネージド ID の追加
マネージド ID チェックボックスをオフにするだけで、標準の資格情報セットを入力することもできます。 この操作を行うと、標準フィールドがフォームに追加されます。 さらに、別の サブスクリプション IDを使用することは完全に許容されます。指定された値は便宜上のためだけに使用されます。
CycleCloud のカスタム ロールとマネージド ID を作成する
(十分なアクセス権を持つ) 最も簡単なオプションは、サブスクリプションの共同作成者ロールを、System-Assigned マネージド ID として CycleCloud VM に割り当てることです。 ただし、共同作成者ロールの特権レベルは、CycleCloud が必要とするよりも高くなります。 カスタム ロール を作成して VM に割り当てることができます。
このロールは、CycleCloud のすべての機能を対象とします。
{
"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"
}
<SubscriptionId>
は必ずサブスクリプション ID に置き換えてください。このロールのスコープはサブスクリプションですが、必要に応じて 1 つのリソース グループにスコープを設定できます。 また、名前はテナントに対して一意である必要があることにも注意してください。
大事な
カスタム ロールを使用するには、Microsoft Entra ID P1 ライセンスが必要です。 要件に適したライセンスを見つけるには、Microsoft Entra のプランと価格
オプションのアクセス許可
クラスターごとに 1 つのリソース グループを使用するように CycleCloud をスコープしている場合は、actions
から以下を削除できます。
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
CycleCloud を使用してクラスター内に作成する VM にマネージド ID を割り当てない場合は、次を actions
から削除できます。
"Microsoft.Authorization/*/read",
"Microsoft.Authorization/roleAssignments/*",
"Microsoft.Authorization/roleDefinitions/*",
警告
今後のバージョンの CycleCloud では、VM にマネージド ID を割り当てる機能が必要になるため、これらのアクセス許可を削除することはお勧めしません。
ロールの作成
ロールは、Azure CLI を使用してロール定義から作成できます。 このロールを使用して、Azure テナント内にロール定義を作成します。 テナントにロールが存在したら、適切なスコープを持つ ID にロールを割り当てます。
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>
これで、カスタム ロールが割り当てられ、ID にスコープが設定され、VM で使用できるようになります。
マネージド ID を使用したクラスター VM へのロールの割り当て
クラスター ノードでは、Azure リソースへのアクセスが必要なのが一般的です。 たとえば、多くのクラスターでは、ワークロードを実行するために Azure Storage、Key Vault、または Azure Container Registries へのアクセスが必要です。 クラスター構成を使用してノードにシークレット/資格情報を渡すのではなく、User-Assigned マネージド ID を使用して必要なアクセス資格情報を渡すことを強くお勧めします。
User-Assigned マネージド ID は、Azure.Identities
ノード プロパティを使用してクラスター VM で構成できます。
Azure.Identities
プロパティの値は、マネージド ID リソース 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
...