附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
從 Oracle Access Governance Event Data Publisher 讀取發布至 OCI 串流的訊息
簡介
事件資料發布是一種將一次性資料匯出,並持續將進行中的資料事件發布到外部系統的程序,例如 Oracle Cloud Infrastructure (OCI) 雲端帳戶。有了 Oracle Access Governance,您便可以靈活地將一次性的資料事件 (例如身分識別、身分識別集合、原則、資源、資源存取權等) 匯出至您的雲端租用戶。您可以使用此資料來取得洞察分析、儲存資料以符合規範,或分析存取管理和治理資料。
事件指的是建立、修改或刪除 Oracle Access Governance 元件 (例如識別、原則、資源等) 時發生的任何資料狀態變更。管理員可以使用 Event Data Publisher 完全控制存取和識別資料,並利用它來自動記錄事件並簡化合規報告。
「資料事件發布」流程使用 OCI 儲存桶進行單次匯出,並根據檔案大小,將後續更新發布至 OCI 串流或 OCI 儲存桶。
在本教學課程中,我們將逐步介紹如何使用 Oracle Access Governance 擷取 OCI 中的使用者更新並將其發布至 OCI 串流,以及如何使用 OCI Cloud Shell 的命令檔對這些串流訊息進行使用和解碼。
注意: Event Data Publisher 支援匯出識別、識別集合、原則以及資源,不過,此教學課程著重於擷取識別的事件。
Shell 命令檔概要
此 Shell 命令檔的用途是擷取和解碼 OCI 串流中發布的訊息。這些訊息會以其原始格式無法讀取的方式進行編碼。透過執行命令檔,您能夠以清晰、易於閱讀的格式查看訊息,確保即使重要資訊從 OCI 主控台消失,仍可加以存取。
具體而言,命令檔會建立游標,標示從指定 OCI 串流讀取訊息的起點。游標是以指定的位移和透過產生測試串流訊息擷取其值的分割區為基礎。使用游標時,命令檔會從 OCI 串流擷取訊息。最後,指令檔會處理和解碼每個擷取的訊息。
適用對象
Oracle Access Governance and Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 管理員。
目標
-
擷取 OCI 串流的關鍵參數。
-
從主控台修改一或多個 OCI 使用者的少數屬性。
-
在 Oracle Access Governance for OCI 中執行資料載入。
-
將 OCI Cloud Shell 環境設定為執行命令檔。
-
執行命令檔來讀取串流訊息。
必要條件
-
具有管理權限的 Oracle Access Governance 執行處理。如需詳細資訊,請參閱設定服務例項與關於應用程式角色。
-
與 Oracle Access Governance 整合的 OCI 租用戶。如需詳細資訊,請參閱與 Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM) 整合。
-
從 Oracle Access Governance 設定為 OCI 的事件資料發布程式。如需詳細資訊,請參閱在 Oracle Access Governance 中設定事件資料發布程式。
作業 1:擷取您 OCI 串流的關鍵參數
在此任務中,我們將登入 OCI 主控台以擷取串流的關鍵參數。
-
登入 OCI 主控台,瀏覽至 Analytics & AI 的 Messaging 並按一下 Streaming 。
-
請務必選取串流所在的區間,然後按一下串流以檢視詳細資訊。
-
請記下串流 OCID 和訊息端點的值。
-
按一下產生測試訊息,將範例訊息輸入為資料,然後按一下產生。該呼叫會傳回一個成功 (Success) 訊息。
-
按一下取消 (Cancel) 關閉測試串流 (Test Stream) 視窗。
-
按一下載入訊息,檢查測試訊息。
-
在最近的訊息段落中,記下分割區和偏移值。
作業 2:更新 OCI 中的使用者屬性
在此任務中,我們將變更 OCI 中的使用者屬性。
-
移至 OCI 主控台,瀏覽至識別與安全,然後按一下網域。
-
選取您的網域,然後按一下使用者。按一下想要更新的使用者,然後按一下編輯使用者。
-
更新國家、職稱、部門、成本中心、使用者類型、員工編號等值。
-
按一下儲存變更。
注意:您也可以視需要更新一些其他使用者。
工作 3:在 Oracle Access Governance 中執行資料載入
在此任務中,我們將在 Oracle Access Governance 中執行資料載入,以同步化 OCI 變更。
-
登入 Oracle Access Governance,瀏覽至 Service Administration 與 Orchestrated Systems 。
-
尋找 OCI 的協調系統,按一下三點 ( 應用程式 ) 圖示,然後選取管理整合。
-
按一下立即載入資料,然後等待資料載入完成。
作業 4:設定 OCI Cloud Shell 執行命令檔以從串流擷取訊息
在此任務中,我們將設定 OCI Cloud Shell,並使用提供的指令碼將 Oracle Access Governance 所發布的訊息解碼。
-
移至 OCI 主控台,按一下右上角的 Cloud Shell ,然後等待 Cloud Shell 視窗初始化。
-
起始下列參數。
export STREAM_OCID=<STREAM_OCID_VALUE> export ENDPOINT=<MESSAGES_ENDPOINT> export CURSOR_TYPE="AFTER_OFFSET" export PARTITION=<PARTITION> export OFFSET=<OFFSET>
-
將串流的
STREAM_OCID
、ENDPOINT
、PARTITION
和OFFSET
參數取代為「工作 1」中擷取的值。 -
CURSOR_TYPE
設為AFTER_OFFSET
,可包含指定偏移值之後產生的所有訊息以供讀取。請勿修改此值。注意:您可以從測試訊息取得位移的範例值,但應該選擇一個值,之後再擷取訊息。這是
CURSOR_TYPE
與AFTER_OFFSET
的功能。
-
-
建立 Shell 命令檔檔案並讓它可執行。
touch ag-streaming.sh chmod u+x ag-streaming.sh
-
使用 vi 編輯器開啟命令檔。
vi ag-streaming.sh
-
按 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
-
執行命令檔並將輸出訊息重新導向至檔案 (例如使用 messages_dump.txt)。或者,您可以執行命令檔,在主控台上顯示訊息。
./ag-streaming.sh > messages_dump.txt
-
從 OCI Cloud Shell 下載
messages_dump.txt
檔案,檢查先前進行之使用者更新的解碼訊息。
在本教學課程中,我們瞭解如何從 Oracle Access Governance 的事件資料發布工具發布的 OCI 串流讀取訊息。我們瞭解如何使用 OCI Cloud Shell 運用 OCI 命令行介面 (CLI) 根據指定的偏移量讀取訊息。這些訊息包含與 OCI 使用者、群組、資源以及原則關聯相關的變更,因此從稽核、規範及報告觀點來看,這很重要。
接下來的步驟
完成這些教學課程之後,您可以分析從 Oracle Access Governance 發布到 OCI 串流的資料事件訊息內容。您可以選擇性地設定進一步的處理程序,以分析事件訊息以供審核與規範要求。您也可以將資料從串流移到自主資料倉儲,以執行進階分析和視覺化。資料也可以移至 OCI Object Storage 進行長期儲存,或執行 Hadoop/Spark 工作。
相關連結
認可
- 作者 - Anuj Tripathi (NA 解決方案工程部門首席雲端架構師)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Read Messages Published to an OCI Stream from Oracle Access Governance Event Data Publisher
G20553-01
November 2024