New-AzRoleDefinition
在 Azure RBAC 中建立自定義角色。 提供 JSON 角色定義檔案或 PSRoleDefinition 對象作為輸入。 首先,使用 Get-AzRoleDefinition 命令來產生基準角色定義物件。 然後,視需要修改其屬性。 最後,使用此命令來使用角色定義建立自定義角色。
語法
New-AzRoleDefinition
[-InputFile] <String>
[-SkipClientSideScopeValidation]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
New-AzRoleDefinition
[-Role] <PSRoleDefinition>
[-SkipClientSideScopeValidation]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
Description
New-AzRoleDefinition Cmdlet 會在 Azure 角色型 存取控制 中建立自定義角色。 以 JSON 檔案或 PSRoleDefinition 物件的形式,提供角色定義做為命令的輸入。 輸入角色定義必須包含下列屬性:
- DisplayName:自定義角色的名稱
- 描述..角色的簡短描述,摘要說明角色授與的存取權。
- 動作:自定義角色授與存取權的作業集。 使用 Get-AzProviderOperation 取得可使用 Azure RBAC 保護的 Azure 資源提供者作業。 以下是一些有效的作業字串:
- “*/read” 會授與所有 Azure 資源提供者讀取作業的存取權。
- “Microsoft.Network/*/read” 會授與 azure Microsoft.Network 資源提供者中所有資源類型的讀取作業存取權。
- “Microsoft.Compute/virtualMachines/*” 會授與虛擬機及其子資源類型之所有作業的存取權。
- AssignableScopes:自定義角色將可用於指派的範圍集(Azure 訂用帳戶或資源群組)。 使用 AssignableScopes,您可以讓自定義角色只能在需要它的訂用帳戶或資源群組中指派,而不會使其餘訂用帳戶或資源群組的用戶體驗變得雜亂無章。 以下是一些有效的可指派範圍:
- “/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e”, “/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624”:讓角色可在兩個訂用帳戶中指派。
- “/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e”:讓角色可在單一訂用帳戶中指派。
- “/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e/resourceGroups/Network”:讓角色僅適用於網络資源群組中的指派。 輸入角色定義 MAY 包含下列屬性:
- NotActions:必須從動作中排除的作業集,以判斷自定義角色的有效動作。 如果您不想在自定義角色中授與存取權的特定作業,則可以使用 NotActions 排除它,而不是在 Actions 中指定該特定作業以外的所有作業。
- DataActions:自定義角色授與存取權的數據作業集。
- NotDataActions:必須從 DataActions 中排除的作業集,以判斷自定義角色的有效數據動作。 如果您不想在自定義角色中授與存取權的特定數據作業,則可以使用 NotDataActions 排除它,而不是在 Actions 中指定該特定作業以外的所有作業。 注意:如果使用者獲指派的角色,該角色指定 NotActions 中的作業,並指派另一個角色授與相同作業的存取權-使用者將能夠執行該作業。 NotActions 不是拒絕規則, 只是在需要排除特定作業時建立一組允許作業的便利方式。 以下是可做為輸入 { “Name”: “Updated Role”, “Description”: “Can monitor all resources and start and restart virtual machines”, “Actions”: [ “/read”, “Microsoft.ClassicCompute/virtualmachines/restart/action”, “Microsoft.ClassicCompute/virtualmachines/start/action” ], “NotActions”: [ “/write” ], “DataActions”: [ “Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read” ], “NotDataActions”: [ “Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write“ ], ”AssignableScopes“: [”/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx“] }
範例
範例 1:使用 PSRoleDefinitionObject 建立
$role = New-Object -TypeName Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition
$role.Name = 'Virtual Machine Operator'
$role.Description = 'Can monitor, start, and restart virtual machines.'
$role.IsCustom = $true
$role.AssignableScopes = @("/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
$role.Actions = @(
"Microsoft.Compute/*/read"
"Microsoft.Compute/virtualMachines/start/action"
"Microsoft.Compute/virtualMachines/restart/action"
"Microsoft.Compute/virtualMachines/downloadRemoteDesktopConnectionFile/action"
"Microsoft.Network/*/read"
"Microsoft.Storage/*/read"
"Microsoft.Authorization/*/read"
"Microsoft.Resources/subscriptions/resourceGroups/read"
"Microsoft.Resources/subscriptions/resourceGroups/resources/read"
"Microsoft.Insights/alertRules/*"
"Microsoft.Support/*"
)
New-AzRoleDefinition -Role $role
範例 2:使用 JSON 檔案建立
New-AzRoleDefinition -InputFile C:\Temp\roleDefinition.json
參數
-DefaultProfile
用於與 azure 通訊的認證、帳戶、租用戶和訂用帳戶
類型: | IAzureContextContainer |
別名: | AzContext, AzureRmContext, AzureCredential |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputFile
包含單一 JSON 角色定義的檔名。
類型: | String |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Role
角色定義物件。
類型: | PSRoleDefinition |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-SkipClientSideScopeValidation
如果指定,請略過客戶端範圍驗證。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
None
輸出
備註
關鍵詞:azure, azurerm, arm, 資源, 管理, 管理員, 資源, 群組, 範本, 部署