Azure의 사용자 지정 역할은 무엇인가요?

완료됨

기본 제공 역할이 필요한 정확한 수준의 액세스 권한을 부여하지 않는 경우도 있습니다. 사용자 지정 역할을 사용하여 조직의 특정 요구를 충족하는 역할을 정의할 수 있습니다. 구독, 리소스 그룹 또는 리소스의 범위에서 사용자, 그룹 및 서비스 주체에게 생성한 Azure 사용자 지정 역할을 할당할 수 있습니다.

이 단원에서는 Azure RBAC(역할 기반 액세스 제어)의 사용자 지정 역할에 대해 알아봅니다.

Microsoft Entra 및 Azure 역할

Azure를 처음 사용할 때 Microsoft Entra 역할과 Azure 역할이 혼동되는 경우가 많습니다. Microsoft Entra 역할은 사용자 계정 및 암호와 같은 Microsoft Entra 리소스에 대한 권한을 관리하기 위한 메커니즘을 제공합니다. Azure 역할은 세부적인 수준에서 VM(가상 머신)과 같은 Azure 리소스를 관리하기 위한 다양한 기능을 제공합니다.

Azure 역할 및 Microsoft Entra 역할의 관계를 보여 주는 다이어그램

다음 표에서는 두 가지를 설정하고 관리하는 방법 간의 미묘한 차이점을 보여 줍니다.

Azure 역할 Microsoft Entra 역할
VM, 저장소, 네트워크 등과 같은 Azure 리소스에 대한 액세스 관리 사용자 계정 및 암호와 같은 Microsoft Entra 리소스에 대한 액세스를 관리합니다.
여러 범위 수준(관리 그룹, 구독, 리소스 그룹, 리소스) 테넌트 수준만의 범위
Azure Portal, Azure CLI, Azure PowerShell, Azure Resource Manager 템플릿, REST API를 통해 액세스할 수 있는 역할 정보 Azure 관리 포털, Microsoft 365 관리 센터, Microsoft Graph, Microsoft Graph PowerShell에서 액세스할 수 있는 역할 정보

이 시나리오에서는 구독 범위에서 Azure VM을 관리하는 사용자 지정 역할이 필요하므로 Azure RBAC에서 사용자 지정 역할을 사용해야 합니다.

사용자 지정 역할의 할당 및 범위

사용자 액세스 관리자 또는 소유자 역할을 가진 사용자는 Azure RBAC에서 사용자 지정 역할을 만들거나 할당할 수 있습니다.

다음 항목에 사용자 지정 역할을 할당할 수 있습니다.

할당할 수 있습니다. 요약
사용자 Microsoft Entra ID에 프로필이 있는 개인
그룹 Microsoft Entra ID에서 만들어진 사용자 집합
서비스 주체 애플리케이션 또는 서비스에서 특정 Azure 리소스에 액세스하는 데 사용하는 보안 ID
관리 ID Azure에서 자동으로 관리되는 Microsoft Entra ID의 ID

할당 및 관련 사용 권한의 범위를 Azure 내의 다른 수준으로 지정할 수 있습니다. 다른 범위는 다음과 같습니다.

  • 구독
  • 리소스 그룹
  • 개별 리소스

역할 할당의 범위와 서로 간의 관계를 보여 주는 다이어그램

역할 정의 및 구조

사용자 지정 역할은 다른 사용 권한의 컬렉션으로 분류됩니다. 각 정의는 읽기, 쓰기 및 삭제와 같이 허용되는 작업을 자세히 설명합니다. 정의는 다음 구조를 사용하여 구성됩니다.

{
  "Name": "",
  "IsCustom": true,
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}"
  ]
}

다음 예에서는 기여자 역할의 역할 정의를 보여 줍니다.

