将 Oracle Data Safe 和 OCI Logging Analytics 与 OCI IAM 和 Microsoft Entra ID 集成

简介

在混合云和多云环境中保护 Oracle 数据库需要全面了解用户活动,尤其是在通过 Microsoft Azure Entra ID 和 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 外部管理身份验证时。本教程概述了通过集中式身份提供商提供的丰富 OCI IAM 元数据统一 Oracle Data Safe 审计日志的关键集成。由此形成了全面的用户足迹,为所有数据库交互(无论身份验证源如何)提供无与伦比的端到端可跟踪性,从而增强安全性并简化访问管理。

为什么我们需要这个?

传统数据库审计日志通常缺少将操作追溯到特定云用户所需的关键身份上下文,尤其是在通过外部身份提供者进行身份验证时。此集成直接解决了这一差距。通过将 Oracle Data Safe 和 OCI Logging Analytics 与来自 Microsoft Azure Entra ID 和 OCI IAM 的 OCI IAM 元数据相关联,企业可以提高审计透明度,改善混合系统中的用户可跟踪性,并集中监视访问活动。这种统一、识别身份的日志记录对于加强安全态势、简化审计调查以及在现代企业环境中满足严格的合规性要求至关重要。

目标受众

目标

Prerequisites

任务 1:为所有数据库中的外部验证用户创建定制 Oracle Data Safe 审计报表

  1. 登录 OCI 控制台,导航到 Oracle 数据库数据安全–活动审计,然后单击相关资源下的审计报告–所有活动

    自治数据库

  2. 单击管理列并选择所需的列。

    自治数据库

  3. 创建定制报表中,输入显示名称说明区间详细信息。

    自治数据库

  4. 管理报表计划中,从计划频率下拉列表中,选择每日并单击保存计划

    自治数据库

任务 2:设置用于数据收集和关联的 OCI 计算实例

在此任务中,我们将设置您的 OCI 计算实例以从 Microsoft Entra ID 和 OCI IAM 检索用户身份详细信息,并处理 Oracle Data Safe 审计报告。最终目标是将审计日志中的外部用户 ID 与扩充的身份元数据相关联,从而提供完整的用户范围。

