범위 는 액세스가 적용되는 리소스 집합입니다. 역할을 할당할 때 보안 주체에게 실제로 필요한 액세스 권한만 부여할 수 있도록 범위를 이해하는 것이 중요합니다. 범위를 제한하여 보안 주체가 손상된 경우 위험에 처한 리소스를 제한합니다.
범위 수준
Azure에서는 관리 그룹, 구독, 리소스 그룹 및 리소스의 네 가지 수준에서 범위를 지정할 수 있습니다. 범위는 부모-자식 관계에서 구성됩니다. 계층 구조의 각 수준은 범위를 보다 구체적으로 만듭니다. 이러한 범위 수준에서 역할을 할당할 수 있습니다. 선택한 수준에 따라 역할이 적용되는 범위가 결정됩니다. 하위 수준은 상위 수준에서 역할 권한을 상속합니다.
관리 그룹은 구독보다 범위 수준이 높지만 관리 그룹은 더 복잡한 계층 구조를 지원합니다. 다음 다이어그램에서는 정의할 수 있는 관리 그룹 및 구독 계층 구조의 예를 보여 줍니다. 관리 그룹에 대한 자세한 내용은 Azure 관리 그룹이란?을 참조하세요.
범위 형식
명령줄을 사용하여 역할을 할당하는 경우 범위를 지정해야 합니다. 명령줄 도구의 경우 범위는 역할 할당의 정확한 범위를 식별하는 잠재적으로 긴 문자열입니다. Azure Portal에서 이 범위는 일반적으로 리소스 ID로 나열됩니다.
범위는 슬래시(/) 문자로 구분된 일련의 식별자로 구성됩니다. 이 문자열은 자리 표시자({})가 없는 텍스트가 고정 식별자인 다음 계층 구조를 표현하는 것으로 생각할 수 있습니다.
/subscriptions
/{subscriptionId}
/resourcegroups
/{resourceGroupName}
/providers
/{providerName}
/{resourceType}
/{resourceSubType1}
/{resourceSubType2}
/{resourceName}
-
{subscriptionId}은 사용할 구독의 ID(GUID)입니다. -
{resourceGroupName}은 포함하는 리소스 그룹의 이름입니다. -
{providerName}는 리소스를 처리한 다음{resourceType}해당{resourceSubType*}내에서 추가 수준을 식별하는 리소스 공급자의 이름입니다. -
{resourceName}는 특정 리소스를 식별하는 문자열의 마지막 부분입니다.
관리 그룹은 구독보다 높은 수준이며 가장 광범위한(최소 특정) 범위를 가집니다. 이 수준의 역할 할당은 관리 그룹 내의 구독에 적용됩니다. 관리 그룹의 범위는 다음과 같은 형식입니다.
/providers
/Microsoft.Management
/managementGroups
/{managementGroupName}
범위 사례
| Scope | Example |
|---|---|
| 관리 그룹 | /providers/Microsoft.Management/managementGroups/marketing-group |
| Subscription | /subscriptions/00000000-0000-0000-0000-000000000000 |
| 리소스 그룹 | /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg |
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales |
|
| Resource | /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01 |
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVirtualNetwork12345 |
리소스의 범위를 확인하는 방법
관리 그룹, 구독 또는 리소스 그룹의 범위를 확인하는 것은 매우 간단합니다. 이름 및 구독 ID만 알아야 합니다. 그러나 리소스의 범위를 결정하는 데는 좀 더 많은 작업이 필요합니다. 리소스의 범위를 확인할 수 있는 몇 가지 방법은 다음과 같습니다.
Azure Portal에서 리소스를 열고 속성을 확인합니다. 리소스는 범위를 확인할 수 있는 리소스 ID 를 나열해야 합니다. 예를 들어 스토리지 계정에 대한 리소스 ID는 다음과 같습니다.
또 다른 방법은 Azure Portal을 사용하여 리소스 범위에서 일시적으로 역할을 할당한 다음 , Azure PowerShell 또는 Azure CLI 를 사용하여 역할 할당을 나열하는 것입니다. 출력에서 범위는 속성으로 나열됩니다.
RoleAssignmentId : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/pro viders/Microsoft.Authorization/roleAssignments/<roleAssignmentId> Scope : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01 DisplayName : User SignInName : user@contoso.com RoleDefinitionName : Storage Blob Data Reader RoleDefinitionId : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1 ObjectId : <principalId> ObjectType : User CanDelegate : False Description : ConditionVersion : Condition :{ "canDelegate": null, "condition": null, "conditionVersion": null, "description": null, "id": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}", "name": "{roleAssignmentId}", "principalId": "{principalId}", "principalName": "user@contoso.com", "principalType": "User", "resourceGroup": "test-rg", "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1", "roleDefinitionName": "Storage Blob Data Reader", "scope": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01", "type": "Microsoft.Authorization/roleAssignments" }
범위 및 ARM 템플릿
역할 할당은 확장 리소스라는 Azure Resource Manager의 특수한 유형입니다. 확장 리소스는 다른 리소스의 기능에 추가하는 리소스입니다. 항상 다른 리소스의 확장(예: 자식)으로 존재합니다. 예를 들어 구독 범위의 역할 할당은 구독의 확장 리소스입니다. 역할 할당의 이름은 항상 확장 중인 리소스의 이름과 더하기 /Microsoft.Authorization/roleAssignments/{roleAssignmentId}입니다. ARM 템플릿(Azure Resource Manager 템플릿)을 사용하여 역할을 할당하는 경우 일반적으로 범위를 제공할 필요가 없습니다. 그 이유는 범위 필드가 항상 확장 중인 리소스의 ID가 되기 때문입니다. 범위는 역할 할당 자체의 ID에서 확인할 수 있습니다. 다음 표에서는 역할 할당 ID 및 해당 범위의 예를 보여 줍니다.
| 역할 할당 ID | Scope |
|---|---|
/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} |
/subscriptions/{subscriptionId} |
/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} |
/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg |
범위 및 ARM 템플릿에 대한 자세한 내용은 Azure Resource Manager 템플릿을 사용하여 Azure 역할 할당을 참조하세요. 확장 리소스 유형의 전체 목록은 다른 리소스의 기능을 확장하는 리소스 종류를 참조하세요.