역할을 사용하여 리소스 액세스 제어

완료됨

Azure 리소스에 대한 기본 제공 역할(PowerShell 사용)

Azure는 가장 일반적인 보안 시나리오를 해결하기 위한 몇 가지 기본 제공 역할을 제공합니다. 역할의 작동 방식을 파악하기 위해 모든 리소스 종류에 적용되는 다음 세 가지 역할을 살펴봅시다.

  • 소유자: 액세스 권한을 다른 사용자에게 위임할 수 있는 권한을 포함하여 모든 리소스에 대한 전체 액세스 권한을 보유합니다.
  • 기여자: 모든 유형의 Azure 리소스를 만들고 관리할 수 있지만 다른 사용자에게 액세스 권한을 부여할 수 없습니다.
  • 읽기 권한자: 기존 Azure 리소스를 볼 수 있습니다.

역할 정의

각 역할은 JSON(JavaScript Object Notation) 파일에 정의된 속성 집합입니다. 역할 정의에는 이름, ID설명이 포함됩니다. 허용된 권한(Actions), 거부된 권한(NotActions) 및 역할의 범위(예: 읽기 권한)도 포함됩니다.

소유자 역할의 경우 별표(*)로 표시되는 모든 작업, 거부된 작업 없음, 슬래시(/)로 표시되는 모든 범위에 해당합니다.

PowerShell Get-AzRoleDefinition Owner cmdlet을 사용하여 이 정보를 가져올 수 있습니다.

Get-AzRoleDefinition Owner

이 코드는 다음과 같은 결과를 생성합니다.

Name             : Owner
Id               : 8e3af657-a8ff-443c-a75c-2fe8c4bcb635
IsCustom         : False
Description      : Lets you manage everything, including access to resources.
Actions          : {*}
NotActions       : {}
DataActions      : {}
NotDataActions   : {}
AssignableScopes : {/}

참가자읽기 권한자 역할에 대해 동일한 작업을 수행하여 허용된 작업과 거부된 작업을 확인합니다.

기본 제공 역할

Microsoft Entra ID의 RBAC 및 사용자 역할에 대한 심층적인 검사는 Microsoft Entra ID의 RBAC 및 사용자 역할 검사를 참조하세요.

역할 정의란?

역할 정의는 사용 권한 컬렉션입니다. 역할 정의에는 읽기, 쓰기, 삭제 등 역할이 수행할 수 있는 작업이 나열됩니다. 수행할 수 없는 작업이나 기본 데이터와 관련된 작업도 나열될 수 있습니다.

앞에서 설명한 것처럼 역할 정의의 구조는 다음과 같습니다.

이름 설명
Id Azure에서 할당한 역할의 고유 식별자
IsCustom 사용자 지정 역할인 경우 True이고, 기본 제공 역할인 경우 False입니다.
Description 역할에 대한 읽기 가능한 설명
Actions [] 허용된 사용 권한으로, *는 모두를 나타냅니다.
NotActions [] 거부된 사용 권한
DataActions [] 데이터에 적용되는, 허용된 특정 사용 권한입니다(예: Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read).
NotDataActions [] 데이터에 적용되는, 거부된 특정 사용 권한입니다.
AssignableScopes [] 이 역할이 적용되는 범위. /는 전역을 나타내지만 계층 트리까지 도달할 수 있습니다.

RBAC(Role-Based Access Control, 역할 기반 액세스 제어) 또는 기본 API에서 사용할 경우 이 구조는 JSON으로 표현됩니다. 예를 들어 다음은 JSON 형식의 참가자 역할 정의입니다.

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Actions 및 NotActions

ActionsNotActions 속성을 조정하여 필요한 사용 권한을 정확히 부여하고 거부할 수 있습니다. 두 속성은 항상 {Company}.{ProviderName}/{resourceType}/{action} 형식입니다.

예를 들어 다음은 앞에서 살펴본 세 가지 역할의 작업입니다.

기본 제공 역할 Actions NotActions
소유자(모든 작업 허용) * -
참가자(역할 할당 작성 또는 삭제를 제외한 모든 작업 허용) * Microsoft.Authorization/*/Delete, Microsoft.Authorization/*/Write, Microsoft.Authorization/elevateAccess/Action
읽기 권한자(모든 읽기 작업 허용) */read -

Actions의 와일드카드(*) 작업은 이 역할에 할당된 보안 주체가 모든 작업을 수행할 수 있음을 나타냅니다. 즉, 새 리소스 종류가 Azure에 추가될 때 이 역할은 나중에 정의된 작업을 포함하여 모든 항목을 관리할 수 있습니다. 읽기 권한자 역할의 경우 read 작업만 허용됩니다.

