New-AzureRmRoleDefinition
在 Azure RBAC 中建立自定義角色。 提供 JSON 角色定義檔案或 PSRoleDefinition 對象作為輸入。 首先,使用 Get-AzureRmRoleDefinition 命令來產生基準角色定義物件。 然後,視需要修改其屬性。 最後,使用此命令來使用角色定義建立自定義角色。
警告
自 2024 年 2 月 29 日起,AzureRM PowerShell 模組已正式淘汰。 建議使用者從 AzureRM 遷移至 Az PowerShell 模組,以確保持續支援和更新。
雖然 AzureRM 模組可能仍可運作,但不再維護或支援它,但會根據用戶的判斷權和風險放置任何繼續使用。 如需轉換至 Az 模組的指引,請參閱我們的 移轉資源 。
語法
New-AzureRmRoleDefinition
[-InputFile] <String>
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
New-AzureRmRoleDefinition
[-Role] <PSRoleDefinition>
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
Description
New-AzureRmRoleDefinition Cmdlet 會在 Azure 角色型 存取控制 中建立自定義角色。 以 JSON 檔案或 PSRoleDefinition 物件的形式,提供角色定義做為命令的輸入。 輸入角色定義必須包含下列屬性:
- DisplayName:自定義角色的名稱
- 描述..角色的簡短描述,摘要說明角色授與的存取權。
- 動作:自定義角色授與存取權的作業集。 使用 Get-AzureRmProviderOperation 取得可使用 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 中排除的作業集,以判斷自定義角色的有效 Dataactions。 如果您不想在自定義角色中授與存取權的特定數據作業,則可以使用 NotDataActions 排除它,而不是在 Actions 中指定該特定作業以外的所有作業。 注意:如果使用者獲指派的角色,該角色指定 NotActions 中的作業,並指派另一個角色授與相同作業的存取權-使用者將能夠執行該作業。 NotActions 不是拒絕規則, 只是在需要排除特定作業時建立一組允許作業的便利方式。 以下是範例 json 角色定義,可做為輸入 { “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.儲存體/storageAccounts/blobServices/containers/blobs/read“ ], ”NotDataActions“: [ ”Microsoft.儲存體/storageAccounts/blobServices/containers/blobs/write“ ], ”AssignableScopes“: [”/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxx“] }
範例
使用 PSRoleDefinitionObject 建立
PS C:\> $role = Get-AzureRmRoleDefinition -Name "Virtual Machine Contributor"
PS C:\> $role.Id = $null
PS C:\> $role.Name = "Virtual Machine Operator"
PS C:\> $role.Description = "Can monitor, start, and restart virtual machines."
PS C:\> $role.Actions.RemoveRange(0,$role.Actions.Count)
PS C:\> $role.Actions.Add("Microsoft.Compute/*/read")
PS C:\> $role.Actions.Add("Microsoft.Compute/virtualMachines/start/action")
PS C:\> $role.Actions.Add("Microsoft.Compute/virtualMachines/restart/action")
PS C:\> $role.Actions.Add("Microsoft.Compute/virtualMachines/downloadRemoteDesktopConnectionFile/action")
PS C:\> $role.Actions.Add("Microsoft.Network/*/read")
PS C:\> $role.Actions.Add("Microsoft.Storage/*/read")
PS C:\> $role.Actions.Add("Microsoft.Authorization/*/read")
PS C:\> $role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/read")
PS C:\> $role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/resources/read")
PS C:\> $role.Actions.Add("Microsoft.Insights/alertRules/*")
PS C:\> $role.Actions.Add("Microsoft.Support/*")
PS C:\> $role.AssignableScopes.Clear()
PS C:\> $role.AssignableScopes.Add("/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
PS C:\> New-AzureRmRoleDefinition -Role $role
使用 JSON 檔案建立
PS C:\> New-AzureRmRoleDefinition -InputFile C:\Temp\roleDefinition.json
參數
-DefaultProfile
用於與 azure 通訊的認證、帳戶、租用戶和訂用帳戶
類型: | IAzureContextContainer |
別名: | 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 |
輸入
None
輸出
備註
關鍵詞:azure, azurerm, arm, 資源, 管理, 管理員, 資源, 群組, 範本, 部署