Microsoft Entra 관리 ID를 사용하여 구독에서 클러스터를 관리할 수 있는 Azure CycleCloud 권한을 부여합니다. 이 방법은 서비스 주체를 사용하는 대신 사용됩니다. 관리 ID를 CycleCloud VM에 할당하여 Storage, Key Vault 또는 Azure Container Registries와 같은 Azure 리소스에 대한 액세스를 제공합니다.
관리 ID로 관리되는 CycleCloud VM 권한
CycleCloud는 HPC 클러스터를 관리하기 위해 Azure Resource Manager에 대한 많은 호출을 자동화합니다. 이 자동화에는 CycleCloud에 대한 특정 권한이 필요합니다. 서비스 주체를 설정하거나 관리 ID 를 CycleCloud VM에 할당하여 CycleCloud에 이 액세스 권한을 부여할 수 있습니다.
서비스 주체 대신 시스템 할당 또는 User-Assigned 관리 ID 를 사용하여 이러한 권한을 부여하는 것이 좋습니다.
Azure VM에 Azure CycleCloud를 설치하고 관리 ID를 VM에 할당하면 구독 추가 대화 상자가 약간 다르게 작동합니다. 이 대화 상자는 관리 ID 인증 옵션을 사용하도록 설정하고 미리 선택합니다. 또한 호스트 VM의 구독 정보로 구독 ID를 채웁니다.
추가
추가
앱 등록 인증 옵션을 선택하여 표준 자격 증명 집합을 계속 입력할 수 있습니다. 이 옵션을 선택하면 표준 필드가 양식에 표시됩니다. 다른 구독 ID를 사용할 수도 있습니다. 제공된 값은 편의를 위한 것입니다.
시스템 할당 관리 ID를 사용하는 경우 ClientID 필드를 비워 둡니다. 그러나 User-Assigned 관리 ID와 함께 CycleCloud를 사용하는 경우 ClientID를 클러스터 오케스트레이션에 원하는 특정 관리 ID의 ClientID로 설정합니다.
스토리지 보관 액세스
CycleCloud VM에서 클러스터 오케스트레이션에 관리 ID를 사용하는 것 외에도 스토리지 계정 및 클러스터 노드에서의 보관 액세스를 위해 클러스터에 사용자 할당 관리 ID를 할당하도록 CycleCloud를 구성할 수 있습니다. 이 방법은 스토리지 계정의 공유 액세스 키에서 파생된 SAS 토큰 대신 사용자 할당 관리 ID를 사용합니다.
공유 액세스 키가 아닌 사용자 할당 관리 ID를 사용하도록 클러스터를 구성하려면 스토리지 계정 범위에서 Storage Blob Data Reader 액세스 권한이 있는 전용 사용자 할당 관리 ID를 만듭니다. 먼저 Azure 구독에서 스토리지 계정 및 사용자 할당 관리 ID를 만듭니다. 그런 다음 구독 추가 대화 상자의 Storage Locker 구성 섹션에서 Locker ID 드롭다운에서 새 관리 ID를 선택하고 스토리지 계정 드롭다운에서 스토리지 계정을 선택합니다.
CycleCloud에 대한 사용자 지정 역할 및 관리 ID 만들기
가장 간단한 옵션으로는 충분한 액세스 권한을 제공하기 위해 CycleCloud VM에 대해 Contributor
및 Storage Blob Data Contributor
역할을 구독 및 시스템 할당 관리형 ID로 지정하는 것입니다. 그러나 Contributor
역할에는 CycleCloud에 필요한 것보다 높은 권한 수준이 있습니다. VM에 사용자 지정 역할을 만들고 할당할 수 있습니다. 마찬가지로, 스토리지 계정을 이미 만든 경우 구독 범위가 아닌 스토리지 계정 범위에서 역할을 할당 Storage Blob Data Contributor
합니다.
이 역할은 모든 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/*/read",
"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/blobServices/containers/delete",
"Microsoft.Storage/storageAccounts/blobServices/containers/read",
"Microsoft.Storage/storageAccounts/blobServices/containers/write",
"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/write"
],
"dataActions": [
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action"
],
"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 를 사용하여 액세스 자격 증명을 제공하는 것이 좋습니다.
노드 속성을 사용하여 클러스터 VM에서 사용자 할당 관리 ID를 Azure.Identities
구성할 수 있습니다. 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
...