Azure カスタム ロールを管理する

このユニットでは、Azure カスタム ロールを誰がどのように管理できるかを学習します。

カスタム ロールは誰が管理できるのですか?

一般に、所有者またはユーザー アクセス管理者のロールを持つ管理者には、カスタム ロールを作成および管理するためのアクセス許可があります。 既定では、これらのロールは、すべてのロールの割り当てスコープに対する Microsoft.Authorization/roleDefinitions/write アクセス許可を持っています。 このアクセス許可は、カスタム ロールを作成、削除、または更新するために必要です。

ロールの割り当てスコープは、 AssignableScopes の下にあるカスタム ロール定義で定義されています。 ユニット 2 で説明したように、 AssignableScopes は 1 つ以上のサブスクリプション、リソース グループ、またはリソースである可能性があります。

次の表に、カスタム ロールを作成、削除、更新、または表示するために必要なアクセス許可を示します。 カスタム ロールを管理するには、ロール定義で、関連する ActionsAssignableScopes を持つロールに割り当てられている必要があります。

タスク アクション 説明
作成/削除 Microsoft.Authorization/roleDefinitions/write ユーザーは、スコープで使用するカスタム ロールを作成または削除できます。 たとえば、サブスクリプション、リソース グループ、およびリソースの所有者とユーザー アクセス管理者です。
更新 Microsoft.Authorization/roleDefinitions/write ユーザーは、スコープ内のカスタム ロールを更新できます。 たとえば、サブスクリプション、リソース グループ、およびリソースの所有者とユーザー アクセス管理者です。
表示 Microsoft.Authorization/roleDefinitions/read ユーザーは、スコープで割り当て可能なカスタム ロールを表示できます。 すべての組み込みロールを使用すると、カスタム ロールを割り当てに使用できます。

カスタム ロールを作成する

ユニット 3 では、Azure CLI を使用してカスタム ロールを作成しました。 カスタム ロールは、Azure portal または Azure PowerShell を使用して作成することもできます。

Azure portal を使用してカスタム ロールを作成する

Azure portal で、カスタム ロールのスコープを適用するサブスクリプションまたはリソース グループに移動します。 次に、 [アクセス制御 (IAM)] に移動し、 [追加] > [カスタム ロールの追加] を選択します。

[追加] ボタンの下の [カスタム ロールの追加] オプションを示すスクリーンショット。

既存のロールを複製するか、最初から作成するかを選択できます。

[ロールを複製します] ラジオ ボタンと、[複製するロール] として [仮想マシン共同作成者] が選択されているスクリーンショット。

どちらを選択した場合でも、アクセス許可、スコープ、および結果として得られる JSON を編集できます。

Azure PowerShell を使用してカスタム ロールを作成する

Azure PowerShell を使用してロールを作成するステップは、ユニット 2 および 3 で説明したものと似ています。 JSON ファイルでカスタム ロールを定義した後、Azure CLI で次のコマンドを使用してカスタム ロールを作成します。

az role definition create --role-definition vm-operator-role.json

Azure PowerShell でロールを作成するには、次のコマンドを実行します。

New-AzRoleDefinition -InputFile "vm-operator-role.json"

カスタム ロールを更新する

カスタム ロールを更新するには、Azure CLI または Azure PowerShell を使用します。 次のユニットでカスタム ロール定義を更新するための具体的なステップについて説明します。 ただし、一般には、変更内容で JSON ファイルを更新した後、次のコマンドのいずれかを実行します。

Azure CLI を使用してカスタム ロールを更新するには、更新プログラムが含まれている JSON ファイルへのパスを使用して次のコマンドを実行します。

az role definition update --role-definition "<<path-to-json-file>>"

Azure PowerShell では、更新された JSON ファイルへのパスを使用して次のコマンドを実行します。

Set-AzRoleDefinition -InputFile "<<path-to-json-file>>"

カスタム ロールを表示する

次のユニットでは、Azure portal にカスタム ロールを表示する方法について説明します。 また、Azure CLI または PowerShell を使用して、カスタム ロールの一覧を取得することもできます。

Azure CLI を使用してすべてのカスタム ロールを一覧表示するには、次のコマンドを使用します。

az role definition list --custom-role-only true --output json | jq '.[] | {"roleName":.roleName, "roleType":.roleType}'

このコマンドはロール名とロールの種類を確認するだけであることに注意してください。 これにより、多数のロールを表示しやすくなります。

Azure PowerShell を使用してすべてのカスタム ロールを一覧表示するには、次のコマンドを使用します。 このコマンドは、サブスクリプションで割り当て可能なカスタム ロールの一覧を表示します。 サブスクリプションがロールの AssignableScopes にない場合、カスタム ロールは表示されません。

Get-AzRoleDefinition | ? {$_.IsCustom -eq $true} | FT Name, IsCustom

ロール定義を表示する

特定のロールの完全な定義を表示するには、次の Azure CLI コマンドを使用します。

az role definition list --name "Virtual Machine Operator"

PowerShell で定義を表示するには、次の Azure CLI コマンドを使用します。

Get-AzRoleDefinition "Virtual Machine Operator" 

カスタム ロールの割り当てを一覧表示する

次のコマンドを使用すると、Azure CLI で作成したカスタム ロールに割り当てられたユーザーを確認できます。

az role assignment list --role "Virtual Machine Operator"

PowerShell の場合は、次のコマンドを実行します。

Get-AzRoleAssignment -RoleDefinitionName "Virtual Machine Operator"

カスタム ロールを削除する

次のユニットの演習では、ユニット 3 で作成したカスタム ロールが必要です。 そのため、カスタム ロールはまだ削除しないでください。 まず、カスタム ロールを削除する方法について説明します。

ロールの割り当てを削除する

カスタム ロールが不要になった場合は、ロールを削除する前に、ロールの割り当てを削除する必要があります。

Azure portal では、カスタム ロールのスコープが適用されるサブスクリプション、リソース グループ、またはリソースに移動して、割り当てを削除できます。 その後、 [アクセス制御 (IAM)] > [ロールの割り当て] の順に選択します。 ロール名でフィルター処理し、ロールに割り当てられているすべてのユーザーを選択し、 [削除] を選択します。

Azure CLI では、次のコマンドをカスタム ロールの名前と共に使用します。

   az role assignment delete --role "role name"

Azure PowerShell では、コマンドレット Remove-AzRoleAssignment を使用します。 このコマンドは次のようになります。

Remove-AzRoleAssignment -ObjectId <object_id> -RoleDefinitionName "role name" -Scope /subscriptions/<subscription_id>

ObjectID は、ユーザー、グループ、またはサービス プリンシパルの Azure AD ObjectId です。

カスタム ロールを削除する

カスタム ロールは、Azure portal、Azure CLI、または Azure PowerShell を使用して削除できます。

Azure portal で、カスタム ロールのスコープが適用されるサブスクリプション、リソース グループ、またはリソースに移動します。 その後、 [アクセス制御 (IAM)] > [ロール] の順に選択します。 ロールを検索するには、 [種類] > [CustomRole] の順に選択します。

ドロップダウン リストから選択されたカスタム ロールを示すスクリーンショット。

ロールを選択してから、 [削除] を選択します。

次のユニットでは、次のコマンドを使用して、Azure CLI を使用してカスタム ロールを削除します。

az role definition delete --name "role name"

PowerShell では、次のコマンドを使用してロールを削除します。

Get-AzRoleDefinition "role name" | Remove-AzRoleDefinition

自分の知識をチェックする

1.

カスタム ロールを更新するための Azure PowerShell コマンドレットは何ですか?

2.

カスタム ロールはどのような手順で削除するのですか?