注:请从此处下载以下脚本:scripts

  1. 提取 Microsoft Entra ID 用户

    运行以下命令以使用 Microsoft Graph API (fetch_azure_ad_users.sh) 从 Microsoft Entra ID 检索用户信息。

    ./fetch_azure_ad_users.sh
    

    输出:

    [oracle@linux-bastion:~]$ ./fetch_azure_ad_users.sh
    Fetching Access Token...
    Calling Graph API for users list...
    Parsing users and converting to CSV...
    Users list saved to: azure_ad_users.csv
    
    head -3 azure_ad_users.csv
    

    输出:

    [oracle@linux-bastion:~]$ head -3 azure_ad_users.csv
    "id","displayName","userPrincipalName","mail"
    "b41b0688-c07xxxxxxx3-e9b0db0c1107","Alex Kovuru","akovuruxxxxxxjtripaigmail.onmicrosoft.com","alex.xxxuru@gmail.com"
    "7eb35b90-dc0xxxxxxxxxx-bc0b-48789368e9cf","Anuj Tripathi","anujtxxxxxai_gmail.com#EXT#@anujtripaigmaixxmicrosoft.com","anujtrxxx@gmail.com"
    
  2. 提取 OCI IAM 用户

    运行以下命令以使用 OCI CLI (oci_user_list_to_csv.sh) 从 OCI IAM 获取用户详细信息。

    ./oci_user_list_to_csv.sh
    head -3 oci_iam_users.csv
    

    输出:

    [oracle@linux-bastion:~]$ ./oci_user_list_to_csv.sh
    CSV file generated: oci_iam_users.csv
    [oracle@linux-bastion:~]$ head -3 oci_iam_users.csv
    id,name,email
    "ocid1.user.oc1..aaaaaaaaqv3tai2mxxxxxxxxxxepkk5hrfinedvj67ieb7phkirwxfeupv3cbq","alexk",alex.kovuxxx@oracle.com
    "ocid1.user.oc1..aaaaaaaaoq7ypwb5xxxxxxxxx2l5i6yjlnsedvkcni3dxdjdkkw5lyf73lma","ag-admin","anujtripaxxxx2@gmail.com"
    [oracle@linux-bastion:~]$
    
  3. 合并用户数据

    将从两个源提取的用户数据合并到一个标准化 CSV 文件 (merge_users_csv.sh)。

    ./merge_users_csv.sh
    head -3 merged_users.csv
    

    输出:

    [oracle@linux-bastion:~]$ ./merge_users_csv.sh
    Merged CSV created: merged_users.csv
    [oracle@linux-bastion:~]$ head -3 merged_users.csv
    id,displayName,userPrincipalName,mail,source
    "7eb35b90-dc0d-4135-bc0b-48789368e9cf","Anuj Tripathi","anujtrip.ai_xxx.com#EXT#@anujtripaigmail.onmicrosoft.com","anujtrixxxx@gmail.com",AzureAD
    "ocid1.user.oc1..aaaaaaaaqv3tai2miu6vtgxxxxxxxxxxxfinedvj67ieb7phkirwxfeupv3cbq","alexk",null,"alex.kovxxxxu@oracle.com",OCI
    [oracle@linux-bastion:~]$
    
  4. 处理数据安全审计报表

    下载、转换、清理和标准化 Oracle Data Safe (process_data_safe_report.sh) 的最新审计报告。

    ./process_data_safe_report.sh
    head -3 cleaned_audit_records_final.csv
    

    输出:

    [oracle@linux-bastion:~]$ ./process_data_safe_report.sh
    Downloading report from OCI Data Safe...
    Converting XLS to CSV...
    convert /home/oracle/DS_AZ_OCI_Custom_External_User_Report_202507240745.xls -> /home/oracle/DS_AZ_OCI_Custom_External_User_Report_202507240745.csv using filter : Text - txt - csv (StarCalc)
    Cleaning the CSV file...
    Extracting specific columns...
    Post-processing the final CSV...
    Final post-processing complete.
    [oracle@linux-bastion:~]$ head -3 cleaned_audit_records_final.csv
    Target,DB user,OS user,Client host,Client ip,Event,Operation status,Operation time,External user
    DBS23AZPDB,ALLUSERS,oracle,linux-bastion,129.146.107.120,LOGOFF BY CLEANUP,SUCCESS,2025-07-10T21:07:37Z,b41b0688-c07e-416d-bf13-xxxxxxxxxc1107
    DBS23AZPDB,ALLUSERS,oracle,linux-bastion,129.146.107.120,CREATE TABLE,SUCCESS,2025-07-10T19:59:07Z,b41b0688-c07e-416d-bf13-xxxxxxxx0c1107
    [oracle@linux-bastion:~]$
    
  5. 关联数据

    通过将外部用户 ID 与合并的 OCI IAM 用户数据 (DataSafe_External_Users_Audit_Dashboard.sh) 相关联,扩充 Oracle Data Safe 审计日志。

    ./DataSafe_External_Users_Audit_Dashboard.sh
    head -3 DataSafe_External_Users_Audit_Dashboard.csv
    

    输出:

    [oracle@linux-bastion:~]$ ./DataSafe_External_Users_Audit_Dashboard.sh
    Correlated Data : DataSafe_External_Users_Audit_Dashboard.csv
    [oracle@linux-bastion:~]$  head -3 DataSafe_External_Users_Audit_Dashboard.csv
    Target,DB user,OS user,Client host,Client ip,Event,Operation status,Operation time,External user,displayName,mail,source
    DBS23OCI,ANUJ,oracle,linux-bastion,10.0.0.124,LOGON,FAILURE,2025-07-02T17:38:58Z,ocid1.user.oc1..aaaaaaaaam4ulylhebm4zwtiaqsy4xxxxxxxwu6imevy3lihnkejs7h43nlknkywq,anuj.t.tripaxxxx@oracle.com,anuj.t.tripaxxxx@oracle.com,OCI
    DBS23AZPDB,ALLUSERS,oracle,linux-bastion,129.146.107.120,COMMIT,SUCCESS,2025-07-10T19:34:38Z,b41b0688-c07e-416d-bf13-e9b0dbxxx107,Alex Kovuru,alex.kovuruxx@gmail.com,AzureAD
    [oracle@linux-bastion:~]$
    

    您将利用一组提供的 shell 脚本来自动执行这些进程。确保将这些脚本下载到 OCI 计算实例。为了确保每日更新仪表盘,请安排这些脚本在 OCI 计算实例上通过 cron 作业运行。此作业应安排在定制 Oracle Data Safe 报告生成时间后执行。

