Azure カスタム ロールを管理する
このユニットでは、Azure カスタム ロールを誰がどのように管理できるかを学習します。
カスタム ロールは誰が管理できるのですか?
一般に、所有者またはユーザー アクセス管理者のロールを持つ管理者には、カスタム ロールを作成および管理するためのアクセス許可があります。 既定では、これらのロールは、ロールの割り当てスコープのすべてにおいて Microsoft.Authorization/roleDefinitions/write
アクセス許可を持ちます。 このアクセス許可は、カスタム ロールを作成、削除、または更新するために必要です。
ロールの割り当てスコープは、AssignableScopes のカスタム ロール定義内で定義されています。 ユニット 2 で説明したように、AssignableScopes は 1 つまたは複数のサブスクリプション、リソース グループ、またはリソースである可能性があります。
次の表に、カスタム ロールの作成、削除、更新、表示を行うために必要なアクセス許可を示します。 カスタム ロールを管理するには、ロール定義で、関連する Actions と AssignableScopes を持つロールに割り当てられている必要があります。
タスク | アクション | 説明 |
---|---|---|
作成/削除 | Microsoft.Authorization/roleDefinitions/write |
ユーザーは、スコープで使用するカスタム ロールを作成または削除できます。 例: サブスクリプション、リソース グループ、およびリソースの所有者とユーザー アクセス管理者。 |
更新 | Microsoft.Authorization/roleDefinitions/write |
ユーザーは、スコープ内のカスタム ロールを更新できます。 例: サブスクリプション、リソース グループ、およびリソースの所有者とユーザー アクセス管理者。 |
表示 | Microsoft.Authorization/roleDefinitions/read |
ユーザーは、スコープで割り当て可能なカスタム ロールを表示できます。 すべての組み込みロールを使用すると、カスタム ロールを割り当てに使用できます。 |
カスタム ロールを作成する
前のユニットでは、Azure CLI を使用してカスタム ロールを作成しました。 カスタム ロールは、Azure portal または Azure PowerShell を使用して作成することもできます。
Azure portal を使用してカスタム ロールを作成する
Azure portal で、カスタム ロール スコープの適用対象にしたいサブスクリプションまたはリソース グループに移動してから、[アクセス制御 (IAM)] に移動し、[追加]>[カスタム ロールの追加] の順に選択します。
既存のロールを複製するか、最初から作成するかを選択できます。
どちらを選択した場合でも、アクセス許可、スコープ、および結果として得られる JSON を編集できます。
Azure PowerShell を使用してカスタム ロールを作成する
Azure PowerShell を使用してロールを作成する手順は、前の 2 つのユニットで説明したものと似ています。 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 で定義を表示するには、次のコマンドを使用します。
Get-AzRoleDefinition "Virtual Machine Operator"
カスタム ロールの割り当てを一覧表示する
次のコマンドを使用すると、Azure CLI で作成したカスタム ロールに割り当てられたユーザーを確認できます。
az role assignment list --role "Virtual Machine Operator"
PowerShell の場合は、次のコマンドを実行します。
Get-AzRoleAssignment -RoleDefinitionName "Virtual Machine Operator"
カスタム ロールを削除する
次のユニットの演習では、前のユニットで作成したカスタム ロールが必要なため、カスタム ロールはまだ削除しないでください。 まず、カスタム ロールを削除する方法について説明します。
ロールの割り当てを削除する
カスタム ロールが不要になった場合は、ロールを削除する前に、ロールの割り当てを削除する必要があります。
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
は、ユーザー、グループ、またはサービス プリンシパルの Microsoft Entra 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