ノート:

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レポートに含まれていた同じコンテンツを生成します。

    レポート 問合せ
    成功したログインのレポート | data.additionalDetails.eventId = 'sso.session.create.success' |ドメインとしてdata.additionalDetails.domainDisplayName、ログインとしてdata.additionalDetails.actorName、結果としてdata.additionalDetails.eventId、プロバイダとしてdata.additionalDetails.ssoRp、日付としてtime_format(datetime、 'yyyy-MM-dd hh:mm:ss z')を選択します
    失敗したログイン・レポート | data.additionalDetails.eventId='sso.authentication.failure' |ドメインとしてdata.additionalDetails.domainDisplayName、ユーザーとしてdata.additionalDetails.actorName、結果としてdata.additionalDetails.eventId、コメントとしてdata.message、日付としてtime_format(datetime、 'yyyy-MM-dd hh:mm:ss z')を選択します
    アプリケーションのアクセス・レポート |ここで、data.additionalDetails.eventId = 'sso.session.create.success'またはdata.additionalDetails.eventId = 'sso.authentication.failure'またはdata.additionalDetails.eventId = 'sso.session.modify.success' |ドメインとしてdata.additionalDetails.domainDisplayName、ユーザーとしてdata.additionalDetails.actorDisplayName、ログインとしてdata.additionalDetails.actorName、ログインとしてdata.additionalDetails.eventId、"成功/失敗"、アプリケーションとしてdata.additionalDetails.ssoRp、日付としてtime_format(日時、'yyyy-MM-dd hh:mm:ss z')を選択します
    監査ログ・レポート | 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
    アプリケーション・ロール割当てレポート |ここで、data.additionalDetails.eventId = 'admin.approle.add.member.success'またはdata.additionalDetails.eventId = 'admin.approle.remove.member.success' |ドメインとしてdata.additionalDetails.domainDisplayName、承認者としてdata.additionalDetails.actorDisplayName、受取人としてdata.additionalDetails.adminAppRoleAppName、受取人としてdata.additionalDetails.adminRefResourceName、ユーザー/グループとしてdata.additionalDetails.adminRefResourceType、アプリケーション・ロール名としてdata.additionalDetails.adminResourceName、日付としてtime_format(日時、'yyyy-MM-dd hh:mm:ss z')、"追加/削除済"としてdata.additionalDetails.eventIdを選択します

    たとえば、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チャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

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