Azure ロールの割り当てについて
ロールの割り当てにより、特定の Azure リソースへのプリンシパル (ユーザー、グループ、マネージド ID、サービス プリンシパルなど) アクセス権を付与できます。 この記事では、ロールの割り当ての詳細について説明します。
ロール割り当て
Azure リソースへのアクセスは、ロールの割り当てを作成することによって許可され、ロールの割り当てを削除することによって取り消されます。
ロールの割り当てには、次のようないくつかのコンポーネントがあります。
- プリンシパル、またはロールが割り当てられているユーザー。
- 割り当てられているロール。
- ロールが割り当てられているスコープ。
- ロールの割り当ての名前と、ロールが割り当てられている理由を説明するのに役立つ記述。
たとえば、Azure RBAC を使用して、次のようなロールを割り当てることができます。
- ユーザー Sally には、リソース グループ ContosoStorage 内のストレージ アカウント contoso123 への所有者アクセス権があります。
- Microsoft Entra ID のクラウド管理者グループの全員が、リソース グループ ContosoStorage 内のすべてのリソースに対して閲覧者アクセスを持っています。
- アプリケーションに関連付けられているマネージド ID は、Contoso のサブスクリプション内の仮想マシンを再起動できます。
次に示すのは、Azure PowerShell を使用して表示される場合のロールの割り当てのプロパティの例です。
{
"RoleAssignmentName": "00000000-0000-0000-0000-000000000000",
"RoleAssignmentId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
"Scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
"DisplayName": "User Name",
"SignInName": "user@contoso.com",
"RoleDefinitionName": "Contributor",
"RoleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c",
"ObjectId": "22222222-2222-2222-2222-222222222222",
"ObjectType": "User",
"CanDelegate": false,
"Description": null,
"ConditionVersion": null,
"Condition": null
}
次に示すのは、Azure CLI、または REST API を使用して表示される場合のロールの割り当てのプロパティの例です。
{
"canDelegate": null,
"condition": null,
"conditionVersion": null,
"description": null,
"id": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
"name": "00000000-0000-0000-0000-000000000000",
"principalId": "22222222-2222-2222-2222-222222222222",
"principalName": "user@contoso.com",
"principalType": "User",
"roleDefinitionId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
"roleDefinitionName": "Contributor",
"scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
"type": "Microsoft.Authorization/roleAssignments"
}
次の表で、ロールの割り当てのプロパティについて説明します。
プロパティ | 説明 |
---|---|
RoleAssignmentName name |
ロールの割り当ての名前は、グローバル一意識別子 (GUID) です。 |
RoleAssignmentId id |
名前を含むロールの割り当ての一意の ID。 |
Scope scope |
ロールの割り当てにスコープが設定されている Azure リソース識別子。 |
RoleDefinitionId roleDefinitionId |
ロールの一意の ID です。 |
RoleDefinitionName roleDefinitionName |
ロールの名前。 |
ObjectId principalId |
ロールが割り当てられているプリンシパルの Microsoft Entra オブジェクト識別子。 |
ObjectType principalType |
プリンシパルが表す Microsoft Entra オブジェクトの種類。 有効な値には User 、Group 、および ServicePrincipal があります。 |
DisplayName |
ユーザーのロールの割り当ての場合は、ユーザーの表示名。 |
SignInName principalName |
ユーザーの一意のプリンシパル名 (UPN)、またはサービス プリンシパルに関連付けられているアプリケーションの名前。 |
Description description |
ロールの割り当ての説明。 |
Condition condition |
ロールの定義と属性から 1 つ以上のアクションを使用して構築された条件文。 |
ConditionVersion conditionVersion |
条件バージョン番号。 既定値は 2.0 で、サポートされている唯一のバージョンです。 |
CanDelegate canDelegate |
実装されていません。 |
Scope
ロールの割り当てを作成するときは、その割り当てを適用するスコープを指定する必要があります。 スコープは、プリンシパルがアクセスできるリソースまたはリソースのセットを表します。 ロールの割り当てのスコープは、単一のリソース、リソース グループ、サブスクリプション、または管理グループに設定できます。
ヒント
要件を満たすために必要な最小のスコープを使用してください。
たとえば、1 つのストレージ アカウントへのマネージド ID アクセスを許可する必要がある場合は、リソース グループまたはサブスクリプションのスコープではなく、ストレージ アカウントのスコープでロールの割り当てを作成することをセキュリティの面からお勧めします。
スコープの詳細については、スコープについての理解に関する記事を参照してください。
割り当てるロール
ロールの割り当てはロールの定義に関連付けられます。 ロールの定義は、ロールの割り当てのスコープ内でプリンシパルが持つ必要があるアクセス許可を指定します。
組み込みのロールの定義またはカスタム ロールの定義を割り当てることができます。 ロールの割り当てを作成する場合、一部のツールではロールの定義 ID を使用する必要がありますが、他のツールではロールの名前を指定できます。
ロールの定義について詳しくは、「ロールの定義について」を参照してください。
プリンシパル
プリンシパルには、ユーザー、セキュリティ グループ、マネージド ID、ワークロード ID、サービス プリンシパルが含まれます。 プリンシパルは Microsoft Entra テナントで作成および管理されます。 任意のプリンシパルへロールを割り当てることができます。 Microsoft Entra ID オブジェクト ID を使用して、ロールを割り当てるプリンシパルを識別します。
Azure PowerShell、Azure CLI、Bicep、または別のコードとしてのインフラストラクチャ (IaC) テクノロジを使用してロールの割り当てを作成する場合は、プリンシパルの種類を指定します。 プリンシパルの種類には、ユーザー、グループ、サービス プリンシパルが含まれます。 正しいプリンシパルの種類を指定することが重要です。 そうしないと、特にサービス プリンシパルやマネージド ID を扱うときに、断続的なデプロイ エラーが発生する場合があります。
名前
ロールの割り当てのリソース名は、グローバル一意識別子 (GUID) である必要があります。
ロール割り当てのスコープが狭くても、ロールの割り当てリソース名は Microsoft Entra テナント内で一意である必要があります。
ヒント
Azure portal、Azure PowerShell、または Azure CLI を使用してロールの割り当てを作成すると、作成プロセスによってロールの割り当てが自動的に一意の名前になります。
Bicep または別のコードとしてのインフラストラクチャ (IaC) テクノロジを使用してロールの割り当てを作成する場合は、ロールの割り当てにどのような名前を付けるかを慎重に計画する必要があります。 詳細については、「Bicep を使用して Azure RBAC リソースを作成する」を参照してください。
リソースの削除動作
Microsoft Entra ID からユーザー、グループ、サービス プリンシパル、またはマネージド ID を削除する場合、ロールの割り当てを削除することをお勧めします。 これらは自動的には削除されません。 削除されたプリンシパル ID を参照するすべてのロールの割り当てが無効になります。
ロールの割り当ての名前を別のロールの割り当てに再利用しようとすると、デプロイは失敗します。 この問題は、Bicep または Azure Resource Manager テンプレート (ARM テンプレート) を使用してロールの割り当てをデプロイする場合に発生する可能性が高くなります。これらのツールを使用する場合は、ロールの割り当て名を明示的に設定する必要があるためです。 この動作を回避するには、再作成する前に古いロールの割り当てを削除するか、新しいロールの割り当てをデプロイするときに一意の名前を使用する必要があります。
説明
ロールの割り当てにテキストの説明を追加できます。 説明は省略可能ですが、ロールの割り当てに追加することをお勧めします。 プリンシパルに割り当てられたロールが必要な理由を簡単に説明します。 だれかがロールの割り当てを監査する場合、説明があれば、なぜそれらが作成されたのか、まだ適用されるかどうかなどを理解するのに役立ちます。
条件
一部のロールは、特定のアクションのコンテキストでの属性に基づいてロールの割り当て条件をサポートします。 ロールの割り当て条件は、ロールの割り当てに追加することによってさらにきめ細かなアクセス制御を可能にする確認のしくみの 1 つです。
たとえば、ユーザーがオブジェクトを読み取るために、オブジェクトに特定のタグが必要であるという条件を追加できます。
通常は、ビジュアル条件エディターを使用して条件を作成しますが、コードを使用した場合の条件の例を次に示します。
((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'))
前途の条件により、ユーザーは、BLOB インデックス タグのキーが Project で、値が Cascade の BLOB を読み取ることができます。
条件の詳細については、「Azure の属性ベースのアクセス制御 (Azure ABAC) とは」を参照してください。
Privileged Identity Management との統合 (プレビュー)
重要
Azure ロールの割り当てと Privileged Identity Management の統合は現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
Microsoft Entra ID P2 または Azure Active Directory Identity Governance ライセンスをお持ちの場合は、Microsoft Entra Privileged Identity Management (PIM) はロールの割り当て手順に統合されています。 たとえば、一定期間、ユーザーにロールを割り当てることができます。 また、承認の要求など、ロールを使用するにはアクティブ化する必要があるように、ユーザーをロールの割り当ての対象にすることもできます。 資格のあるロールの割り当てにより、一定期間、ロールへの Just-In-Time アクセスが提供されます。 アプリケーション、サービス プリンシパル、またはマネージド ID ではアクティブ化手順を実行できないため、資格のあるロールの割り当てを作成することはできません。 資格のあるロールの割り当ては、管理グループ、サブスクリプション、リソース グループのスコープでは作成できますが、リソース スコープでは作成できません。 この機能は段階的にデプロイされているため、テナントではまだ使用できない場合や、インターフェイスの外観が異なる場合があります。
使用できる割り当ての種類のオプションは、PIM ポリシーによって異なる場合があります。 たとえば、PIM ポリシーでは、永続的な割り当てを作成できるかどうか、期限付き割り当ての最長期間、ロールのアクティブ化要件 (承認、多要素認証、または条件付きアクセス認証コンテキスト)、その他の設定が定義されます。 詳細については、「Privileged Identity Management で Azure リソース ロールの設定を構成する」を参照してください。
PIM 機能を使わない場合は、割り当ての種類で [アクティブ]、割り当て期間オプションで [永続] を選びます。 これらの設定により、プリンシパルがロール内で常にアクセス許可を持つロールの割り当てが作成されます。
PIM をより深く理解するには、次の用語を確認することをお勧めします。
用語または概念 | ロールの割り当てのカテゴリ | 説明 |
---|---|---|
有資格 | Type | ロールを使用するユーザーは、1 つまたは複数のアクションを実行するために必要となるロールの割り当て。 あるロールに対して資格があるとは、特権タスクを実行する必要が生じたときに、ユーザーがそのロールをアクティブ化できることを意味します。 ロールへの永続的な割り当てと、有資格者としての割り当てに、アクセスの違いはありません。 常時のアクセスを必要としないユーザーがいる、というのが唯一の違いです。 |
active | Type | ロールを使用するユーザーが、何のアクションを実行する必要がないロールの割り当て。 アクティブとして割り当てられたユーザーは、そのロールに割り当てられた特権を持ちます。 |
アクティブ化 | ユーザーに資格のあるロールを使用するために、1 つまたは複数のアクションを実行するプロセス。 アクションには、多要素認証 (MFA) チェックの実行、業務上の妥当性の指定、指定された承認者に対する承認要求などがあります。 | |
永続的に有資格 | Duration | ロールをアクティブ化する資格が常にユーザーにあるロールの割り当て。 |
永続的にアクティブ | Duration | 何もアクションを実行しなくても、ユーザーがロールを常に使用できるロールの割り当て。 |
期限付き有資格 | Duration | 開始日から終了日の間だけ、ユーザーにロールをアクティブ化する資格があるロールの割り当て。 |
期限付きアクティブ | Duration | 開始日から終了日の間にのみ、ユーザーがロールを使用できるロールの割り当て。 |
Just-In-Time (JIT) アクセス | 悪意のあるユーザーまたは未承認ユーザーがアクセス許可の期限が切れた後にアクセスできないように、ユーザーに特権タスクを実行する一時的なアクセス許可を与えるモデル。 ユーザーが必要な場合にのみ、アクセスが許可されます。 | |
最小特権アクセスの原則 | すべてのユーザーに、実行権限があるタスクを実行するのに必要な最小特権のみを与える、推奨されるセキュリティ プラクティス。 このプラクティスでは、グローバル管理者の数を最小限にする代わりに、特定のシナリオで特定の管理者ロールが使用されます。 |
詳細については、「Microsoft Entra Privileged Identity Management とは」を参照してください。