Azure RBAC での有資格ロールと期限付きロールの割り当て
Microsoft Entra ID P2 または Azure Active Directory Identity Governance ライセンスをお持ちの場合は、Microsoft Entra Privileged Identity Management (PIM) はロールの割り当て手順に統合されています。 たとえば、一定期間、ユーザーにロールを割り当てることができます。 また、承認の要求など、ロールを使用するにはアクティブ化する必要があるように、ユーザーをロールの割り当ての対象にすることもできます。 資格のあるロールの割り当てにより、一定期間、ロールへの Just-In-Time アクセスが提供されます。
この記事では、Azure ロールベースのアクセス制御 (Azure RBAC) と Microsoft Entra Privileged Identity Management (PIM) を統合して、有資格ロールと期限付きロールの割り当てを作成する方法について説明します。
PIM の機能
PIM がある場合は、Azure portal の [アクセス制御 (IAM)] ページを使用して、有資格ロールと期限付きロールの割り当てを作成できます。 ユーザーに対して有資格なロールの割り当てを作成することはできますが、アクティブ化手順を実行できないため、アプリケーション、サービス プリンシパル、またはマネージド ID に対しては有資格なロールの割り当ては作成できません。 [アクセスの制御 (IAM)] ページでは、資格のあるロールの割り当ては、管理グループ、サブスクリプション、リソース グループのスコープでは作成できますが、リソース スコープでは作成できません。
[アクセス制御 (IAM)] ページを使用してロールの割り当てを追加する場合の [割り当ての種類] タブの例を次に示します。 この機能は段階的にデプロイされているため、テナントではまだ使用できない場合や、インターフェイスの外観が異なる場合があります。
使用できる割り当ての種類のオプションは、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 とは」を参照してください。
有資格ロールと期限付きロールの割り当てを一覧表示する方法
PIM 機能を使用しているユーザーを確認する場合は、有資格ロールと期限付きロールの割り当てを一覧表示する方法のオプションを次に示します。
オプション 1: Azure portal を使用して一覧表示する
Azure portal にサインインし、[アクセス制御 (IAM)] ページを開き、[ロールの割り当て] タブを選択します。
有資格ロールと期限付きロールの割り当てをフィルター処理します。
[状態] でグループ化および並べ替えを行い、[永続的アクティブ] の種類ではないロールの割り当てを探すことができます。
オプション 2: PowerShell を使用して一覧表示する
有資格ロールの割り当てとアクティブな期限付きロールの割り当ての両方を一覧表示できる PowerShell コマンドは存在しません。 有資格ロールの割り当てを一覧表示するには、Get-AzRoleEligibilitySchedule コマンドを使用します。 アクティブなロールの割り当てを一覧表示するには、Get-AzRoleAssignmentSchedule コマンドを使用します。
この例では、サブスクリプションの有資格ロールと期限付きロールの割り当てを一覧表示する方法を示します。これには、次のロールの割り当ての種類が含まれます。
- 有資格、永続的
- 有資格、期限付き
- アクティブ、期限付き
Where-Object
コマンドは、PIM なしで Azure RBAC 機能で使用できるアクティブな永続的ロールの割り当てを除外します。
Get-AzRoleEligibilitySchedule -Scope /subscriptions/<subscriptionId>
Get-AzRoleAssignmentSchedule -Scope /subscriptions/<subscriptionId> | Where-Object {$_.EndDateTime -ne $null }
スコープの構成方法については、「Azure RBAC のスコープについて」を参照してください。
有資格ロールと期限付きロールの割り当てをアクティブな永続的ロールに変換する方法
PIM の使用を制限するプロセスまたはコンプライアンス上の理由が組織にある場合、これらのロールの割り当てをアクティブな永続的ロールに変換する方法のオプションを次に示します。
オプション 1: Azure portal を使用して変換する
Azure portal の [ロールの割り当て] タブと [状態] 列で、変換する各ロールの割り当ての [永続的な有資格]、[有資格な期限付き]、[アクティブな期限付き] リンクを選択します。
[割り当ての編集] ウィンドウで、割り当ての種類として [アクティブ] を選択し、割り当て期間に [永続的] を選択します。
詳細については、「割り当ての編集」を参照してください。
終わったら、[保存] を選択します。
更新が処理され、ポータルに反映されるまでに時間がかかる場合があります。
変換する管理グループ、サブスクリプション、リソース グループのスコープにおけるすべてのロールの割り当てに対して、この手順を繰り返します。
変換するリソース スコープにロールの割り当てがある場合は、PIM で直接変更する必要があります。
オプション 2: PowerShell を使用して変換する
ロールの割り当てを別の状態または種類に直接変換するコマンドや API は存在しませんが、その代わりに次の手順に従うことができます。
重要
ロールの割り当てを削除すると、環境内で問題が発生する可能性があります。 この手順を実行する前に、その影響について十分に理解してください。
データ損失を防ぐために、有資格ロールと期限付きロールの割り当ての一覧をすべて取得して、セキュリティで保護された場所に保存します。
重要
アクティブな永続的ロールの割り当てを作成する前に、これらのロールの割り当てを削除する必要があるため、対象ロールと期限付きロールの割り当ての一覧を保存しておくことが重要です。
New-AzRoleEligibilityScheduleRequest コマンドを使用して、有資格ロールの割り当てを削除します。
この例では、有資格ロールの割り当てを削除する方法を示します。
$guid = New-Guid New-AzRoleEligibilityScheduleRequest -Name $guid -Scope <Scope> -PrincipalId <PrincipalId> -RoleDefinitionId <RoleDefinitionId> -RequestType AdminRemove
New-AzRoleAssignmentScheduleRequest コマンドを使用して、アクティブな期限付きロールの割り当てを削除します。
この例では、アクティブな期限付きロールの割り当てを削除する方法を示します。
$guid = New-Guid New-AzRoleAssignmentScheduleRequest -Name $guid -Scope <Scope> -PrincipalId <PrincipalId> -RoleDefinitionId <RoleDefinitionId> -RequestType AdminRemove
Get-AzRoleAssignment コマンドを使用して既存のロールの割り当てを確認し、New-AzRoleAssignment コマンドを使用して、有資格ロールの割り当てと期限付きロールの割り当てごとに Azure RBAC でアクティブな永続的ロールの割り当てを作成します。
この例では、Azure RBAC を使用して、既存のロールの割り当てを確認し、アクティブな永続的ロールの割り当てを作成する方法を示します。
$result = Get-AzRoleAssignment -ObjectId $RA.PrincipalId -RoleDefinitionName $RA.RoleDefinitionDisplayName -Scope $RA.Scope; if($result -eq $null) { New-AzRoleAssignment -ObjectId $RA.PrincipalId -RoleDefinitionName $RA.RoleDefinitionDisplayName -Scope $RA.Scope }
有資格ロールまたは期限付きロールの割り当ての作成を制限する方法
PIM の使用を制限するプロセスまたはコンプライアンス上の理由が組織にある場合は、Azure Policy を使用して、有資格ロールまたは期限付きロールの割り当ての作成を制限できます。 詳細については、「Azure Policy とは」を参照してください。
特定の ID の一覧以外で、有資格ロールと期限付きロールの割り当ての作成を制限するポリシーの例を次に示します。 その他の許可条件に対しては、追加のパラメーターとチェックを設定できます。
{
"properties": {
"displayName": "Limit eligible and active time-bound role assignments except for allowed principal IDs",
"policyType": "Custom",
"mode": "All",
"metadata": {
"createdBy": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"createdOn": "2024-11-05T02:31:25.1246591Z",
"updatedBy": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"updatedOn": "2024-11-06T07:58:17.1699721Z"
},
"version": "1.0.0",
"parameters": {
"allowedPrincipalIds": {
"type": "Array",
"metadata": {
"displayName": "Allowed Principal IDs",
"description": "A list of principal IDs that can receive PIM role assignments."
},
"defaultValue": []
}
},
"policyRule": {
"if": {
"anyof": [
{
"allOf": [
{
"field": "type",
"equals": "Microsoft.Authorization/roleEligibilityScheduleRequests"
},
{
"not": {
"field": "Microsoft.Authorization/roleEligibilityScheduleRequests/principalId",
"in": "[parameters('allowedPrincipalIds')]"
}
}
]
},
{
"allOf": [
{
"field": "type",
"equals": "Microsoft.Authorization/roleAssignmentScheduleRequests"
},
{
"not": {
"field": "Microsoft.Authorization/roleAssignmentScheduleRequests/principalId",
"in": "[parameters('allowedPrincipalIds')]"
}
}
]
}
]
},
"then": {
"effect": "deny"
}
},
"versions": [
"1.0.0"
]
},
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4ef/providers/Microsoft.Authorization/policyDefinitions/1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5",
"type": "Microsoft.Authorization/policyDefinitions",
"name": "1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5",
"systemData": {
"createdBy": "test1@contoso.com",
"createdByType": "User",
"createdAt": "2024-11-05T02:31:25.0836273Z",
"lastModifiedBy": "test1@contoso.com",
"lastModifiedByType": "User",
"lastModifiedAt": "2024-11-06T07:58:17.1651655Z"
}
}
PIM リソースのプロパティについては、次の REST API ドキュメントを参照してください。
パラメーターを使用して Azure Policy を割り当てる方法については、「チュートリアル: コンプライアンスを強制するポリシーの作成と管理」を参照してください。