Azure CLI를 사용하여 사용자 지정 역할 만들기 또는 업데이트

Azure 기본 제공 역할이 조직의 특정 요구 사항을 충족하지 않는 경우 사용자 지정 역할을 만들면 됩니다. 이 문서에서는 Azure CLI를 사용하여 사용자 지정 역할을 나열하고, 만들고, 업데이트하고, 삭제하는 방법을 설명합니다.

사용자 지정 역할을 만드는 방법에 대한 단계별 자습서는 자습서: Azure CLI를 사용하여 사용자 지정 역할 만들기를 참조하세요.

필수 조건

사용자 지정 역할을 만들려면 다음이 필요합니다.

사용자 지정 역할 나열

할당에 사용할 수 있는 사용자 지정 역할을 나열하려면 az role definition list를 사용합니다. 다음 예제에서는 현재 구독의 모든 사용자 지정 역할을 나열합니다.

az role definition list --custom-role-only true --output json --query '[].{roleName:roleName, roleType:roleType}'
[
  {
    "roleName": "My Management Contributor",
    "type": "CustomRole"
  },
  {
    "roleName": "My Service Reader Role",
    "type": "CustomRole"
  },
  {
    "roleName": "Virtual Machine Operator",
    "type": "CustomRole"
  }
]

사용자 지정 역할 정의 나열하기

사용자 지정 역할 정의를 나열하려면 az role definition list를 사용합니다. 이 명령은 기본 제공 역할에 사용하는 것과 동일한 명령입니다.

az role definition list --name {roleName}

다음 예제에서는 Virtual Machine Operator 역할 정의를 나열합니다.

az role definition list --name "Virtual Machine Operator"
[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "name": "00000000-0000-0000-0000-000000000000",
    "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"
  }
]

다음 예제에서는 Virtual Machine Operator 역할의 작업만 나열합니다.

az role definition list --name "Virtual Machine Operator" --output json --query '[].permissions[0].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/*"
  ]
]

사용자 지정 역할 만들기

사용자 지정 역할을 만들려면 az role definition create를 사용합니다. 역할 정의는 JSON 설명이거나, JSON 설명이 포함된 파일에 대한 경로가 될 수 있습니다.

az role definition create --role-definition {roleDefinition}

다음 예제에서는 Virtual Machine Operator라는 사용자 지정 역할을 만듭니다. 이 사용자 지정 역할은 Microsoft.Compute, Microsoft.StorageMicrosoft.Network 리소스 공급자의 모든 읽기 작업에 대한 액세스를 할당하고 가상 머신을 시작, 다시 시작 및 모니터링하는 액세스를 할당합니다. 두 구독 모두에서 사용자 지정 역할을 사용할 수 있습니다. 이 예제에서는 입력으로 JSON 파일을 사용합니다.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "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": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}"
  ]
}
az role definition create --role-definition ~/roles/vmoperator.json

사용자 지정 역할 업데이트

사용자 지정 역할을 업데이트하려면 먼저 az role definition list를 사용하여 역할 정의를 검색합니다. 그런 다음 역할 정의를 원하는 대로 변경합니다. 마지막으로 az role definition update를 사용하여 업데이트된 역할 정의를 저장합니다.

az role definition update --role-definition {roleDefinition}

다음 예제에서는 ActionsMicrosoft.Insights/diagnosticSettings/ 작업을 추가하고 Virtual Machine Operator 사용자 지정 역할의 AssignableScopes에 관리 그룹을 추가합니다.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "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": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/marketing-group"
  ]
}
az role definition update --role-definition ~/roles/vmoperator.json

사용자 지정 역할 삭제

  1. 사용자 지정 역할을 사용하는 역할 할당을 제거합니다. 자세한 내용은 사용자 지정 역할을 삭제할 역할 할당 찾기를 참조하세요.

  2. az role definition delete를 사용하여 사용자 지정 역할을 삭제합니다. 삭제할 역할을 지정하려면 역할 이름이나 역할 ID를 사용합니다. 역할 ID를 결정하려면 az role definition list를 사용합니다.

    az role definition delete --name {roleNameOrId}
    

    다음 예제에서는 Virtual Machine Operator 사용자 지정 역할을 삭제합니다.

    az role definition delete --name "Virtual Machine Operator"
    

다음 단계