관리 ID 사용
Azure AD 관리 ID는 Azure CycleCloud가 귀하의 구독에서 클러스터를 관리할 수 있도록 권한을 부여하는 데 사용할 수 있습니다(이는 서비스 주체을 사용하는 대신입니다). 또한 Azure 리소스(예: 스토리지, Key Vault 또는 Azure Container Registries)에 대한 액세스를 제공하기 위해 CycleCloud VM에 할당될 수 있습니다.
관리되는 ID를 사용하는 CycleCloud VM 권한
CycleCloud는 HPC 클러스터를 관리하기 위해 Azure Resource Manager에 대한 많은 호출을 자동화합니다. 이 자동화를 수행하려면 CycleCloud에 특정 권한을 부여해야 합니다. 서비스 주체를 구성하거나 CycleCloud VM에 관리 ID를 할당하여 이 액세스 권한을 CycleCloud에 부여할 수 있습니다.
일반적으로 서비스 주체 대신 시스템 할당 또는 User-Assigned 관리 ID를 사용하여 해당 권한을 부여하는 것이 좋습니다.
관리 ID가 할당된 Azure VM에 Azure CycleCloud가 설치되면 클라우드 공급자 계정 만들기 대화 상자가 약간 다르게 작동합니다. 관리 ID 대한 새 확인란이 있으며 구독 ID 호스트 VM의 구독으로 미리 채워집니다.
추가
추가
관리 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로 바꾸어야 합니다. 이 역할은 구독에 걸쳐 범위가 지정되지만, 선호하는 경우 단일 리소스 그룹으로 범위를 지정할 수 있습니다. 또한 이름은 테넌트에 고유해야 합니다.
중요하다
사용자 지정 역할을 사용하려면 Microsoft Entra ID P1 라이선스가 필요합니다. 요구 사항에 적합한 라이선스를 찾으려면 Microsoft Entra 플랜 및 가격 책정참조하세요.
선택적 사용 권한
클러스터당 단일 리소스 그룹을 사용하도록 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
...