附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
從 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 儀表板中提供這些報表。
目標
-
在 OCI 日誌記錄中建立 OCI IAM 報表的預存搜尋。
-
匯出 OCI IAM 報表以進行離線處理。
-
將這些搜尋新增至 OCI 儀表板。
必要條件
- 讀取包含 OCI IAM 網域 (將成為預設網域的租用戶根目錄) 區間之稽核資料的權限。
工作 1:探索 OCI Identity and Access Management 稽核事件
每個 OCI 服務都會根據使用者或服務動作建立稽核記錄,而 OCI IAM 不例外,在使用者存取時建立稽核記錄,以及 OCI IAM 中發生的任何變更或事件。
-
存取 OCI 主控台內「可觀察性與管理」功能下的記錄日誌服務,然後選取搜尋區段。
-
按一下選取要搜尋的日誌,將日誌搜尋的相關資訊環境設為包含要產生報表之 OCI IAM 識別網域的區間。
選取相關區間之後,您可能會見到數個使用者或服務活動項目,特定項目取決於租用戶的使用方式。您可能也會看到您自己或其他登入事件。如果您未見到任何項目,請展開其他搜尋選項來確定您選取了正確的區域,或者修改按時間篩選設定來展開時間範圍。
-
按一下顯示進階模式即可啟動輸入任意文字查詢的功能,然後將下列其中一項新增至預設查詢的結尾 (在 'sort by datetime desc 之後),以產生包含在 Oracle Identity Cloud Service 報表中的相同內容。
報表 Query - 查詢 成功登入報表 | 其中 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 作為 "Success/Failure",data.additionalDetails.ssoRp 作為應用程式,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 應用程式角色指派報表 | 其中 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 (datetime, 'yyyy-MM-dd hh:mm:ss z」) 作為日期,data.additionalDetails.eventId 作為「已新增 / 已移除」 例如,對於
Successful Logins
報表,查詢看起來會與下方類似。 -
按一下搜尋即可使用更新的查詢。如果未傳回任何結果,您可能需要修改時間篩選。
-
若要匯出所有傳回的結果,請按一下結果上方的動作下拉式清單中的匯出日誌資料 (JSON) 。
注意:Oracle Identity Cloud Service 報表支援以
CSV
檔案形式下載,而此匯出僅支援JSON
匯出,但上述查詢中使用的 select 敘述句會將JSON
均一化成含有屬性的單一物件,這應該可讓您在JSON
匯出和CSV
之間進行轉換 (如果需要)。
工作 2:建立報表的已儲存搜尋
若要避免每次想要存取這些報表時重新輸入查詢,您可以運用 OCI 日誌記錄的已儲存搜尋功能。
-
驗證查詢之後,請按一下儲存搜尋,讓查詢可以重複使用並內嵌在儀表板中。
-
輸入搜尋的名稱,例如 'Successful_Login_Report' 或類似名稱,以及描述,然後按一下儲存。
-
在「已儲存的搜尋介面」中,您可以按一下返回搜尋以取得最新的資料集。
注意:您無法直接從「已儲存的搜尋介面」匯出結果,而是必須使用動作下拉式清單中的使用日誌搜尋進行瀏覽,然後從「搜尋」檢視匯出結果。
作業 3:將報表新增至 OCI 儀表板
除了從 OCI 日誌記錄服務內存取報表之外,還可以透過 OCI 的儀表板功能提供這些報表,讓 OCI IAM 事件能夠集中複查。
-
瀏覽至 OCI 主控台登陸頁面,按一下頂端標幟中的 Oracle Cloud ,然後切換至儀表板檢視。
-
按一下新建儀表板,建立 OCI 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 來促進日誌轉送,例如在使用 OCI Audit 導入多雲端安全性,以從 OCI Identity and Access Management 擷取事件中,涵蓋將稽核轉送至 Azure Sentinel。
相關連結
認可
- 授權者 - Manoj Gaddam (主要產品經理 - OCI Identity/IDCS)、Callan Howell-Pavia (技術人員主要成員 - OCI Identity/IDCS)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Generate Identity and Access Management Reports from Oracle Cloud Infrastructure Audit
F89552-02
January 2025