使用受控識別
Azure AD 受控識別可用來讓 Azure CycleCloud 管理訂用帳戶中的叢集, (作為使用 服務主體) 的替代方案。 它們也可以指派給 CycleCloud VM,以提供 Azure 資源的存取權, (例如儲存體、金鑰保存庫或 Azure Container Registries) 。
使用受控識別的 CycleCloud VM 許可權
CycleCloud 會針對管理 HPC 叢集的目的,將 Azure Resource Manager的許多呼叫自動化。 此自動化需要將特定許可權授與 CycleCloud。 此存取權可藉由設定服務主體或將 受控識別 指派給 CycleCloud VM 來授與 CycleCloud。
通常建議使用 系統指派 或 使用者指派的受控識別 來授與這些許可權,而不是服務主體。
當 Azure CycleCloud 安裝在已指派受控識別的 Azure VM 上時,[ 建立雲端提供者帳戶 ] 對話方塊的行為會稍有不同。 受控 識別 會有新的核取方塊,且訂用帳戶 識別碼會預先 填入主機 VM 的訂用帳戶。
只要取消核取 [ 受控識別 ] 核取方塊,仍然可以輸入標準認證集。 這麼做之後,標準欄位將會新增至表單。 此外,使用個別的訂用帳戶 識別碼是完全可接受的;提供的 值只是為了方便起見。
建立 CycleCloud 的自訂角色和受控識別
具有足夠存取權限 (最簡單的選項) 是將訂用帳戶的參與者角色指派給 CycleCloud VM 作為 System-Assigned 受控識別。 不過,參與者角色具有高於 CycleCloud 所需的許可權等級。 自訂 角色 可以建立並指派給 VM。
以下張貼了適用于大部分 CycleCloud 功能的足夠原則。
{
"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"
}
重要
使用自訂角色需要Azure AD Premium P1授權。 若要尋找您需求的正確授權,請參閱 比較免費、基本和 Premium 版本的一般可用功能。
選擇性許可權
若要讓 CycleCloud 將受控識別指派給它在叢集內建立的 VM,請新增下列 "actions"
專案:
"Microsoft.Authorization/*/read",
"Microsoft.Authorization/roleAssignments/*",
"Microsoft.Authorization/roleDefinitions/*",
若要讓 CycleCloud 建立和管理每個叢集的資源群組 (建議,如果原則) 允許,請新增下列 "actions"
專案:
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
建立角色
您可以透過 Azure CLI 從角色定義建立角色。 使用此角色在 Azure 租使用者內建立角色定義。 一旦角色存在於租使用者中,請將角色指派給具有適當範圍的身分識別。
以下是使用 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>
現在自訂角色已指派並限定于身分識別,並可搭配 VM 使用。
使用受控識別將角色指派給叢集 VM
叢集節點通常需要存取 Azure 資源。 例如,許多叢集都需要存取 Azure 儲存體、金鑰保存庫或 Azure Container Registry,才能執行其工作負載。 強烈建議使用 使用者指派的受控識別 來傳遞所需的存取認證,而不是透過叢集組態將秘密/認證傳遞至節點。
User-Assigned 受控識別可以使用 node 屬性在叢集 VM Azure.Identities
上設定。 屬性的值 Azure.Identities
是受控識別資源識別碼字串的逗號分隔清單:
[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
...