다음을 통해 공유


Azure RBAC의 범위 이해

범위 는 액세스가 적용되는 리소스 집합입니다. 역할을 할당할 때 보안 주체에게 실제로 필요한 액세스 권한만 부여할 수 있도록 범위를 이해하는 것이 중요합니다. 범위를 제한하여 보안 주체가 손상된 경우 위험에 처한 리소스를 제한합니다.

범위 수준

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의 스토리지 계정에 대한 리소스 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 역할 할당을 참조하세요. 확장 리소스 유형의 전체 목록은 다른 리소스의 기능을 확장하는 리소스 종류를 참조하세요.

다음 단계