注意:

根据 Oracle Cloud Infrastructure Audit 生成身份和访问管理报告

简介

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 Audit 事件

每个 OCI 服务都基于用户或服务操作创建审计记录,OCI IAM 也不例外,它基于用户访问以及 OCI IAM 中发生的任何更改或事件创建审计记录。

  1. 在 OCI 控制台内的观测和管理功能下访问日志记录服务,然后选择搜索部分。

  2. 单击选择要搜索的日志可将日志搜索的上下文设置为包含要为其生成报告的 OCI IAM 身份域的区间。

    将区间添加到日志记录搜索

    选择相关区间后,您可能会看到用户或服务活动的多个条目,具体条目取决于租户的使用方式。您可能还会看到您自己的或其他登录事件。如果未看到任何条目,则通过展开更多搜索选项来确保选择了正确的区域,或者通过修改按时间筛选设置来展开时间窗口。

  3. 单击显示高级模式以启用输入自由文本查询的功能,然后将以下项之一添加到默认查询末尾(在“按日期时间说明排序”之后)以生成包含在 Oracle Identity Cloud Service 报告中的相同内容。

    报表 查询
    成功的登录报告 | 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(日期时间,‘ 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(日期时间,‘ 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 导出,但是以上查询中使用的 SELECT 语句将 JSON 平展到具有属性的单个对象,如果需要,您应该可以在 JSON 导出和 CSV 之间进行转换。

任务 2:为报表创建保存的搜索

为了避免在您每次访问这些报告时重新输入查询,您可以利用 OCI Logging 的已保存搜索功能。

  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 帮助中心