從 Oracle Cloud Infrastructure 稽核產生 Identity and Access Management 報表

簡介

Oracle Cloud Infrastructure (OCI) Identity Domains 是 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 報表中所含的相同內容。

    報表 Query - 查詢
    成功的登入報表 | 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 匯出,但上述查詢中使用的選取陳述式會將 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 HubOCI Events 來協助進行日誌轉送,例如在使用 OCI Audit 導入多雲端安全性,以從 OCI Identity and Access Management 擷取事件,涵蓋將稽核轉送至 Azure Sentinel。

確認

其他學習資源

docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center