다음을 통해 공유


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

Azure 기본 제공 역할이 조직의 특정 요구 사항을 충족하지 않는 경우 사용자 지정 역할을 만들 수 있습니다. 이 문서에서는 Bicep을 사용하여 사용자 지정 역할을 만들거나 업데이트하는 방법을 설명합니다.

Bicep은 선언적 구문을 사용하여 Azure 리소스를 배포하는 DSL(도메인 특정 언어)입니다. 간결한 구문, 신뢰할 수 있는 형식 안전성 및 코드 다시 사용에 대한 지원을 제공합니다. Bicep은 Azure에서 코드형 인프라 솔루션에 대한 최고의 제작 환경을 제공합니다.

사용자 지정 역할을 만들려면 역할 이름, 역할 권한 및 역할을 사용할 수 있는 위치를 지정합니다. 이 문서에서는 구독 범위 이하에서 할당될 수 있는 리소스 권한이 있는 Custom Role - RG Reader라는 역할을 만듭니다.

필수 조건

사용자 지정 역할을 만들려면 사용자 액세스 관리자와 같은 사용자 지정 역할을 만들 수 있는 권한이 있어야 합니다.

또한 활성 Azure 구독이 있어야 합니다. 계정이 없으면 시작하기 전에 무료 계정을 만들 수 있습니다.

Bicep 파일 검토

이 문서에 사용된 Bicep 파일은 Azure 빠른 시작 템플릿에서 가져온 것입니다. Bicep 파일에는 4개의 매개 변수와 리소스 섹션이 있습니다. 매개 변수는 다음과 같습니다.

  • 기본값 ["Microsoft.Resources/subscriptions/resourceGroups/read"]를 사용하는 작업의 배열입니다.
  • 빈 기본값을 사용하는 notActions의 배열입니다.
  • 기본값이 Custom Role - RG Reader인 역할 이름입니다.
  • 기본값이 Subscription Level Deployment of a Role Definition인 역할 설명입니다.

이 사용자 지정 역할을 할당할 수 있는 범위는 현재 구독으로 설정되어 있습니다.

사용자 지정 역할에는 고유한 ID가 필요합니다. GUID() 함수를 사용하여 ID를 생성할 수 있습니다. 사용자 지정 역할에는 테넌트에 대한 고유한 표시 이름도 필요하므로 역할 이름을 함수의 매개 변수 guid() 로 사용하여 결정적 GUID만들 수 있습니다. 결정적 GUID는 나중에 동일한 Bicep 파일을 사용하여 사용자 지정 역할을 업데이트해야 하는 경우에 유용합니다.

targetScope = 'subscription'

@description('Array of actions for the roleDefinition')
param actions array = [
  'Microsoft.Resources/subscriptions/resourceGroups/read'
]

@description('Array of notActions for the roleDefinition')
param notActions array = []

@description('Friendly name of the role definition')
param roleName string = 'Custom Role - RG Reader'

@description('Detailed description of the role definition')
param roleDescription string = 'Subscription Level Deployment of a Role Definition'

var roleDefName = guid(roleName)

resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
  name: roleDefName
  properties: {
    roleName: roleName
    description: roleDescription
    type: 'customRole'
    permissions: [
      {
        actions: actions
        notActions: notActions
      }
    ]
    assignableScopes: [
      subscription().id
    ]
  }
}

Bicep 파일에 정의된 리소스는 다음과 같습니다.

Bicep 파일 배포

  1. Bicep 파일을 main.bicep으로 로컬 컴퓨터에 저장합니다.

  2. roleDefinition에 대한 작업을 사용하여 myActions라는 변수를 만듭니다.

    $myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  3. Azure CLI 또는 Azure PowerShell을 사용하여 Bicep 파일을 배포합니다.

    az deployment sub create --location eastus --name customRole --template-file ./main.bicep --parameters actions=$myActions
    

배포가 완료되면 배포에 성공했음을 나타내는 메시지가 표시됩니다.

배포된 리소스 검토

Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 사용자 지정 역할이 만들어졌는지 확인합니다.

az role definition list --name "Custom Role - RG Reader"

사용자 지정 역할 업데이트

사용자 지정 역할을 만드는 것과 유사하게 Bicep을 사용하여 기존 사용자 지정 역할을 업데이트할 수 있습니다. 사용자 지정 역할을 업데이트하려면 업데이트하려는 역할을 지정해야 합니다. 이전에 결정적인 고유한 역할 ID를 사용하여 Bicep에서 사용자 지정 역할을 만든 경우 동일한 Bicep 파일을 사용하고 표시 이름을 사용하여 사용자 지정 역할을 지정할 수 있습니다.

  1. 업데이트된 작업을 지정합니다.

    $myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  2. Azure CLI 또는 Azure PowerShell을 사용하여 사용자 지정 역할을 업데이트합니다.

    az deployment sub create --location eastus --name customrole --template-file ./main.bicep --parameters actions=$myActions roleName="Custom Role - RG Reader"
    

    참고 항목

    업데이트된 사용자 지정 역할이 전파되는 데 몇 분 정도 걸릴 수 있습니다.

리소스 정리

더 이상 필요하지 않은 경우 Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 사용자 지정 역할을 제거합니다.

az role definition delete --name "Custom Role - RG Reader"

다음 단계