列出 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 管理。 目前都是。 |
Scope |
管理群組、訂用帳戶、資源群組或資源。 |
新增核取記號至任何已啟用的項目,然後選取 [確定] 以顯示選取的資料行。
列出否定性指派的相關詳細資料
請遵循下列步驟來列出否定性指派的其他相關詳細資料。
如上一節所述,開啟 [拒絕指派] 窗格。
選取拒絕指派的名稱以開啟 [使用者] 頁面。
[使用者] 頁面包含下列兩個區段。
拒絕設定 |
描述 |
拒絕指派會套用到 |
拒絕指派套用的安全性主體。 |
拒絕指派不包括 |
拒絕指派排除在外的安全性主體。 |
系統定義的主體代表 Azure AD 目錄中的所有使用者、群組、服務主體及受控身分識別。
若要查看被拒絕的權限清單,請選取 [拒絕的權限]。
動作類型 |
描述 |
動作 |
已拒絕的控制平面動作。 |
NotActions |
從拒絕的控制平面動作排除的控制平面動作。 |
DataActions |
已拒絕的資料平面動作。 |
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。 若要取得訂用帳戶識別碼,可以在 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}' |
列出具有指定名稱的拒絕指派。 |
移除已提高的存取權。
下一步