mcpField
I
implementing-azure-ad-privileged-identity-management

implementing-azure-ad-privileged-identity-management

github.com/mukul975セキュリティ35.2k40 回インストール8 週間前に更新
リポジトリ

implementing-azure-ad-privileged-identity-management について

このスキルでは、Microsoft Entra Privileged Identity Management(PIM)を計画・構成し、Entra ロール、Azure リソースロール、特権グループへの一時アクセスを管理する方法を説明します。ロールの有効化ポリシー、アクセスレビュー、セキュリティアラートを扱います。

主な機能

  1. 01特権ロール割り当ての計画
  2. 02有効化、割り当て、通知ポリシーの設定
  3. 03Microsoft Graph API による構成
  4. 04定期的なアクセスレビューの設定
  5. 05PIM セキュリティアラートの有効化

活用シーン

  1. 01恒常的な特権を適格な割り当てに変更
  2. 02管理者ロールに MFA と承認を要求
  3. 03定期的な特権アクセスのレビュー
  4. 04PIM 外で行われたロール割り当ての監視

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill implementing-azure-ad-privileged-identity-management

インストール後、Claude Code で/implementing-azure-ad-privileged-identity-managementを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

詳細

Azure AD Privileged Identity Management の実装

概要

Microsoft Entra Privileged Identity Management (PIM) は、重要なリソースへの過剰、不要、または誤用されたアクセスのリスクを軽減するために、時間ベースおよび承認ベースのロール有効化を提供します。PIM は、恒久的な(常時付与された)特権割り当てを、使用前にユーザーがロールを明示的に有効化する必要がある適格な割り当てに置き換えます。有効期間の設定、MFA の強制、承認ワークフロー、正当化理由の要件を構成できます。これは、Microsoft 環境におけるゼロトラストの ID ガバナンスの中核となるコンポーネントです。

使用するタイミング

  • この環境で azure ad privileged identity management の機能を展開または構成する場合
  • コンプライアンス要件に沿ったセキュリティ統制を確立する場合
  • この分野のセキュリティアーキテクチャを構築または改善する場合
  • この実装が必要なセキュリティ評価を実施する場合

前提条件

  • Microsoft Entra ID P2 または Microsoft Entra ID Governance ライセンス
  • グローバル管理者または特権ロール管理者ロール
  • Azure リソースロール管理用の Azure サブスクリプション
  • すべての特権ユーザーに対して構成された MFA
  • 管理者アカウント用の Microsoft Authenticator または FIDO2 キー

中核となる概念

割り当ての種類
種類動作ユースケース
適格ユーザーは使用前にロールを有効化する必要があり、構成された期間の経過後に期限切れになります日常的な管理作業
アクティブロールは常に有効で、有効化は不要ですサービスアカウント、緊急アクセス(ブレークグラス)アカウント
期間指定明示的な開始日と終了日を持つ、いずれかの種類一時的なプロジェクトアクセス、請負業者のアクセス
PIM の有効化フロー
User with Eligible Assignment
        │
        ├── Opens PIM portal → My Roles
        │
        ├── Clicks "Activate" on the desired role
        │
        ├── Provides justification and optional ticket number
        │
        ├── Completes MFA challenge (if required)
        │
        ├── [If approval required] → Notification sent to approvers
        │       │
        │       ├── Approver reviews and approves/denies
        │       └── User notified of decision
        │
        ├── Role activated for configured duration (e.g., 8 hours)
        │
        └── Role automatically deactivated when duration expires
サポートされるリソースの種類
  1. Microsoft Entra ロール: グローバル管理者、Exchange 管理者、セキュリティ管理者など
  2. Azure リソースロール: サブスクリプションやリソースグループに対する所有者、共同作成者、ユーザー アクセス管理者
  3. グループ向け PIM: 特権セキュリティグループのメンバーシップを管理

ワークフロー

手順 1: ロール割り当てを計画する

現在の恒久的なロール割り当てを監査し、どれを適格に変換すべきかを決定します。

現在のロール恒久的な保有者対応
グローバル管理者管理者 2~3 名適格に変換し、緊急アクセス用に 1 名をアクティブのまま維持
Exchange 管理者IT チームすべて適格に変換
セキュリティ管理者SOC チーム適格に変換
ユーザー管理者ヘルプデスク適格に変換
アプリケーション管理者DevOps適格に変換

ベストプラクティス: 恒久的なグローバル管理者は 2 名以下(緊急アクセス用アカウント)に抑えてください。

手順 2: ロール設定を構成する

各 Entra ディレクトリロールについて、PIM の設定を構成します。

Microsoft Entra 管理センター経由:

  1. ID ガバナンス > Privileged Identity Management > Microsoft Entra ロール に移動します
  2. 「設定」を選択し、構成するロールを選択します
  3. 次の項目を構成します

