New-AzureRmRoleDefinition

Azure RBAC でカスタム ロールを作成します。 JSON ロール定義ファイルまたは PSRoleDefinition オブジェクトを入力として指定します。 まず、Get-AzureRmRoleDefinition コマンドを使用して、ベースライン ロール定義オブジェクトを生成します。 次に、必要に応じてプロパティを変更します。 最後に、このコマンドを使用して、ロール定義を使用してカスタム ロールを作成します。

警告

AzureRM PowerShell モジュールは、2024 年 2 月 29 日の時点で正式に非推奨になりました。 引き続きサポートを受け、更新を受け取れるようにするために、AzureRM から Az PowerShell モジュールに移行することをお勧めします。

AzureRM モジュールは引き続き機能する可能性がありますが、メインが維持またはサポートされなくなり、ユーザーの判断とリスクで引き続き使用できます。 Az モジュールへの移行に関するガイダンスについては、移行リソースを参照してください。

構文

New-AzureRmRoleDefinition
   [-InputFile] <String>
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
New-AzureRmRoleDefinition
   [-Role] <PSRoleDefinition>
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]

説明

New-AzureRmRoleDefinition コマンドレットは、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": ロールを 2 つのサブスクリプションで割り当て可能にします。
  • "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e": ロールを 1 つのサブスクリプションで割り当て可能にします。
  • "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e/resourceGroups/Network": このロールは、ネットワーク リソース グループ内でのみ割り当て可能になります。 入力ロール定義 MAY には、次のプロパティが含まれます。
  1. NotActions: カスタム ロールの有効なアクションを決定するためにアクションから除外する必要がある一連の操作。 カスタム ロールでアクセス権を付与しない特定の操作がある場合は、アクションで特定の操作以外のすべての操作を指定するのではなく、NotActions を使用して除外すると便利です。
  2. DataActions: カスタム ロールがアクセスを許可するデータ操作のセット。
  3. NotDataActions: カスタム ロールの有効なデータアクションを決定するために DataActions から除外する必要がある一連の操作。 カスタム ロールでアクセス権を付与しない特定のデータ操作がある場合は、アクションで特定の操作以外のすべての操作を指定するのではなく、NotDataActions を使用して除外すると便利です。 注: NotActions で操作を指定するロールがユーザーに割り当てられ、別のロールも割り当てられている場合は、同じ操作へのアクセス権が付与されます。ユーザーはその操作を実行できます。 NotActions は拒否ルールではありません。特定の操作を除外する必要がある場合に、許可される一連の操作を作成するだけの便利な方法です。 次に示すのは、入力 { "名前": "更新されたロール"、"説明": "すべてのリソースを監視し、仮想マシンを起動および再起動できる" として指定できる json ロール定義のサンプルです。 "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"] }

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 との通信に使用される資格情報、アカウント、テナント、サブスクリプション

Type:IAzureContextContainer
Aliases:AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputFile

単一の json ロール定義を含むファイル名。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Role

ロール定義オブジェクト。

Type:PSRoleDefinition
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

入力

None

出力

PSRoleDefinition

メモ

キーワード: azure, azurerm, arm, リソース, 管理, マネージャー, リソース, グループ, テンプレート, デプロイ