‘거부 할당’은 역할 할당과 마찬가지로 액세스를 거부하기 위해 특정 범위에서 사용자, 그룹 또는 서비스 주체에게 거부 작업 세트를 연결합니다. 거부 할당은 역할 할당이 사용자에게 액세스 권한을 부여하더라도 특정 Azure 리소스 작업을 사용자가 수행할 수 없도록 차단합니다.
이 문서에서는 거부 할당을 나열하는 방법을 설명합니다.
중요합니다
사용자 고유의 거부 할당을 직접 만들 수는 없습니다. 거부 할당은 Azure에서 만들고 관리합니다.
거부 할당을 만드는 방법
거부 할당은 리소스를 보호하기 위해 Azure에서 만들고 관리합니다. 사용자 고유의 거부 할당을 직접 만들 수는 없습니다. 하지만 배포 스택을 만들 때 거부 설정을 지정하여 배포 스택 리소스가 소유하는 거부 할당을 만들 수 있습니다. 자세한 내용은 관리되는 리소스 보호 및 Azure RBAC 제한을 참조하세요.
역할 할당 및 거부 할당 비교
거부 할당은 역할 할당과 유사한 패턴을 따르지만 몇 가지 차이점이 있습니다.
기능 |
역할 할당 |
할당 거부 |
액세스 허가 |
✅ |
|
액세스 거부 |
|
✅ |
직접 만들 수 있음 |
✅ |
|
범위에서 적용 |
✅ |
✅ |
보안 주체 제외 |
|
✅ |
자식 범위에 대한 상속 방지 |
|
✅ |
클래식 구독 관리자 할당에 적용 |
|
✅ |
거부 할당 속성
거부 할당에 포함된 속성은 다음과 같습니다.
속성 |
필수 |
유형 |
설명 |
DenyAssignmentName |
예 |
문자열 |
거부 할당의 표시 이름입니다. 이름은 지정된 범위에 대해 고유해야 합니다. |
Description |
아니요 |
문자열 |
거부 할당의 설명입니다. |
Permissions.Actions |
Actions 또는 DataActions 하나 이상 |
문자열[] |
거부 할당에서 액세스를 차단하는 컨트롤 플레인 작업을 지정하는 문자열 배열입니다. |
Permissions.NotActions |
아니요 |
문자열[] |
거부 할당에서 제외할 컨트롤 플레인 작업을 지정하는 문자열 배열입니다. |
Permissions.DataActions |
Actions 또는 DataActions 하나 이상 |
문자열[] |
거부 할당에서 액세스를 차단하는 데이터 평면 작업을 지정하는 문자열 배열입니다. |
Permissions.NotDataActions |
아니요 |
문자열[] |
거부 할당에서 제외할 데이터 평면 작업을 지정하는 문자열 배열입니다. |
Scope |
아니요 |
문자열 |
거부 할당이 적용되는 범위를 지정하는 범위입니다. |
DoNotApplyToChildScopes |
아니요 |
부울 |
거부 할당이 하위 범위에 적용되는지 여부를 지정합니다. 기본값은 거짓입니다. |
Principals[i].Id |
예 |
문자열[] |
거부 할당이 적용되는 Microsoft Entra 보안 주체 개체 ID(사용자, 그룹, 서비스 주체 또는 관리 ID)의 배열입니다. 모든 보안 주체를 나타내려면 빈 GUID 00000000-0000-0000-0000-000000000000 으로 설정합니다. |
Principals[i].Type |
아니요 |
문자열[] |
Principals[i].Id로 표현되는 개체 형식의 배열입니다. 모든 보안 주체를 나타내려면 SystemDefined 로 설정합니다. |
ExcludePrincipals[i].Id |
아니요 |
문자열[] |
거부 할당이 적용되지 않는 Microsoft Entra 보안 주체 개체 ID(사용자, 그룹, 서비스 주체 또는 관리 ID)의 배열입니다. |
ExcludePrincipals[i].Type |
아니요 |
문자열[] |
ExcludePrincipals[i].Id로 표시되는 개체 유형의 배열입니다. |
IsSystemProtected |
아니요 |
부울 |
이 거부 할당이 Azure에서 생성되었으며 편집하거나 삭제할 수 없는지 여부를 지정합니다. 현재 모든 거부 할당은 시스템에서 보호됩니다. |
모든 보안 주체
거부 할당을 지원하기 위해 모든 보안 주체라는 시스템 정의 보안 주체가 도입되었습니다. 이 주체는 Microsoft Entra의 모든 사용자, 그룹, 서비스 주체 및 관리 ID를 나타냅니다. 보안 주체 ID가 0만 포함하는 GUID 00000000-0000-0000-0000-000000000000
이고 보안 주체 유형이 SystemDefined
이면 보안 주체는 모든 보안 주체를 나타냅니다. Azure PowerShell 출력에서 모든 보안 주체는 다음과 같습니다.
Principals : {
DisplayName: All Principals
ObjectType: SystemDefined
ObjectId: 00000000-0000-0000-0000-000000000000
}
모든 주체를 ExcludePrincipals
와 결합하면 일부 사용자를 제외한 모든 보안 주체를 거부할 수 있습니다. 모든 보안 주체에는 다음과 같은 제약 조건이 있습니다.
-
Principals
에서만 사용할 수 있으며 ExcludePrincipals
에서는 사용할 수 없습니다.
-
Principals[i].Type
은 SystemDefined
로 설정해야 합니다.
거부 할당 목록
다음 단계에 따라 거부 할당을 나열합니다.
중요합니다
사용자 고유의 거부 할당을 직접 만들 수는 없습니다. 거부 할당은 Azure에서 만들고 관리합니다. 자세한 내용은 삭제로부터 관리되는 리소스 보호를 참조하세요.
필수 조건
거부 할당에 대한 정보를 가져오려면 다음이 있어야 합니다.
- 대부분의
Microsoft.Authorization/denyAssignments/read
에 포함되어 있는 권한
Azure Portal에서 거부 할당 나열
구독 또는 관리 그룹 범위에서 거부 할당을 보려면 다음 단계를 따릅니다.
Azure Portal에서 리소스 그룹 또는 구독과 같은 선택한 범위를 엽니다.
액세스 제어(IAM) 를 선택합니다.
거부 할당 탭을 선택합니다(또는 거부 할당 보기 타일에서 보기 단추를 선택합니다).
이 범위에 거부 할당이 있거나 이 범위에 상속된 거부 할당이 있으면 나열됩니다.
추가 열을 표시하려면 열 편집을 선택합니다.
열 |
설명 |
이름 |
거부 할당의 이름입니다. |
주체 유형 |
사용자, 그룹, 시스템 정의 그룹 또는 서비스 주체입니다. |
거부됨 |
거부 할당에 포함된 보안 주체의 이름입니다. |
ID |
거부 할당의 고유 식별자입니다. |
제외된 보안 주체 |
거부 할당에서 제외된 보안 주체가 있는지 여부입니다. |
자식에 적용되지 않음 |
거부 할당이 하위 범위에 상속되는지 여부입니다. |
시스템 보호됨 |
거부 할당이 Azure에서 관리되는지 여부입니다. 현재, 항상 예입니다. |
범위 |
관리 그룹, 구독, 리소스 그룹 또는 리소스입니다. |
사용 가능한 항목에 확인 표시를 추가한 후 확인을 선택하여 선택한 열을 표시합니다.
거부 할당에 관한 세부 정보 나열
거부 할당에 관한 추가 세부 정보를 나열하려면 다음 단계를 따르세요.
이전 섹션에 설명한 대로 거부 할당 창을 엽니다.
거부 할당 이름을 클릭하여 사용자 페이지를 엽니다.
사용자 페이지에는 다음 두 개의 섹션이 있습니다.
거부 설정 |
설명 |
거부 할당 적용 대상 |
거부 할당이 적용되는 보안 주체입니다. |
거부 할당 제외 대상 |
거부 할당에서 제외된 보안 주체입니다. |
시스템 정의 보안 주체는 Azure AD 디렉터리의 모든 사용자, 그룹, 서비스 주체 및 관리 ID를 나타냅니다.
거부된 권한 목록을 보려면 거부된 권한을 선택합니다.
작업 유형 |
설명 |
actions |
컨트롤 플레인 작업이 거부되었습니다. |
NotActions (액션 아님) |
거부된 컨트롤 플레인 작업에서 제외된 컨트롤 플레인 작업입니다. |
데이터 액션 |
데이터 평면 작업이 거부되었습니다. |
NotDataActions (영문) |
거부된 데이터 평면 작업에서 제외된 데이터 평면 작업입니다. |
이전 스크린샷에 나온 예의 경우 다음이 유효 권한입니다.
- 컴퓨팅 작업을 제외하고 데이터 평면에 있는 모든 스토리지 작업이 거부됩니다.
거부 할당에 대한 속성을 보려면 속성을 선택합니다.
속성 페이지에서 거부 할당 이름, ID, 설명 및 범위를 볼 수 있습니다.
자식에 적용되지 않음 스위치는 거부 할당이 하위 범위에 상속되는지 여부를 나타냅니다.
시스템 보호됨 스위치는 이 거부 할당이 Azure에서 관리되는지 여부를 나타냅니다. 현재, 모든 경우에 대해 예입니다.
필수 조건
거부 할당에 대한 정보를 가져오려면 다음이 있어야 합니다.
모든 거부 할당 나열
현재 구독에 대한 모든 거부 할당을 나열하려면 Get-AzDenyAssignment를 사용합니다.
Get-AzDenyAssignment
PS C:\> Get-AzDenyAssignment
Id : /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/demoRg/providers/Microsoft.Storage/storageAccounts/storef2dfaqv5dzzfy/providers/Microsoft.Authorization/denyAssignments/6d266d71-a890-53b7-b0d8-2af6769ac019
DenyAssignmentName : Deny assignment '6d266d71-a890-53b7-b0d8-2af6769ac019' created by Deployment Stack '/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack'.
Description : Created by Deployment Stack '/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack'.
Actions : {*/delete}
NotActions : {Microsoft.Authorization/locks/delete, Microsoft.Storage/storageAccounts/delete}
DataActions : {}
NotDataActions : {}
Scope : /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/demoRg/providers/Microsoft.Storage/storageAccounts/storef2dfaqv5dzzfy
DoNotApplyToChildScopes : True
Principals : {
DisplayName: All Principals
ObjectType: SystemDefined
ObjectId: 00000000-0000-0000-0000-000000000000
}
ExcludePrincipals : {
DisplayName: User1
ObjectType: User
ObjectId: 675986ff-5b6a-448c-9a22-fd2a65100221
}
IsSystemProtected : True
Id : /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/demoRg/providers/Microsoft.Network/virtualNetworks/vnetf2dfaqv5dzzfy/providers/Microsoft.Authorization/denyAssignments/36a162b5-ddcc-529a-9deb-673250f90ba7
DenyAssignmentName : Deny assignment '36a162b5-ddcc-529a-9deb-673250f90ba7' created by Deployment Stack '/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack'.
Description : Created by Deployment Stack '/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack'.
Actions : {*/delete}
NotActions : {Microsoft.Authorization/locks/delete, Microsoft.Storage/storageAccounts/delete}
DataActions : {}
NotDataActions : {}
Scope : /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/demoRg/providers/Microsoft.Network/virtualNetworks/vnetf2dfaqv5dzzfy
DoNotApplyToChildScopes : True
Principals : {
DisplayName: All Principals
ObjectType: SystemDefined
ObjectId: 00000000-0000-0000-0000-000000000000
}
ExcludePrincipals : {
DisplayName: User1
ObjectType: User
ObjectId: 675986ff-5b6a-448c-9a22-fd2a65100221
}
IsSystemProtected : True
리소스 그룹 범위에서 거부 할당 나열
리소스 그룹 범위에서 모든 거부 할당을 나열하려면 Get-AzDenyAssignment를 사용합니다.
Get-AzDenyAssignment -ResourceGroupName <resource_group_name>
구독 범위에서 거부 할당 나열
구독 범위에서 모든 거부 할당을 나열하려면 Get-AzDenyAssignment를 사용합니다. 구독 ID를 가져오려면 Azure Portal의 구독 페이지에서 확인하거나 Get-AzSubscription을 사용할 수 있습니다.
Get-AzDenyAssignment -Scope /subscriptions/<subscription_id>
필수 조건
거부 할당에 대한 정보를 가져오려면 다음이 있어야 합니다.
- 대부분의
Microsoft.Authorization/denyAssignments/read
에 포함되어 있는 권한
다음 버전을 사용해야 합니다.
-
2018-07-01-preview
이상
-
2022-04-01
는 안정적인 첫 번째 버전입니다.
단일 거부 할당 나열
단일 거부 할당을 나열하려면 거부 할당 - Get REST API를 사용합니다.
다음 요청으로 시작합니다.
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/denyAssignments/{deny-assignment-id}?api-version=2022-04-01
URI 내에서 {scope}를 거부 할당을 나열하려는 범위로 바꿉니다.
범위 |
유형 |
subscriptions/{subscriptionId} |
구독 |
subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 |
리소스 그룹 |
subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 |
리소스 |
{deny-assignment-id}를 검색하려는 거부 할당 식별자로 바꿉니다.
여러 거부 할당 나열
여러 거부 할당을 나열하려면 거부 할당- List REST API를 사용합니다.
다음 요청 중 하나로 시작합니다.
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/denyAssignments?api-version=2022-04-01
선택적 매개 변수 사용:
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/denyAssignments?api-version=2022-04-01&$filter={filter}
URI 내에서 {scope}를 거부 할당을 나열하려는 범위로 바꿉니다.
범위 |
유형 |
subscriptions/{subscriptionId} |
구독 |
subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 |
리소스 그룹 |
subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 |
리소스 |
{filter}를 거부 할당 목록을 필터링하기 위해 적용하려는 조건으로 바꿉니다.
필터 |
설명 |
(필터링 안 함) |
지정된 범위와 그 위아래에 있는 모든 거부 할당을 나열합니다. |
$filter=atScope() |
지정된 범위 이상에 대해서만 거부 할당을 나열합니다. 하위 범위에 있는 거부 할당을 포함하지 않습니다. |
$filter=assignedTo('{objectId}') |
지정된 사용자 또는 서비스 주체에 대한 거부 할당을 나열합니다. 사용자가 거부 할당이 있는 그룹의 멤버인 경우 해당 거부 할당도 나열됩니다. 해당 필터는 그룹에 대해 전이적입니다. 즉, 사용자가 그룹의 멤버이고 해당 그룹이 거부 할당이 있는 다른 그룹의 멤버인 경우에도 해당 거부 할당이 나열됩니다. 해당 필터는 사용자 또는 서비스 주체의 개체 ID만 허용합니다. 그룹의 개체 ID를 전달할 수는 없습니다. |
$filter=atScope()+and+assignedTo('{objectId}') |
지정된 사용자 또는 서비스 주체에 대해 지정된 범위에서 거부 할당을 나열합니다. |
$filter=denyAssignmentName+eq+'{deny-assignment-name}' |
지정된 이름의 거부 할당을 나열합니다. |
$filter=principalId+eq+'{objectId}' |
지정된 사용자, 그룹 또는 서비스 주체에 대한 거부 할당을 나열합니다. |
루트 범위(/)에 있는 거부 할당을 나열합니다.
Elevate access to manage all Azure subscriptions and management groups(모든 Azure 구독 및 관리 그룹을 관리할 수 있도록 액세스 권한 상승)에 설명된 대로 액세스 권한을 승격합니다.
다음 요청을 사용합니다.
GET https://management.azure.com/providers/Microsoft.Authorization/denyAssignments?api-version=2022-04-01&$filter={filter}
{filter}를 거부 할당 목록을 필터링하기 위해 적용하려는 조건으로 바꿉니다. 필터가 필요합니다.
필터 |
설명 |
$filter=atScope() |
루트 범위에 대한 거부 할당만 나열합니다. 하위 범위에 있는 거부 할당을 포함하지 않습니다. |
$filter=denyAssignmentName+eq+'{deny-assignment-name}' |
지정된 이름의 거부 할당을 나열합니다. |
상승된 액세스 권한을 제거합니다.
다음 단계