설명
Microsoft.Authorization/roleDefinitions/write는 권한이 적용되는 범위에서 사용자 지정 역할을 만들거나 수정할 수 있게 합니다. 역할의 모든 assignableScopes에 해당 권한이 있어야 합니다. actions: ['*']도 제외된 작업이 없다면 이 권한을 포함한 광범위한 관리 작업을 허용합니다.
역할 정의를 만드는 것과 사용자에게 역할을 할당하는 것은 별개의 작업입니다. 다만 이미 할당된 역할의 권한을 변경하면 그 역할을 사용하는 주체의 권한도 확대될 수 있으므로 역할 관리 권한을 신중히 위임해야 합니다.
잠재적 영향
- 불필요한 역할 변경 권한으로 기존 역할에 과도한 권한을 추가할 수 있습니다.
- 넓은 할당 범위와 과도한 역할 할당이 결합되면 더 많은 리소스가 영향을 받을 수 있습니다.
해결 방법
- 역할 관리가 필요 없는 주체에게는
Microsoft.Authorization/roleDefinitions/write를 부여하지 말고,*대신 실제 필요한 작업을 명시하세요. actions,notActions, 데이터 작업과 역할 할당을 함께 검토하세요.assignableScopes는 역할을 할당할 수 있는 범위이지 그 자체로 접근 권한을 부여하는 설정은 아닙니다.- 역할 생성·변경과 할당 권한을 필요한 관리자에게만 위임하고, 변경 후 실제 권한과 정상 업무 수행 여부를 확인하세요.
예시
구독 범위 배포 예시이며 GUID 형식의 역할 ID를 사용합니다. 역할을 사용자에게 할당하는 리소스는 포함하지 않습니다. 기존 역할을 변경할 때는 실제 역할 ID를 유지하고 테넌트에서 고유한 역할 이름을 사용하세요.
변경 전
bicep
targetScope = 'subscription'
resource roleDef 'Microsoft.Authorization/roleDefinitions@2018-01-01-preview' = {
name: guid(subscription().id, 'my-custom-role')
properties: {
roleName: 'my-custom-role'
description: 'This is a custom role'
permissions: [
{
actions: ['*']
}
]
assignableScopes: [subscription().id]
}
}
제외 항목 없이 모든 관리 작업을 포함합니다. 이 역할이 할당되면 역할 정의 관리 등 광범위한 권한이 부여됩니다.
변경 후
bicep
targetScope = 'subscription'
resource roleDef 'Microsoft.Authorization/roleDefinitions@2018-01-01-preview' = {
name: guid(subscription().id, 'my-custom-role')
properties: {
roleName: 'my-custom-role'
description: 'This is a custom role'
permissions: [
{
actions: ['Microsoft.Authorization/roleDefinitions/read']
}
]
assignableScopes: [subscription().id]
}
}
역할 정의 읽기만 포함합니다. 실제 업무에 읽기만 필요한 경우의 예시이며, 다른 역할을 통해 받은 권한까지 제거하지는 않습니다.