Oracle Cloud Infrastructure AuditからのIdentity and Access Managementレポートの生成

はじめに

Oracle Cloud Infrastructure (OCI)アイデンティティ・ドメインは、Oracle Identity Cloud Serviceの後継であり、Oracle Identity Cloud Serviceのすべての機能をOracle Cloud Infrastructureのコア・サービスにします。Oracle Identity Cloud Serviceは、自己完結型のSaaSに似た製品であり、サービス内のユーザー・アクティビティなどのレポートを提供します。

Oracle Identity Cloud Serviceとは異なり、OCIアイデンティティ・ドメインはより大きなOCIコンテキスト内に存在します。OCI設計の原則は、可能なかぎり一般的なサービス機能を使用することであり、その結果、Oracle Identity Cloud Service内で使用可能になったレポートの一部は非推奨になりました。使用したデータは、OCI Auditによって提供される共通サービス機能を介して使用可能になったためです。

このチュートリアルでは、OCI監査データから非推奨のレポートを作成し、それらのレポートをOCIダッシュボードで使用できるようにする方法を示します。

目的

前提条件

タスク1: OCI Identity and Access Management監査イベントの確認

すべてのOCIサービスはユーザーまたはサービス・アクションに監査レコードを作成し、OCI IAMは例外ではなく、ユーザー・アクセスに監査レコードを作成したり、OCI IAM内で発生した変更やイベントを作成したりします。

  1. OCIコンソール内の可観測性および管理機能でロギング・サービスにアクセスし、「検索」セクションを選択します。

  2. 「検索するログの選択」をクリックして、ログ検索のコンテキストを、レポートを生成するOCI IAMアイデンティティ・ドメインを含むコンパートメントに設定します。

    ロギング検索へのコンパートメントの追加

    関連するコンパートメントを選択すると、ユーザーまたはサービス・アクティビティに複数のエントリが表示され、特定のエントリはテナンシの使用方法に依存します。自分または他のログイン・イベントが表示される場合もあります。エントリが表示されない場合は、「詳細検索オプション」を展開して正しいリージョンを選択するか、「時間によるフィルタ」設定を変更して時間ウィンドウを展開します。

  3. 「拡張モードの表示」をクリックして、フリーテキスト問合せを入力する機能を起動し、次のいずれかをデフォルト問合せの最後に追加します(日時降順でソート後)。これにより、Oracle Identity Cloud Serviceレポートに含まれていた同じコンテンツが生成されます。

    レポート 問合せ
    成功ログイン・レポート | where data.additionalDetails.eventId = 'sso.session.create.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as Login, data.additionalDetails.eventId as Result, data.additionalDetails.ssoRp as Provider, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date
    失敗ログイン・レポート | where data.additionalDetails.eventId='sso.authentication.failure' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as User, data.additionalDetails.eventId as Result, data.message as Comments, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date
    アプリケーションのアクセス・レポート | where data.additionalDetails.eventId = 'sso.session.create.success' or data.additionalDetails.eventId = 'sso.authentication.failure' or data.additionalDetails.eventId = 'sso.session.modify.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorDisplayName as User, data.additionalDetails.actorName as Login, data.additionalDetails.eventId as "Success/Failure", data.additionalDetails.ssoRp as Application, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date
    監査ログ・レポート | where data.additionalDetails.eventId = 'sso.app.access.success' or data.additionalDetails.eventId = 'sso.app.access.failure' or data.additionalDetails.eventId = 'sso.session.create.success' or data.additionalDetails.eventId = 'sso.authentication.failure' or data.additionalDetails.eventId = 'sso.session.delete.success' or data.additionalDetails.eventId = 'admin.user.create.success' or data.additionalDetails.eventId = 'admin.user.activated.success' or data.additionalDetails.eventId = 'admin.user.deactivated.success' or data.additionalDetails.eventId = 'admin.user.update.success' or data.additionalDetails.eventId = 'admin.user.delete.success' or data.additionalDetails.eventId = 'admin.user.password.reset.success' or data.additionalDetails.eventId = 'admin.me.password.reset.success' or data.additionalDetails.eventId = 'admin.me.password.change.success' or data.additionalDetails.eventId = 'admin.policy.create.success' or data.additionalDetails.eventId = 'admin.rule.create.success' or data.additionalDetails.eventId = 'admin.policy.update.success' or data.additionalDetails.eventId = 'admin.rule.update.success' or data.additionalDetails.eventId = 'admin.passwordpolicy.create.success' or data.additionalDetails.eventId = 'admin.passwordpolicy.update.success' or data.additionalDetails.eventId = 'admin.grant.create.success' or data.additionalDetails.eventId = 'admin.grant.delete.success' or data.additionalDetails.eventId = 'admin.group.create.success' or data.additionalDetails.eventId = 'admin.group.add.member.success' or data.additionalDetails.eventId = 'admin.group.remove.member.success' or data.additionalDetails.eventId = 'admin.group.delete.success' or data.additionalDetails.eventId = 'admin.app.create.success' or data.additionalDetails.eventId = 'admin.app.update.success' or data.additionalDetails.eventId = 'admin.app.delete.success' or data.additionalDetails.eventId = 'admin.app.activated.success' or data.additionalDetails.eventId = 'admin.app.deactivated.success' or data.additionalDetails.eventId = 'notification.delivery.success' or data.additionalDetails.eventId = 'notification.delivery.failure' or data.additionalDetails.eventId = 'sso.auth.factor.initiated' or data.additionalDetails.eventId = 'sso.bypasscode.create.success' | select time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date, data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as Actor, data.additionalDetails.eventId as "Event Id", data.message as "Event Description", data.additionalDetails.adminResourceName as Target
    アプリケーション・ロール割当レポート | where data.additionalDetails.eventId = 'admin.approle.add.member.success' or data.additionalDetails.eventId = 'admin.approle.remove.member.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorDisplayName as Approver, data.additionalDetails.adminAppRoleAppName as "Application Name", data.additionalDetails.adminRefResourceName as Beneficiary, data.additionalDetails.adminRefResourceType as "User/Group", data.additionalDetails.adminResourceName as "Application Role Name", time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date, data.additionalDetails.eventId as "Added/Removed"

    たとえば、Successful Loginsレポートの場合、問合せは次のようになります。

    拡張検索でのアプリケーション・アクセス問合せの表現

  4. 更新された問合せを使用するには、「検索」をクリックします。結果が返されない場合は、時間フィルタの変更が必要になることがあります。

    アプリケーション・アクセス問合せからのサンプル結果

  5. 返された結果は、結果の上にある「アクション」ドロップダウンから「ログ・データのエクスポート(JSON)」をクリックしてエクスポートできます。

    ログ検索からのログ・データのエクスポート

    ノート: Oracle Identity Cloud Serviceレポートでは、CSVファイルとしてのダウンロードがサポートされていますが、このエクスポートではJSONエクスポートのみがサポートされます。ただし、前述の問合せで使用されるSELECT文は、JSONを属性を持つ単一のオブジェクトにフラット化するため、必要に応じてJSONエクスポートとCSVの間で変換できます。

