共用方式為


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 物件的形式,提供角色定義做為命令的輸入。 輸入角色定義必須包含下列屬性:

  1. DisplayName:自定義角色的名稱
  2. 描述..角色的簡短描述,摘要說明角色授與的存取權。
  3. 動作:自定義角色授與存取權的作業集。 使用 Get-AzureRmProviderOperation 取得可使用 Azure RBAC 保護的 Azure 資源提供者作業。 以下是一些有效的作業字串:
  • “*/read” 會授與所有 Azure 資源提供者讀取作業的存取權。
  • “Microsoft.Network/*/read” 會授與 Azure Microsoft.Network 資源提供者中所有資源類型的讀取作業存取權。
  • “Microsoft.Compute/virtualMachines/*” 會授與虛擬機及其子資源類型之所有作業的存取權。
  1. 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 包含下列屬性:
  1. NotActions:必須從動作中排除的作業集,以判斷自定義角色的有效動作。 如果您不想在自定義角色中授與存取權的特定作業,則可以使用 NotActions 排除它,而不是在 Actions 中指定該特定作業以外的所有作業。
  2. DataActions:自定義角色授與存取權的數據作業集。
  3. 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

輸出

PSRoleDefinition

備註

關鍵詞:azure, azurerm, arm, 資源, 管理, 管理員, 資源, 群組, 範本, 部署