NotActions에 포함된 작업은 Actions에서 제외됩니다. 참가자 역할에서 NotActions는 리소스에 대한 액세스를 관리하는 이 역할의 기능을 제거하고, 리소스에 액세스를 할당하는 기능도 제거합니다.

DataActions 및 NotDataActions

데이터 작업은 DataActionsNotDataActions 속성에 명시됩니다. 관리 작업과 별도로 데이터 작업을 지정할 수 있습니다. 이렇게 하면 와일드카드(*)를 사용한 현재 역할 조정이 갑자기 데이터에 액세스할 수 있게 되는 경우를 방지할 수 있습니다. DataActionsNotDataActions에서 지정할 수 있는 몇 가지 데이터 작업은 다음과 같습니다.

  • 컨테이너의 Blob 목록 읽기
  • 컨테이너에서 Storage Blob 작성
  • 큐의 메시지 삭제

DataActionsNotDataActions 속성에만 데이터 작업을 추가할 수 있습니다. 리소스 공급자는 isDataAction 속성을 true로 설정하여 데이터 작업을 확인합니다. 데이터 작업이 없는 역할은 역할 정의에서 해당 속성을 생략할 수 있습니다.

이 작업은 해당하는 관리 작업과 똑같이 작동합니다. 허용하려는 작업을 지정하고(또는 모든 작업을 허용하려면 * 지정), NotDataActions 컬렉션에서 제거할 특정 작업 목록을 제공할 수 있습니다. 다음은 몇 가지 예입니다. 리소스 공급자 설명서에서 작업 및 데이터 작업의 전체 목록을 확인할 수 있습니다.

데이터 작업 설명
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete Blob 데이터 삭제
Microsoft.Compute/virtualMachines/login/action 일반 사용자로 VM에 로그인
Microsoft.EventHub/namespaces/messages/send/action 이벤트 허브를 통해 메시지 보내기
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read 파일/폴더 또는 파일/폴더 목록 반환
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read 큐에서 메시지 읽기

할당 가능한 범위

ActionsNotActions 속성 정의만으로는 역할을 완전히 구현할 수 없습니다. 역할의 범위도 올바르게 지정해야 합니다.

역할의 AssignableScopes 속성은 역할을 할당할 수 있는 범위(구독, 리소스 그룹 또는 리소스)를 지정합니다. 역할이 필요한 구독이나 리소스 그룹에만 사용자 지정 역할을 할당할 수 있도록 설정하여, 그 외의 구독이나 리소스 그룹에서는 사용자 환경이 복잡해지는 것을 방지할 수 있습니다.

다음 몇 가지 예를 참조하세요.

작업 사용 범위
구독으로 제한 "/subscriptions/{sub-id}"
특정 구독의 특정 리소스 그룹으로 제한 "/subscriptions/{sub-id}/resourceGroups/{rg-name}"
특정 리소스로 제한 "/subscriptions/{sub-id}/resourceGroups/{rg-name}/{resource-name}"
두 개의 구독에 역할을 할당할 수 있도록 설정 "/subscriptions/{sub-id}", "/subscriptions/{sub-id}"

역할 만들기

Microsoft Entra ID에는 사용자가 원하는 작업의 99%를 처리할 수 있는 기본 제공 역할이 포함되어 있습니다. 가능하면 기본 제공 역할을 사용하는 것이 좋습니다. 그러나 필요한 경우에는 사용자 지정 역할을 만들 수 있습니다.

참고 항목

사용자 지정 역할을 만들려면 Microsoft Entra ID P1 또는 P2가 필요합니다. 무료 계층에서는 사용자 지정 역할을 만들 수 없습니다.

다음과 같은 여러 메커니즘을 통해 새 역할을 만들 수 있습니다.

  • Microsoft Entra 관리 센터: Microsoft Entra 관리 센터를 사용하면 왼쪽 메뉴의 역할 및 관리자에서 역할 및 관리자를 선택한 다음 새 사용자 지정 역할을 선택하여 사용자 지정 역할을 만들 수 있습니다.

  • Azure Portal: Azure Portal에서 Microsoft Entra ID>역할 및 관리자>새 사용자 지정 역할을 선택하여 사용자 지정 역할을 만들 수 있습니다.

  • Azure PowerShell: New-AzRoleDefinition cmdlet을 사용하여 새 역할을 정의할 수 있습니다.

  • Azure Graph API: Graph API에 대한 REST 호출을 사용하여 프로그래밍 방식으로 새 역할을 만들 수 있습니다.

이 모듈의 요약 섹션에는 이러한 방식에 대한 설명서에 대한 링크가 포함되어 있습니다.

지식 점검

1.

역할 정의의 Action에서 제공하는 정보는 무엇인가요?

2.

다음 중에서 역할의 범위myResourceGroup 리소스 그룹으로 설정하는 것은 무엇인가요?

3.

역할 정의에서 NotActions는 어떻게 사용되나요?