列出 Azure 否定性指派
類似於角色指派, 拒絕指派 會將一組拒絕動作附加至特定範圍的使用者、群組或服務主體,以拒絕存取。 拒絕指派會封鎖使用者執行指定的 Azure 資源動作,即使角色指派授予他們存取權也一樣。
本文說明如何列出拒絕指派。
重要
您無法直接建立自己的否定性指派。 拒絕指派是由 Azure 建立和管理。
如何建立拒絕指派
拒絕指派會由 Azure 建立及管理,目的是保護資源。 您無法直接建立自己的否定性指派。 不過,您可以在建立部署堆疊時指定拒絕設定,這會建立部署堆棧資源所擁有的拒絕指派。 部署堆疊目前為預覽狀態。 如需詳細資訊,請參閱 保護受控資源免於刪除。
比較角色指派和拒絕指派
拒絕指派遵循與角色指派類似的模式,但也有一些差異。
功能 |
角色指派 |
拒絕指派 |
授予存取權 |
✅ |
|
拒絕存取 |
|
✅ |
可以直接建立 |
✅ |
|
在範圍中套用 |
✅ |
✅ |
排除主體 |
|
✅ |
防止繼承至子範圍 |
|
✅ |
套用至傳統訂用 帳戶管理員 指派 |
|
✅ |
拒絕指派屬性
拒絕指派具有下列屬性:
屬性 |
必要 |
類型 |
描述 |
DenyAssignmentName |
Yes |
String |
拒絕指派的顯示名稱。 指定範圍的名稱必須是唯一的。 |
Description |
No |
String |
拒絕指派的描述。 |
Permissions.Actions |
至少一個 Actions 或一個 DataActions |
String[] |
字串陣列,指定拒絕指派封鎖存取的控制平面動作。 |
Permissions.NotActions |
No |
String[] |
字串陣列,指定要從拒絕指派中排除的控制平面動作。 |
Permissions.DataActions |
至少一個 Actions 或一個 DataActions |
String[] |
字串陣列,指定拒絕指派封鎖存取的數據平面動作。 |
Permissions.NotDataActions |
No |
String[] |
字串陣列,指定要從拒絕指派排除的數據平面動作。 |
Scope |
No |
String |
字串,指定拒絕指派套用的範圍。 |
DoNotApplyToChildScopes |
No |
布林值 |
指定拒絕指派是否適用於子範圍。 預設值為 False。 |
Principals[i].Id |
Yes |
String[] |
套用拒絕指派的 Microsoft Entra 主體對象識別碼陣列(使用者、群組、服務主體或受控識別)。 設定為空白 GUID 00000000-0000-0000-0000-000000000000 來表示所有主體。 |
Principals[i].Type |
No |
String[] |
Principals[i].Id 所代表的物件類型數位。設定為 SystemDefined 代表所有主體。 |
ExcludePrincipals[i].Id |
No |
String[] |
Microsoft Entra 主體對象標識子陣列(使用者、群組、服務主體或受控識別),拒絕指派不適用。 |
ExcludePrincipals[i].Type |
No |
String[] |
ExcludePrincipals[i].Id 所代表的物件類型數位。 |
IsSystemProtected |
No |
布林值 |
指定此拒絕指派是否由 Azure 建立,且無法編輯或刪除。 目前,所有拒絕指派都會受到系統保護。 |
所有主體主體
為了支援拒絕指派,已引進名為 「所有主體 」的系統定義主體。 此主體代表 Microsoft Entra 目錄中的所有使用者、群組、服務主體和受控識別。 如果主體標識碼為零 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 內建角色都具有這項權限。
列出 Azure 入口網站 中的拒絕指派
請遵循下列步驟,列出訂用帳戶或管理群組範圍的拒絕指派。
在 Azure 入口網站 中,開啟選取的範圍,例如資源群組或訂用帳戶。
選取 [存取控制 (IAM)]。
選取 [ 拒絕指派] 索引 標籤(或選取 [檢視拒絕指派] 圖格上的 [檢視 ] 按鈕。
如果此範圍有任何拒絕指派或繼承至此範圍,則會列出這些指派。
若要顯示其他數據行,請選取 [ 編輯數據行]。
資料行 |
描述 |
名稱 |
拒絕指派的名稱。 |
主體類型 |
使用者、群組、系統定義群組或服務主體。 |
否認 |
拒絕指派中包含的安全性主體名稱。 |
Id |
拒絕指派的唯一標識符。 |
排除的主體 |
是否有從拒絕指派中排除的安全性主體。 |
不適用於子系 |
拒絕指派是否繼承至子範圍。 |
系統保護 |
拒絕指派是否由 Azure 管理。 目前一律為 [是]。 |
範圍 |
管理群組、訂用帳戶、資源群組或資源。 |
將複選標記新增至任何已啟用的項目,然後選取 [ 確定 ] 以顯示選取的數據行。
列出拒絕指派的詳細數據
請遵循下列步驟列出關於拒絕指派的其他詳細數據。
開啟 [ 拒絕指派] 窗格,如上一節所述。
選取拒絕指派名稱以開啟 [ 使用者] 頁面。
[ 使用者] 頁面包含下列兩個區段。
拒絕設定 |
描述 |
拒絕指派適用於 |
拒絕指派套用的安全性主體。 |
拒絕指派排除 |
從拒絕指派中排除的安全性主體。 |
系統定義主體 代表 Azure AD 目錄中的所有使用者、群組、服務主體和受控識別。
若要查看拒絕的許可權清單,請選取 [拒絕的許可權]。
動作類型 |
描述 |
動作 |
拒絕的控制平面動作。 |
NotActions |
從拒絕的控制平面動作中排除的控制平面動作。 |
DataActions |
拒絕的數據平面動作。 |
NotDataActions |
從拒絕的數據平面動作中排除的數據平面動作。 |
針對上一個螢幕快照中顯示的範例,以下是有效的許可權:
- 數據平面上的所有記憶體動作都會遭到拒絕,但計算動作除外。
若要查看拒絕指派的屬性,請選取 [ 屬性]。
在 [ 屬性] 頁面上,您可以看到拒絕指派名稱、標識碼、描述和範圍。 [不適用於子系] 參數,指出拒絕指派是否繼承至子範圍。 系統 保護 的交換器指出此拒絕指派是否由 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。 若要取得訂用帳戶標識碼,您可以在 Azure 入口網站 的 [訂用帳戶] 頁面上找到它,也可以使用 Get-AzSubscription。
Get-AzDenyAssignment -Scope /subscriptions/<subscription_id>
必要條件
若要取得否定性指派的相關資訊,您必須具備:
Microsoft.Authorization/denyAssignments/read
權限,大多數 Azure 內建角色都具有這項權限。
您必須使用以下版本:
2018-07-01-preview
(含) 以後版本
2022-04-01
是第一個穩定版本
列出單一拒絕指派
若要列出單一否定性指派,請使用 Deny Assignments - 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} 取代為您想要擷取的拒絕指派識別碼。
列出多個拒絕指派
若要列出多個否定性指派,請使用 Deny Assignments - 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}') |
列出指定使用者或服務主體的否定性指派。 如果使用者是具有否定性指派的群組成員,系統也會列出該否定性指派。 此篩選條件適用於群組,換句話說,如果使用者是某個群組的成員,而該群組是另一個具有否定性指派的群組成員,系統也會列出該否定性指派。 此篩選條件只接受使用者或服務主體的物件識別碼。 您無法傳遞群組的物件識別碼。 |
$filter=atScope()+and+assignedTo('{objectId}') |
列出指定使用者或服務主體,以及指定範圍的否定性指派。 |
$filter=denyAssignmentName+eq+'{deny-assignment-name}' |
列出具有指定名稱的否定性指派。 |
$filter=principalId+eq+'{objectId}' |
列出指定使用者、群組或服務主體的否定性指派。 |
列出根範圍 (/) 內的拒絕指派
提高您的存取權,如提高存取權以管理所有 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}' |
列出具有指定名稱的拒絕指派。 |
移除已提高的存取權。
下一步