ノート:

Oracle Access Governanceイベント・データ・パブリッシャからOCIストリームにパブリッシュされたメッセージの読取り

イントロダクション

イベント・データ公開は、1回かぎりのデータをエクスポートし、進行中のデータ・イベントをOracle Cloud Infrastructure (OCI)クラウド・アカウントなどの外部システムに継続的に公開するプロセスです。Oracle Access Governanceでは、アイデンティティ、アイデンティティ・コレクション、ポリシー、リソース、リソースへのアクセスなど、1回かぎりのデータ・イベントをクラウド・テナンシに柔軟にエクスポートし、継続的に公開できます。このデータを使用して、インサイトを導出したり、コンプライアンスのためにデータを格納したり、アクセス管理およびガバナンス・データを分析できます。

イベントとは、アイデンティティ、ポリシー、リソースなど、Oracle Access Governanceコンポーネントの作成、変更または削除時に発生するデータ状態の変更を指します。イベント・データ・パブリッシャを使用すると、管理者はアクセスおよびアイデンティティ・データを完全に制御でき、これを使用してイベント・ロギングを自動化し、コンプライアンス・レポートを合理化できます。

データ・イベント公開フローでは、1回限りのエクスポートにOCIバケットを使用し、ファイル・サイズに応じてOCIストリームまたはOCIバケットに後続の更新を公開します。

データ・イベント公開フロー

このチュートリアルでは、OCIでのユーザー更新の取得方法と、Oracle Access GovernanceによるOCIストリームへの公開方法、およびOCI Cloud Shellを介したスクリプトを使用したこれらのストリーム・メッセージの消費方法とデコード方法を説明します。

ノート:イベント・データ・パブリッシャは、アイデンティティ、アイデンティティ・コレクション、ポリシーおよびリソースのエクスポートをサポートしていますが、このチュートリアルでは、アイデンティティのイベントの取得に重点を置いています。

シェル・スクリプトの概要

このシェル・スクリプトの目的は、OCIストリームで公開されたメッセージを取得およびデコードすることです。これらのメッセージは、RAW形式で読み取れないようにエンコードされます。スクリプトを実行すると、メッセージを明確で人間が読める形式で表示できるため、重要な情報がOCIコンソールから消えた後でも確実にアクセスできるようになります。

具体的には、スクリプトは、指定されたOCIストリームからメッセージを読み取るための開始点をマークするカーソルを作成します。カーソルは、指定されたオフセットと、テスト・ストリーム・メッセージを生成して値がフェッチされるパーティションに基づいています。カーソルを使用して、スクリプトはOCIストリームからメッセージをフェッチします。最終的に、スクリプトは取得した各メッセージを処理およびデコードします。

対象読者

Oracle Access GovernanceおよびOracle Cloud Infrastructure Identity and Access Management (OCI IAM)管理者。

目的

前提条件

タスク1: OCIストリームのキー・パラメータの取得

このタスクでは、OCIコンソールにログインして、ストリームのキー・パラメータを取得します。

  1. OCIコンソールにログインし、「アナリティクスとAI」「メッセージング」に移動して「ストリーミング」をクリックします。

  2. ストリームが配置されているコンパートメントを必ず選択し、ストリームをクリックして詳細を表示します。

  3. ストリームOCIDおよびメッセージ・エンドポイントの値を書き留めます。

    Grabストリーム・パラメータ

  4. 「テスト・メッセージの生成」をクリックし、サンプル・メッセージを「データ」として入力し、「生成」をクリックします。成功メッセージを戻す必要があります。

    テスト・ストリーム・メッセージの生成

  5. 「取消」をクリックして「ストリームのテスト」ウィンドウを閉じます。

  6. 「メッセージのロード」をクリックして、テスト・メッセージを確認します。

  7. 「最近のメッセージ」セクションから、「パーティション」および「オフセット」の値を書き留めます。

    Grabストリーム・メッセージ・パラメータ

タスク2: OCIでのユーザー属性の更新

このタスクでは、OCIのユーザー属性を変更します。

  1. OCIコンソールに移動し、「アイデンティティとセキュリティ」に移動して「ドメイン」をクリックします。

  2. ドメインを選択して「ユーザー」をクリックします。更新するユーザーをクリックし、「ユーザーの編集」をクリックします。

  3. 「国」「タイトル」「部門」「コスト・センター」「ユーザー・タイプ」「従業員番号」などの値を更新します。

  4. 「変更の保存」をクリックします。

ノート:必要に応じて、さらにいくつかのユーザーを更新できます。

タスク3: Oracle Access Governanceでのデータ・ロードの実行

このタスクでは、Oracle Access Governanceでデータ・ロードを実行して、OCIの変更を同期します。

  1. Oracle Access Governanceにログインし、「サービス管理」および「オーケストレーション・システム」に移動します。

  2. OCIのオーケストレーション・システムを検索し、3つのドット(ボール)アイコンをクリックして「統合の管理」を選択します。

  3. 「データを今すぐロード」をクリックし、データ・ロードが完了するまで待機します。

    データ・ロードの実行

タスク4: ストリームからメッセージを取得するスクリプトを実行するためのOCI Cloud Shellの構成

