Azure 사용자 지정 역할

Azure 기본 제공 역할이 조직의 특정 요구 사항을 충족하지 않는 경우 사용자 지정 역할을 만들면 됩니다. 기본 제공 역할처럼 관리 그룹, 구독 및 리소스 그룹 범위에서 사용자, 그룹 및 서비스 사용자에게 사용자 지정 역할을 할당할 수 있습니다.

동일한 Microsoft Entra 테넌트를 신뢰하는 구독 간에 사용자 지정 역할을 공유할 수 있습니다. 사용자 지정 역할은 테넌트당 5,000개로 제한됩니다. (21Vianet에서 운영하는 Microsoft Azure의 경우 한도는 사용자 지정 역할 2000개입니다.) 사용자 지정 역할은 Azure Portal, Azure PowerShell, Azure CLI 또는 REST API를 사용하여 할당할 수 있습니다.

사용자 지정 역할을 만드는 단계

사용자 지정 역할을 만드는 기본적인 단계는 다음과 같습니다.

  1. 필요한 권한을 결정합니다.

    사용자 지정 역할을 만드는 경우 권한을 정의하는 데 사용할 수 있는 작업을 알고 있어야 합니다. 일반적으로 기존 기본 제공 역할로 시작한 다음, 필요에 따라 수정합니다. 역할 정의Actions 또는 NotActions 속성에 작업을 추가합니다. 데이터 작업이 있는 경우 이러한 작업을 DataActions 또는 NotDataActions 속성에 추가합니다.

    자세한 내용은 다음 섹션에서 필요한 권한을 결정하는 방법을 참조하세요.

  2. 사용자 지정 역할을 만들 방법을 결정합니다.

    Azure Portal, Azure PowerShell, Azure CLI 또는 REST API를 사용하여 사용자 지정 역할을 만들 수 있습니다.

  3. 사용자 지정 역할을 만듭니다.

    가장 쉬운 방법은 Azure Portal을 사용하는 것입니다. Azure Portal을 사용하여 사용자 지정 역할을 만드는 단계별 방법은 Azure Portal로 Azure 사용자 지정 역할 만들기 또는 업데이트를 참조하세요.

  4. 사용자 지정 역할을 테스트합니다.

    사용자 지정 역할이 있으면 해당 역할을 테스트하여 예상대로 작동하는지 확인해야 합니다. 나중에 조정해야 하는 경우 사용자 지정 역할을 업데이트할 수 있습니다.

필요한 권한 결정 방법

Azure에는 잠재적으로 사용자 지정 역할에 포함할 수 있는 수천 개의 권한이 있습니다. 사용자 지정 역할에 추가할 권한을 결정하는 데 도움이 되는 몇 가지 방법은 다음과 같습니다.

  • 기존 기본 제공 역할을 확인합니다.

    기존 역할을 수정하거나 여러 역할에 사용되는 사용 권한을 조합할 수 있습니다.

  • 액세스 권한을 부여할 Azure 서비스를 나열합니다.

  • Azure 서비스에 매핑되는 리소스 공급자를 결정합니다.

    Azure 서비스는 리소스 공급자를 통해 해당 기능 및 사용 권한을 노출합니다. 예를 들어, Microsoft. Compute 리소스 공급자는 가상 머신 리소스를 제공하고 Microsoft 청구 리소스 공급자는 구독 및 청구 리소스를 제공합니다. 리소스 공급자를 알면 사용자 지정 역할에 필요한 권한을 제한하고 결정하는 데 도움이 될 수 있습니다.

    Azure Portal을 사용하여 사용자 지정 역할을 만드는 경우 키워드를 검색하여 리소스 공급자를 결정할 수도 있습니다. 이 검색 기능은 Azure Portal을 사용하여 Azure 사용자 지정 역할 만들기 또는 업데이트에 설명되어 있습니다.

    Add permissions pane with resource provider

  • 사용 가능한 권한을 검색하여 포함하려는 권한을 찾습니다.

    Azure Portal을 사용하여 사용자 지정 역할을 만드는 경우 키워드별로 사용 권한을 검색할 수 있습니다. 예를 들어 가상 컴퓨터 또는 청구 권한을 검색할 수 있습니다. 모든 사용 권한을 CSV 파일로 다운로드한 다음 이 파일에서 검색할 수도 있습니다. 이 검색 기능은 Azure Portal을 사용하여 Azure 사용자 지정 역할 만들기 또는 업데이트에 설명되어 있습니다.

    Add permissions list