タスク2: レポートの保存検索の作成

これらのレポートにアクセスするたびに問合せが再入力されないように、OCIロギングの保存検索機能を活用できます。

  1. 問合せを検証したら、「検索の保存」をクリックして、問合せを再利用してダッシュボードに埋め込むことを許可します。

  2. 検索の名前(Successful_Login_Reportなど)および説明を入力し、「保存」をクリックします。

  3. 「保存済検索」インタフェースから、検索に戻って最新のデータ・セットを取得できます。

ノート:保存済検索インタフェースから結果を直接エクスポートすることはできません。かわりに、「アクション」ドロップダウンから「ログ検索で探索」を使用して、「検索」ビューから結果をエクスポートする必要があります。

タスク3: OCIダッシュボードへのレポートの追加

OCIロギング・サービス内からレポートにアクセスすることに加えて、OCIのダッシュボード機能を介してレポートを使用できるようにすることもでき、OCI IAMイベントを一元的に確認できます。

  1. OCIコンソールのランディング・ページにナビゲートし、上部のバナーの「Oracle Cloud」をクリックして、「ダッシュボード」ビューに切り替えます。

  2. 「新規ダッシュボード」をクリックして、OCI IAMレポートの新規ダッシュボードを作成します。

  3. 「最初から作成」を選択し、適切な名前と説明を追加します。

    IAMレポートを表示するダッシュボードの作成。

  4. 新規ダッシュボード・グループを作成するか、必要に応じてこのダッシュボードを既存のグループに割り当てます。

  5. 「ウィジェットの追加」をクリックし、「ロギング・データ表」を選択してから、新しいウィジェットで「構成」をクリックします。

  6. 適切な名前を指定し、保存検索を選択します。適切なデフォルト期間を追加します。

    アプリケーション・アクセス・レポートのウィジェットの作成

  7. レイアウトを変更し、必要に応じて他の保存済検索を追加します。

    複数のIAMレポートを含むサンプル・ダッシュボード

レポート・データの抽出の自動化

前述のアプローチでは、IAMデータに対してアドホック・レポートを実行する機能が提供されます。ただし、進行中の操作では、このデータの抽出を自動化することが必要になる場合があります。これを行うには、OCI API、OCI CLIまたはOCI SDKのいずれかを利用します。

SearchLogs APIは、次のようなリクエストを使用して起動でき、時間範囲を調整して、最初のログ検索から問合せを追加できます。

POST https://logging.<region>.oci.oraclecloud.com/20190909/search?limit=1000
Body:
{
  "timeStart": "2025-01-01T00:00:00.000Z",
  "timeEnd": "2025-01-02T00:00:00.000Z",
  "searchQuery": "<log search query from Task #1>",
  "isReturnFieldInfo": false
}

同等のOCI CLIコマンドは次のとおりです。

oci logging-search search-logs --search-query "<log search query from Task #1>" --time-start "2025-01-01T00:00:00.000Z" --time-end "2025-01-02T00:00:00.000Z" --is-return-field-info false

ノート: 検索問合せで二重引用符(")をバックスラッシュ(\)でエスケープします。つまり、as "Success/Failure"as \"Success/Failure\"になります。

監査イベントを代替システムにプッシュする場合は、OCI Connector HubまたはOCI Eventsを使用してログ転送を容易にできます。たとえば、Azure Sentinelへの監査転送をカバーするOCI Auditを使用してOCI Identity and Access Managementからイベントを取得するマルチクラウド・セキュリティを実装するなどです。

確認

その他の学習リソース

docs.oracle.com/learnの他のラボを調べるか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、Oracle Learning Explorerになるには、education.oracle.com/learning-explorerにアクセスしてください。

製品ドキュメントについては、Oracle Help Centerを参照してください。