このタスクでは、OCI Cloud Shellを構成し、提供されているスクリプトを使用して、Oracle Access Governanceによって公開されたメッセージをデコードします。

  1. OCIコンソールに移動し、右上隅の「クラウド・シェル」をクリックして、クラウド・シェル・ウィンドウが初期化されるまで待機します。

    クラウド・シェルに移動

    クラウド・シェルを起動します

  2. 次のパラメータを初期化します。

    export STREAM_OCID=<STREAM_OCID_VALUE>
    export ENDPOINT=<MESSAGES_ENDPOINT>
    export CURSOR_TYPE="AFTER_OFFSET"
    export PARTITION=<PARTITION>
    export OFFSET=<OFFSET>
    
    • ストリームのSTREAM_OCIDENDPOINTPARTITIONおよびOFFSETパラメータを、タスク1で取得した値に置き換えます。

    • CURSOR_TYPEAFTER_OFFSETに設定され、指定したオフセット値の後に生成されたすべてのメッセージを読取り用に含めます。この値を変更しないでください。

      ノート:オフセットのサンプル値はテスト・メッセージから取得できますが、その後にメッセージを取得する値を選択する必要があります。これは、AFTER_OFFSETCURSOR_TYPEの動作です。

  3. シェル・スクリプト・ファイルを作成し、実行可能にします。

    touch ag-streaming.sh
    chmod u+x ag-streaming.sh
    
  4. viエディタを使用してスクリプトを開きます。

    vi ag-streaming.sh
    
  5. iを押して挿入モードに入ります。次の内容を貼り付け、Esc:wq!を押して変更を保存します。

    #!/bin/bash
    
    # Validate required environment variables
    
    required_vars=("STREAM_OCID" "ENDPOINT" "CURSOR_TYPE" "PARTITION" "OFFSET")
    
    for var in "${required_vars[@]}"; do
       if [ -z "${!var}" ]; then
          echo "Error: Environment variable $var is not set."
          exit 1
       fi
    done
    
    # Create a cursor for the OCI Stream
    # echo "Creating a cursor for the OCI Stream..."
    oci streaming stream cursor create-cursor \
       --partition "$PARTITION" \
       --stream-id "$STREAM_OCID" \
       --type "$CURSOR_TYPE" \
       --offset "$OFFSET" \
       --endpoint "$ENDPOINT" > cursor.json
    
    # Extract cursor value
    cursor=$(jq -r '.data.value' cursor.json)
    if [ -z "$cursor" ]; then
       echo "Error: Failed to retrieve cursor value."
       exit 1
    fi
    
    # Read messages from the OCI Stream
    echo "Reading messages from the OCI Stream..."
    messages=$(oci streaming stream message get \
       --stream-id "$STREAM_OCID" \
       --cursor "$cursor" \
       --endpoint "$ENDPOINT")
    
    # Check if messages were retrieved
    if [ -z "$messages" ] || ! echo "$messages" | jq -e '.data[] | select(.key != null)' > /dev/null 2>&1; then
       echo "No valid messages found."
       exit 1
    fi
    
    # Extract and decode the data from messages
    echo "Processing messages..."
    
    # Extract and count the number of messages
    message_count=$(echo "$messages" | jq -r '.data[] | select(.key != null) | .value' | wc -l)
    
    echo "$messages" | jq -r '.data[] | select(.key != null) | .value' | while read -r value; do
       if [ -n "$value" ]; then
          counter=$((counter + 1))
          echo
          echo "Decoding message $counter of $message_count..."
    
          # Base64 decode the message
          decoded_message=$(echo "$value" | base64 --decode 2>/dev/null || echo "Error decoding message")
          final_decoded_message=$(echo "$decoded_message" | base64 --decode 2>/dev/null || echo "Error decoding message further")
    
          # Print the decoded message
          echo "Decoded Message : $final_decoded_message"
       fi
    done
    
  6. スクリプトを実行し、出力メッセージをファイルにリダイレクトします(例として messages_dump.txtを使用します)。または、スクリプトを実行してコンソールにメッセージを表示することもできます。

    ./ag-streaming.sh > messages_dump.txt
    
  7. OCI Cloud Shellからmessages_dump.txtファイルをダウンロードして、以前に行ったユーザー更新のデコードされたメッセージを確認します。

このチュートリアルでは、Oracle Access Governanceのイベント・データ・パブリッシャからパブリッシュされたOCIストリームからのメッセージの読取り方法を学習しました。OCI Cloud Shellを使用してOCIコマンドライン・インタフェース(CLI)を活用し、指定されたオフセットに基づいてメッセージを読み取る方法を確認しました。これらのメッセージには、OCIユーザー、グループ、リソースおよびポリシー・アソシエーションに関する変更が含まれているため、監査、コンプライアンスおよびレポートの観点から重要です。

次のステップ

これらのチュートリアルを完了すると、Oracle Access GovernanceからOCIストリームに公開されたデータ・イベント・メッセージの内容を分析できます。オプションで、監査およびコンプライアンス要件に関するイベント・メッセージを分析するための追加のプロセスを設定できます。また、高度な分析とビジュアライゼーションを実行するために、ストリームから自律型データ・ウェアハウスにデータを移動することもできます。データは、長期ストレージのためにOCIオブジェクト・ストレージに移動することも、Hadoop/Sparkジョブを実行することもできます。

承認

その他の学習リソース

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

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