사용자 지정 역할 예제

다음은 Azure PowerShell을 사용하여 JSON 형식으로 표시된 대로 사용자 지정 역할을 보여줍니다. 이 사용자 지정 역할은 가상 머신의 모니터링 및 재시작에 사용할 수 있습니다.

{
  "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.Insights/diagnosticSettings/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/{groupId1}"
  ]
}

다음은 Azure CLI로 표시된 동일한 사용자 지정 역할을 보여줍니다.

[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId1}",
      "/subscriptions/{subscriptionId2}",
      "/providers/Microsoft.Management/managementGroups/{groupId1}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/88888888-8888-8888-8888-888888888888",
    "name": "88888888-8888-8888-8888-888888888888",
    "permissions": [
      {
        "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.Insights/diagnosticSettings/*",
          "Microsoft.Support/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

사용자 지정 역할 속성

다음 테이블은 사용자 지정 역할 속성의 의미에 대해 설명합니다.

속성 필수 Type 설명
Name
roleName
문자열 사용자 지정 역할의 표시 이름입니다. 역할 정의는 관리 그룹 또는 구독 수준 리소스이지만 역할 정의는 동일한 Microsoft Entra 테넌트를 공유하는 여러 구독에서 사용할 수 있습니다. 표시 이름은 Microsoft Entra 테넌트의 범위에서 고유해야 합니다. 문자, 숫자, 공백 및 특수 문자를 포함할 수 있습니다. 최대 문자 수는 512자입니다.
Id
name
문자열 사용자 지정 역할의 고유 ID입니다. Azure PowerShell 및 Azure CLI의 경우 이 ID는 새 역할을 만들 때 자동으로 생성됩니다.
IsCustom
roleType
문자열 사용자 지정 역할인지 여부를 나타냅니다. 사용자 지정 역할인 경우 true 또는 CustomRole으로 설정합니다. 기본 제공 역할인 경우 false 또는 BuiltInRole으로 설정합니다.
Description
description
문자열 사용자 지정 역할에 대한 설명입니다. 문자, 숫자, 공백 및 특수 문자를 포함할 수 있습니다. 최대 문자 수는 2048자입니다.
Actions
actions
String[] 역할에서 수행할 수 있는 컨트롤 플레인 작업을 지정하는 문자열 배열입니다. 자세한 내용은 Actions를 참조하세요.
NotActions
notActions
아니요 String[] 허용되는 Actions에서 제외되는 컨트롤 플레인 작업을 지정하는 문자열 배열입니다. 자세한 내용은 NotActions를 참조하세요.
DataActions
dataActions
아니요 String[] 역할에서 해당 개체 내의 데이터에 수행할 수 있도록 허용하는 데이터 평면 작업을 지정하는 문자열 배열입니다. DataActions를 사용하여 사용자 지정 역할을 만드는 경우 해당 역할은 관리 그룹 범위에서 할당할 수 없습니다. 자세한 내용은 DataActions를 참조하세요.
NotDataActions
notDataActions
아니요 String[] 허용되는 DataActions에서 제외되는 데이터 평면 작업을 지정하는 문자열 배열입니다. 자세한 내용은 NotDataActions를 참조하세요.
AssignableScopes
assignableScopes
String[] 할당에 사용할 수 있는 사용자 지정 역할에 대한 범위를 지정하는 문자열 배열입니다. AssignableScopes의 최대 개수는 2,000입니다. 자세한 내용은 AssignableScopes를 참조하세요.

사용 권한 문자열은 대/소문자를 구분하지 않습니다. 사용자 지정 역할을 만들 때 규칙은 Azure 리소스 공급자 작업의 사용 권한에 대해 표시되는 사례와 일치시키는 것입니다.

와일드카드 사용 권한

Actions, NotActions, DataActions, NotDataActions는 사용 권한을 정의하는 와일드 카드(*)를 지원합니다. 와일드카드(*)는 사용자가 제공하는 작업 문자열과 일치하는 모든 항목으로 권한을 확장합니다. 예를 들어 Azure Cost Management 및 내보내기와 관련된 모든 권한을 추가하려고 한다고 가정해 보겠습니다. 이러한 모든 동작 문자열을 추가할 수도 있겠지만,

Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action

대신 간단히 와일드카드 문자열을 추가할 수도 있습니다. 예를 들어 다음 와일드카드 문자열은 이전의 5개 문자열과 같습니다. 여기에는 추가될 수 있는 후속 내보내기 권한도 포함됩니다.

Microsoft.CostManagement/exports/*

참고 항목

와일드카드(*) 문자를 사용하는 대신 ActionsDataActions를 명시적으로 지정하는 것이 좋습니다. 이후 Actions 또는 DataActions를 통해 부여된 추가 액세스 및 사용 권한은 와일드카드를 사용하는 원치 않는 동작일 수 있습니다.

사용자 지정 역할을 생성, 삭제, 업데이트 또는 볼 수 있는 사용자

기본 제공 역할과 마찬가지로, AssignableScopes 속성은 할당에 사용할 수 있는 역할에 대한 범위를 지정합니다. 또한 사용자 지정 역할에 대한 AssignableScopes 속성은 사용자 지정 역할을 생성, 삭제, 업데이트 또는 볼 수 있는 사용자도 제어합니다.

작업 작업 설명
사용자 지정 역할 만들기/삭제 Microsoft.Authorization/ roleDefinitions/write 사용자 지정 역할의 모든 AssignableScopes에 이 작업이 부여된 사용자는 해당 범위에서 사용할 사용자 지정 역할을 만들거나 삭제할 수 있습니다. 예를 들어 관리 그룹, 구독, 리소스 그룹의 소유자사용자 액세스 관리자가 있습니다.
사용자 지정 역할 업데이트 Microsoft.Authorization/ roleDefinitions/write 사용자 지정 역할의 모든 AssignableScopes에 이 작업이 부여된 사용자는 해당 범위에의 사용자 지정 역할을 업데이트할 수 있습니다. 예를 들어 관리 그룹, 구독, 리소스 그룹의 소유자사용자 액세스 관리자가 있습니다.
사용자 지정 역할 보기 Microsoft.Authorization/ roleDefinitions/read 범위에서 이 작업이 부여된 사용자는 해당 범위에서 할당에 사용할 수 있는 사용자 지정 역할을 볼 수 있습니다. 모든 기본 제공 역할은 사용자 지정 역할을 할당에 사용할 수 있도록 허용합니다.

사용자 지정 역할을 삭제할 역할 할당 찾기

사용자 지정 역할을 삭제하려면 먼저 사용자 지정 역할을 사용하는 모든 역할 할당을 제거해야 합니다. 역할 할당을 사용하여 사용자 지정 역할을 삭제하려고 하면 다음 메시지가 표시됩니다. There are existing role assignments referencing role (code: RoleDefinitionHasAssignments)

사용자 지정 역할을 삭제하기 전에 역할 할당을 찾는 데 도움이 되는 단계는 다음과 같습니다.

사용자 지정 역할 제한

다음 목록은 사용자 지정 역할에 대한 제한을 설명합니다.

  • 각 테넌트는 최대 5000개의 사용자 지정 역할을 가질 수 있습니다.
  • 21Vianet에서 운영하는 Microsoft Azure는 각 테넌트에 대해 최대 2000개의 사용자 지정 역할을 가질 수 있습니다.
  • AssignableScopes를 루트 범위("/")로 설정할 수 없습니다.
  • AssignableScopes에서는 와일드카드(*)를 사용할 수 없습니다. 이 와일드카드 제한은 사용자가 역할 정의를 업데이트하여 범위에 대한 액세스 권한을 얻을 수 없도록 하는 데 도움이 됩니다.
  • 작업 문자열에는 와일드카드를 하나만 사용할 수 있습니다.
  • 사용자 지정 역할의 AssignableScopes에는 하나의 관리 그룹만 정의할 수 있습니다.
  • Azure Resource Manager는 관리 그룹이 역할 정의의 AssignableScopes에 있는지 확인하지 않습니다.
  • DataActions의 사용자 지정 역할은 관리 그룹 범위에서 할당할 수 없습니다.
  • AssignableScopes에서 DataActions 및 하나의 관리 그룹을 사용하여 사용자 지정 역할을 만들 수 있습니다. 관리 그룹 범위 자체에서 사용자 지정 역할을 할당할 수 없습니다. 그러나 관리 그룹 내의 구독 범위에서 사용자 지정 역할을 할당할 수 있습니다. 이는 각 구독에 대해 별도의 사용자 지정 역할을 만드는 대신 여러 구독에 할당해야 하는 DataActions를 사용하여 단일 사용자 지정 역할을 만들어야 하는 경우에 유용할 수 있습니다.

사용자 지정 역할 및 관리 그룹에 대한 자세한 내용은 Azure 관리 그룹이란?을 참조하세요.

입력 및 출력 양식

명령줄을 사용하여 사용자 지정 역할을 만드는 경우 일반적으로 JSON을 사용하여 사용자 지정 역할에 대해 원하는 속성을 지정합니다. 사용하는 도구에 따라 입력 및 출력 형식이 약간 다르게 표시됩니다. 이 섹션에는 도구에 따른 입력 및 출력 형식이 나열됩니다.

Azure PowerShell

Azure PowerShell을 사용하여 사용자 지정 역할을 만들려면 다음 입력을 제공해야 합니다.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Azure PowerShell을 사용하여 사용자 지정 역할을 업데이트하려면 다음 입력을 제공해야 합니다. Id 속성이 추가되었습니다.

{
  "Name": "",
  "Id": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

다음은 Azure PowerShell 및 ConvertTo-Json 명령을 사용하여 사용자 지정 역할을 나열하는 경우의 출력 예시입니다.

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

Azure CLI

Azure CLI를 사용하여 사용자 지정 역할을 만들거나 업데이트하려면 다음 입력을 제공해야 합니다. 이 형식은 Azure PowerShell을 사용하여 사용자 지정 역할을 만들 때와 동일한 형식입니다.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

다음은 Azure CLI를 사용하여 사용자 지정 역할을 나열하는 경우의 출력 예시입니다.

[
  {
    "assignableScopes": [],
    "description": "",
    "id": "",
    "name": "",
    "permissions": [
      {
        "actions": [],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

REST API

REST API를 사용하여 사용자 지정 역할을 만들거나 업데이트하려면 다음 입력을 제공해야 합니다. 이 형식은 Azure Portal을 사용하여 사용자 지정 역할을 만들 때 생성된 것과 동일한 형식입니다.

{
  "properties": {
    "roleName": "",
    "description": "",
    "assignableScopes": [],
    "permissions": [
      {
        "actions": [],
        "notActions": [],
        "dataActions": [],
        "notDataActions": []
      }
    ]
  }
}

다음은 REST API를 사용하여 사용자 지정 역할을 나열하는 경우의 출력 예시입니다.

{
    "properties": {
        "roleName": "",
        "type": "CustomRole",
        "description": "",
        "assignableScopes": [],
        "permissions": [
            {
                "actions": [],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ],
        "createdOn": "",
        "updatedOn": "",
        "createdBy": "",
        "updatedBy": ""
    },
    "id": "",
    "type": "Microsoft.Authorization/roleDefinitions",
    "name": ""
}

다음 단계