任务 3:配置 OCI 日志分析

  1. 准备主机将日志传输到 OCI Logging Analytics

    运行以下命令以确保 oracle-cloud-agent 可以读取日志。

    sudo -u oracle-cloud-agent /bin/bash -c "head -3 /home/oracle/DataSafe_External_Users_Audit_Dashboard.csv"
    

    预期输出:

    Target,DB user,OS user,Client host,Client ip,Event,Operation status,Operation time,External user,displayName,mail,source
    DBS23OCI,GLOBAL_USER,labuser,clienthost,49.37.181.25,LOGOFF BY CLEANUP,SUCCESS,2025-07-17T15:26:10Z,ocid1.user.oc1..aaaa...,alexk,alexxxx@example.com,OCI
    DBS23OCI,GLOBAL_USER,labuser,clienthost,49.37.181.25,COMMIT,SUCCESS,2025-07-17T15:15:02Z,ocid1.user.oc1..aaaa...,alexk,alexxxxxx@example.com,OCI
    
  2. 为审计 CSV 创建分隔的语法分析器

    我们将构建一个解析器,将每个 CSV 行转换为结构化日志字段,OCI Logging Analytics 可以筛选、扩充和可视化。

    1. 转到 OCI 控制台,导航到 Observability & ManagementLogging AnalyticsAdministrationParsersCreate Parser ,然后输入所需的信息,如下图所示。

      自治数据库

    2. 单击字段并将标题列映射到 OCI 日志分析字段名称

      对于每个 CSV 列,选择现有字段;如果不存在合适的字段,则创建用户定义字段 (User Defined Field,UDF) 。根据需要使用 + 图标进行创建。

      自治数据库

    3. 单击语法分析器测试并按照以下步骤操作:

      1. 切换到 Parser Test

      2. 确保示例行解析成功。预览网格应显示映射到所选字段的每个列。

      3. 确认 Timestamp 列正确解析(无语法分析错误;日期/时区正确)。

      4. 单击创建语法分析器以保存。

      自治数据库

  3. Create a File Source That Uses the Parser

    源告知 OCI Logging Analytics 在何处查找日志(路径模式、收集方法)以及如何解释日志(解析器和元数据)。

    转到 OCI 控制台,导航到 Observability & ManagementLogging AnalyticsAdministrationSourcesCreate Source ,然后按下图中所示输入所需信息,然后单击 Create Source (创建源)。

    自治数据库

  4. 将源与实体和日志组关联

    关联将激活收集过程:源链接到特定实体(例如主机),收集的日志将路由到指定的日志组。

    1. 转到 OCI 控制台,导航到 Logging Analytics(日志分析)Administration(管理)并单击 Sources(源)

      自治数据库

    2. 详细信息页面中,选择包含要关联的实体的区间

    3. 单击 Unassociated Entities(未关联的实体)以列出可用于/符合关联条件的正确类型的实体。

      自治数据库

    4. 未关联的实体中选择一个实体,然后单击添加关联

    5. 选择现有的日志组(如果可用)。在本教程中,我们将通过单击创建日志组来创建新的日志组。

      自治数据库

      自治数据库

    6. 单击提交

      自治数据库

  5. 摄取开始后,确认记录可搜索,并且字段将按预期填充。

    自治数据库

    查看日志浏览器:

    自治数据库

任务 4:浏览日志并使用三个小部件构建仪表盘

利用 OCI Logging Analytics 可视化使用外部身份元数据扩充的 Oracle Data Safe 审计日志。使用 Microsoft Azure User Footprint Pie Chart、OCI User Footprint Pie Chart 和详细审计表视图构建仪表盘。

  1. 创建 Azure 用户封装饼图小组件

    运行以下日志浏览器查询:

    'Log Source' = Demo_AZ_OCI_DS_Source  | where Source = AzureAD | stats count as Azure_Events by 'External User' | sort -Azure_Events
    

    自治数据库

    单击操作保存搜索(如下图中所示),然后添加到仪表盘(如果仪表盘不存在,则创建新建仪表盘)。

    自治数据库

  2. 创建 OCI 用户封装饼图小部件

    运行以下日志浏览器查询:

    'Log Source' = Demo_AZ_OCI_DS_Source  | where Source = OCI | stats count as OCI_Events by 'External User' | sort -OCI_Events
    

    自治数据库

    单击操作保存搜索,如下图中所示,然后添加到现有仪表盘。

    自治数据库

  3. 创建详细审计表视图

    运行以下日志浏览器查询:

    'Log Source' = Demo_AZ_OCI_DS_Source | fields 'Target Name', db_user, OS_user, Client, 'Host IP Address (Client)', Event, Operation_status, externalId, 'External User', mail, Source, -Entity, -'Entity Type', -'Host Name (Server)', -'Problem Priority', -Label, -'Log Source'
    

    自治数据库

    单击操作保存搜索,如下图中所示,然后添加到现有仪表盘。

    自治数据库

  4. 查看保存的仪表盘

    转到 OCI 控制台,导航到 Logging Analytics(日志分析)Administration(管理)Dashboards(仪表盘),然后单击创建的仪表盘 (Demo_AZ_OCI_DS_DashBoard)。

    自治数据库

确认

更多学习资源

通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心