有効化の設定:

  • 最大有効化期間: 8 時間(推奨。最大 72 時間)
  • 有効化時に MFA を必須にする: 有効
  • 正当化理由を必須にする: 有効
  • チケット情報を必須にする: 有効(変更管理との統合用)
  • 承認を必須にする: グローバル管理者、セキュリティ管理者に対して有効

割り当ての設定:

  • 適格な恒久割り当てを許可: いいえ(有効期限を設定)
  • 適格な割り当ての有効期限: 6 か月(再認定が必要)
  • 恒久的なアクティブ割り当てを許可: 緊急アクセス用アカウントのみ
  • アクティブ割り当て時に MFA を必須にする: 有効
  • アクティブ割り当て時に正当化理由を必須にする: 有効

通知の設定:

  • メンバーに適格な割り当てが行われたときにメールを送信: ロール割り当て者、管理者
  • メンバーが有効化したときにメールを送信: 管理者、セキュリティチーム
  • 適格なメンバーがロールを有効化したときにメールを送信: ロールの割り当て対象者
手順 3: Microsoft Graph API で構成する
import requests

# Acquire token for Microsoft Graph
def get_graph_token(tenant_id, client_id, client_secret):
    url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
    data = {
        "grant_type": "client_credentials",
        "client_id": client_id,
        "client_secret": client_secret,
        "scope": "https://graph.microsoft.com/.default"
    }
    response = requests.post(url, data=data)
    return response.json()["access_token"]

# Create eligible role assignment
def create_eligible_assignment(token, role_definition_id, principal_id,
                                directory_scope="/", duration_hours=8):
    url = "https://graph.microsoft.com/v1.0/roleManagement/directory/roleEligibilityScheduleRequests"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    body = {
        "action": "adminAssign",
        "justification": "PIM eligible assignment",
        "roleDefinitionId": role_definition_id,
        "directoryScopeId": directory_scope,
        "principalId": principal_id,
        "scheduleInfo": {
            "startDateTime": "2025-01-01T00:00:00Z",
            "expiration": {
                "type": "afterDuration",
                "duration": "P180D"  # 180-day eligible window
            }
        }
    }
    response = requests.post(url, headers=headers, json=body)
    return response.json()

# Activate a role (user self-service)
def activate_role(token, role_definition_id, principal_id, justification,
                   duration_hours=8):
    url = "https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignmentScheduleRequests"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    body = {
        "action": "selfActivate",
        "principalId": principal_id,
        "roleDefinitionId": role_definition_id,
        "directoryScopeId": "/",
        "justification": justification,
        "scheduleInfo": {
            "startDateTime": None,  # Now
            "expiration": {
                "type": "afterDuration",
                "duration": f"PT{duration_hours}H"
            }
        }
    }
    response = requests.post(url, headers=headers, json=body)
    return response.json()
ステップ 4: アクセスレビューを構成する

割り当てられた適格な権限が引き続き適切であることを確認するために、定期的なアクセスレビューを設定します:

  1. Identity Governance > Access Reviews > New Access Review に移動します
  2. 次を構成します:
    • Review scope: Privileged Identity Management role assignments
    • Roles: 重要なロールをすべて選択します (Global Admin、Security Admin など)
    • Reviewers: マネージャー、または正当な理由を添えた自己レビュー
    • Frequency: 重要なロールは四半期ごと、その他のロールは半年ごと
    • Auto-apply results: 応答のないレビューについてはアクセスを削除
    • Duration: レビュー担当者が応答するまでの期間は 14 日
ステップ 5: アラートを構成する

PIM のセキュリティアラートを有効にします:

アラートトリガー対応
グローバル管理者が多すぎるGlobal Admin が 5 人を超える確認して削減する
PIM 外でのロール割り当て直接のロール割り当て調査し、PIM に切り替える
MFA が要求されていないロールMFA なしでのアクティベーションMFA 要件を有効にする
古い適格な割り当て90 日間アクティベートされていない確認し、必要に応じて削除する
古いサービスアカウントの可能性有効な割り当てが使用されていない調査し、廃止する

検証チェックリスト

  • 永続的な特権ロールの割り当てをすべて適格な割り当てに変換済み (緊急時用アカウントを除く)
  • 緊急時用アカウントを有効な状態で構成し、監視アラートを設定済み
  • すべてのロールのアクティベーションに MFA を必須化済み
  • Global Administrator と Security Administrator に承認ワークフローを構成済み
  • 重要なロールの最大アクティベーション期間を 8 時間以下に設定済み
  • 適格な割り当ての有効期限を 6 か月に設定済み (再認証が必要)
  • アクティベーションに正当な理由とチケット情報を必須化済み
  • ロールの割り当てとアクティベーションについてメール通知を構成済み
  • すべての特権ロールについて四半期ごとのアクセスレビューをスケジュール済み
  • PIM アラートを有効化し、毎週確認している
  • 監視のために監査ログを SIEM に転送している

参考資料

コメント