{
  "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",
    "Microsoft.Blueprint/blueprintAssignments/write",
    "Microsoft.Blueprint/blueprintAssignments/delete"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

모든 역할 정의는 다음 형식을 사용하여 선언됩니다.

{Company}.{ProviderName}/{resourceType}/{action}

작업 부분은 일반적으로 다음 작업 중 하나입니다.

  • *
  • 읽기
  • 쓰기
  • 작업
  • 삭제

사용자 지정 역할을 정의하여 VM 관리

역할 정의에 포함할 사용 권한을 식별하는 데 도움이 되도록 Azure Resource Manager 리소스 공급자 작업 목록에서 필요한 것과 비슷한 권한이 있는 기본 제공 Azure 역할이 있는지 확인하세요.

기본 제공 역할 검토

이 시나리오의 경우 가상 머신 기여자 기본 제공 역할에는 직원의 요구 사항 보다 많은 권한이 있으며, 가상 머신 관리자 로그인에는 충분한 권한이 없습니다.

다음 Azure CLI 명령은 기본 제공 역할 Virtual Machine Contributor에 대한 권한을 반환합니다.

az role definition list --name "Virtual Machine Contributor" --output json | jq '.[] | .permissions[0].actions'

다음 목록에는 기본 제공 역할 Virtual Machine Contributor에 대한 권한이 표시됩니다.

[
  "Microsoft.Authorization/*/read",
  "Microsoft.Compute/availabilitySets/*",
  "Microsoft.Compute/locations/*",
  "Microsoft.Compute/virtualMachines/*",
  "Microsoft.Compute/virtualMachineScaleSets/*",
  "Microsoft.DevTestLab/schedules/*",
  "Microsoft.Insights/alertRules/*",
  "Microsoft.Network/applicationGateways/backendAddressPools/join/action",
  "Microsoft.Network/loadBalancers/backendAddressPools/join/action",
  "Microsoft.Network/loadBalancers/inboundNatPools/join/action",
  "Microsoft.Network/loadBalancers/inboundNatRules/join/action",
  "Microsoft.Network/loadBalancers/probes/join/action",
  "Microsoft.Network/loadBalancers/read",
  "Microsoft.Network/locations/*",
  "Microsoft.Network/networkInterfaces/*",
  "Microsoft.Network/networkSecurityGroups/join/action",
  "Microsoft.Network/networkSecurityGroups/read",
  "Microsoft.Network/publicIPAddresses/join/action",
  "Microsoft.Network/publicIPAddresses/read",
  "Microsoft.Network/virtualNetworks/read",
  "Microsoft.Network/virtualNetworks/subnets/join/action",
  "Microsoft.RecoveryServices/locations/*",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write",
  "Microsoft.RecoveryServices/Vaults/backupPolicies/read",
  "Microsoft.RecoveryServices/Vaults/backupPolicies/write",
  "Microsoft.RecoveryServices/Vaults/read",
  "Microsoft.RecoveryServices/Vaults/usages/read",
  "Microsoft.RecoveryServices/Vaults/write",
  "Microsoft.ResourceHealth/availabilityStatuses/read",
  "Microsoft.Resources/deployments/*",
  "Microsoft.Resources/subscriptions/resourceGroups/read",
  "Microsoft.SqlVirtualMachine/*",
  "Microsoft.Storage/storageAccounts/listKeys/action",
  "Microsoft.Storage/storageAccounts/read",
  "Microsoft.Support/*"
]

PowerShell에서 이 목록을 가져오려면 다음 명령을 실행합니다.

Get-AzRoleDefinition -Name "Virtual Machine Contributor" | Select Actions | ConvertTo-Json

이 시나리오에서는 특정 구독에 대한 가상 머신을 모니터링하고 다시 시작할 수 있는 사용자 지정 역할을 원하므로 구독 수준에서 범위가 지정된 다음 작업을 포함하려고 합니다.

  • 컴퓨팅, 네트워크 및 스토리지 리소스에 대한 읽기 액세스
  • 가상 머신을 시작하고 다시 시작할 수 있는 능력
  • 구독의 리소스 그룹에 대한 액세스
  • 모니터링 리소스에 대한 액세스

Virtual Machine Contributor 역할 정의에는 모니터링을 위해 "Microsoft.Insights/alertRules/*"와 같이 사용할 수 있는 일부 작업이 있지만 다시 시작 및 일부 다른 작업은 해당 역할 정의에 작업으로 나열되지 않습니다.

리소스 공급자 작업 찾기

Azure Resource Manager 리소스 공급자 작업 목록에서 VM 재시작 작업을 찾거나 다음 PowerShell 명령을 실행하여 VM에 대한 작업을 반환할 수 있습니다.

Get-AzProviderOperation */virtualMachines/*

재시작에 대한 다음 작업이 목록에 반환됩니다.

Operation         : Microsoft.Compute/virtualMachines/restart/action
OperationName     : Restart Virtual Machine
ProviderNamespace : Microsoft Compute
ResourceName      : Virtual Machines
Description       : Restarts the virtual machine
IsDataAction      : False

Azure PowerShell Get-AzProviderOperation cmdlet을 사용하여 리소스 공급자 작업의 최신 목록을 가져올 수 있습니다. Azure CLI에서는 az provider operation show 명령을 사용합니다. 문서의 Azure RBAC 콘텐츠에서 리소스 공급자 및 작업의 게시된 목록을 찾을 수 있습니다.

VM 운영자 역할 정의 만들기

관련된 기본 제공 역할 정의 및 리소스 공급자 작업 목록을 확인하여 필요한 항목을 선택했다고 가정하겠습니다. 사용자 지정 역할에 대한 다음과 같은 역할 정의가 종료됩니다. 사용자 지정 역할에 대해 이 역할 정의를 사용합니다.

   {
   "Name": "Virtual Machine Operator",
   "Id": "88888888-8888-8888-8888-888888888888",
   "IsCustom": true,
   "Description": "Can monitor and restart virtual machines.",
   "Actions": [
     "Microsoft.Storage/*/read",
     "Microsoft.Network/*/read",
     "Microsoft.Compute/*/read",
     "Microsoft.Compute/virtualMachines/start/action",
     "Microsoft.Compute/virtualMachines/restart/action",
     "Microsoft.Authorization/*/read",
     "Microsoft.ResourceHealth/availabilityStatuses/read",
     "Microsoft.Resources/subscriptions/resourceGroups/read",
     "Microsoft.Insights/alertRules/*",
     "Microsoft.Support/*"
   ],
   "NotActions": [],
   "DataActions": [],
   "NotDataActions": [],
   "AssignableScopes": [
      "/subscriptions/{subscriptionId1}" 
   ]
   }

지식 점검

1.

사용자 지정 Azure 역할 정의에는 무엇이 포함되나요?

2.

사용자 지정 역할 정의에 추가할 작업을 결정하는 데 도움이 되는 명령은 무엇인가요?