注意:

将 Oracle Database Audit Logs 从 Oracle Data Safe 导出到 OCI Logging

简介

Oracle Data Safe 是一项完全集成的云服务,专注于数据安全性。它提供了一整套集成功能,可用于保护 Oracle Database 中的敏感和受管制数据。功能包括安全评估、用户评估、数据发现、数据掩码和活动审计。

Oracle Cloud Infrastructure (OCI) 日志服务为租户中的所有日志提供了一个高度可扩展且完全托管的单一接口。使用日志记录从所有 OCI 资源访问日志,并启用、管理和搜索日志。

OCI Functions 是一个完全托管、多租户、高度可扩展的按需函数即服务平台。它基于企业级 OCI 构建,由 Fn 项目开源引擎提供支持。

目标

先决条件

在部署环境之前,需要满足以下要求。

注:为了简化部署,我们建议使用此处提供的 Terraform 脚本通过 OCI 资源管理器完成部署。

先决条件 1:在 Oracle Data Safe 中注册和配置数据库

在创建引用体系结构之前,必须将 Oracle Data Safe 配置为接收要监视的 Oracle 数据库中的审计事件。

在本教程中,我们将在以前创建的 OCI 租户的 Oracle Autonomous Database 中配置 Oracle Data Safe。但是,可以在多个不同的环境中(内部部署、实例等)配置 Oracle 数据库的审计。有关配置 Oracle Data Safe 的可能方案的详细信息,请参阅数据安全

您可以直接在数据库服务页面上或通过 OCI 控制台配置 Oracle Autonomous Database 审计。我们将通过 OCI 控制台执行此操作。

  1. 转到 OCI 控制台,依次单击 Oracle Database数据安全 - 数据库安全性

    OCI 控制台

  2. 要注册数据库,请单击目标数据库,然后选择要注册数据库的区间,然后单击注册数据库

    在数据安全中注册数据库

  3. 在“数据安全配置”页中,输入以下详细信息并单击注册,然后等待配置完成。

    • 数据库类型:选择要配置的数据库类型。在本教程中,类型为 Autonomous Database 。有关支持的 Oracle Database 类型的详细信息,请参阅支持的目标数据库

    • 在 < 区间 > 中选择数据库:选择将由 Oracle Data Safe 监视的数据库。

    • 说明:(可选)可以输入用于在 Oracle Data Safe 中注册数据库的说明。

    • 区间:选择要在其中注册 Oracle Data Safe 的区间。

    注册数据库工作流

    有关配置 Oracle Data Safe 的详细信息,请按照 Oracle Live Labs 门户上的“Oracle Data Safe 基础入门”中提供的分步说明进行操作。

先决条件 2:配置 OCI 注册表用户

要根据需要创建环境,必须授权 OCI IAM 用户在 OCI 注册表中推送映像。此用户将提供用于自动收集数据安全日志的函数的映像,因此需要对 OCI 注册表的正确权限。根据构建环境的要求,配置 OCI IAM 用户对 OCI 注册表的访问凭证。

  1. 与将访问 OCI 注册表的用户一起登录 OCI 控制台,然后单击我的概要信息

    访问用户概要文件

  2. 在用户详细信息窗口中,单击授权令牌,然后单击生成令牌

    访问用户授权令牌菜单

  3. 输入所创建标记的说明,然后单击生成标记

    生成标记

    将生成您的验证令牌。请注意验证令牌,因为它将用作在 OCI 资源管理器中配置堆栈的参数。

注:将用于创建和使用 OCI 注册表的用户不一定必须是将通过 OCI 资源管理器部署基础结构的相同用户。部署期间,将请求将访问注册表的用户的用户名和验证令牌信息。

先决条件 3:创建 OCI IAM 策略以访问 OCI 注册表

要使 OCI IAM 用户有权访问 OCI 注册表服务,必须允许用户管理将在其中创建环境的区间中的资料档案库,或者使用最小权限策略,必须允许用户更新区间的系统信息库。因此,请应用以下两个选项之一来配置对 OCI 注册表的访问。

先决条件 4:用于架构部署的 OCI IAM 策略

根据可用文档,部署此基础设施的用户必须对以下 OCI 服务具有管理权限:IAM 策略、动态组、VCN、服务网关、路由表、安全列表、子网、函数、监视预警和通知。

方法 1:使用 OCI 资源管理器通过 Terraform 进行部署

要通过 Oracle Data Safe 为可伸缩的数据库审计日志集合实施参考架构,请使用可访问 OCI 控制台的 OCI IAM 用户运行 fn-datasafe-dbaudit-to-oci-logging GitHub 存储库中提供的 Terraform,并且该用户的组具有如前所述所需的权限。根据资料档案库中提供的文档,可以通过 OCI 资源管理器或 Terraform CLI 安装解决方案。

注:为了简化环境的部署,我们建议通过 OCI 资源管理器完成部署。

  1. 要自动安装和配置日志收集的引用体系结构,请使用将用于部署的用户登录到租户 OCI 控制台,然后选择将安装环境的区域。

    区域

    在另一个选项卡中,访问 GitHub 上的系统信息库页,该页位于以下位置: fn-datasafe-dbaudit-to-oci-logging

    Oracle GIT 资料档案库

  2. 打开租户 OCI 控制台和 GitHub 资料档案库页后,向下滚动资料档案库页到使用 OCI 资源管理器部署部分,然后单击部署到 Oracle Cloud 以开始安装。

    使用 OCI 资源管理器部署

  3. OCI 资源管理器页面将在 OCI 控制台中打开。输入以下信息,然后单击下一步

    • Oracle 使用条款:阅读并选择我已查看并接受 Oracle 使用条款框。
    • 名称:可选,提供用于标识环境安装的名称。
    • 在区间中创建:选择将在其中创建环境的区间。

    填写以下信息

  4. 在下一个窗口中,输入以下信息,然后单击下一步

    • OCIR 用户名:输入用于部署基础结构的用户的用户名(用户必须具有创建映像并将其上载到资料档案库的权限)。
    • OCIR 用户密码:输入以前在先决条件中创建的验证令牌。
    • 部署模式:输入创建环境的方式。在本例中,我们将使用 test
    • VCN CIDR:输入要为部署环境创建的 VCN 的 CIDR。此项是可选的,可以根据需要进行更改。

    填写以下信息

  5. 在下一页上,单击创建以创建体系结构,并等待 OCI 资源管理器创建环境。

    检查信息,然后单击“Create(创建)”

方法 2:使用 OCI 控制台通过 Terraform 进行部署

要通过 OCI 控制台手动部署,必须遵循具体而有序的逐步过程。要开始,请选择将在其中创建环境的区间。在此区间中,创建新 VCN(或使用现有 VCN)。

任务 1:创建 VCN 和子网

  1. 要创建环境的 VCN,请转到 OCI 控制台,然后导航到网络虚拟云网络

    创建 VCN

  2. 选择将在其中创建 VCN 的区间,然后单击启动 VCN 向导

    启动 VCN 向导

  3. 在向导页中,选择使用 Internet 连接创建 VCN ,然后单击启动 VCN 向导

    启动 VCN 向导

  4. Create a VCN with internet connectivity 页中,输入以下信息以创建 VCN。

    • VCN 名称:填写要创建的 VCN 的名称。
    • 区间:选择要在其中创建 VCN 的区间。
    • VCN IPv4 CIDR 块:输入 VCN 所需的 CIDR,或者使用工具已经填充的 CIDR。
    • 公共子网 IPv4 CIDR 块:为公共子网输入所需的 CIDR,或使用已自动填充的 CIDR。
    • 专用子网 IPv4 CIDR 块:为专用子网输入所需的 CIDR,或使用已自动填充的 CIDR。

    填写以下信息

    填写以下信息

  5. 单击下一步并等待创建 VCN。

    等待 VCN 创建

任务 2:创建 OCI 注册表资料档案库

此服务将托管将收集数据安全审计日志的 Python 函数的映像。

  1. 转到 OCI 控制台,然后导航到开发人员服务容器注册表

    访问容器注册表服务

  2. 在“容器注册表服务”页中,选择将在其中创建容器注册表的区间,然后单击创建资料档案库

    创建资料档案库

  3. 输入必要的信息以创建资料档案库,然后单击创建

    • 在区间中创建:选择将在其中创建资料档案库的区间。
    • 访问权限:选择 private,以便这是一个专用系统信息库(无法通过 Internet 访问)。
    • 存储库名称:输入要分配给存储库的名称。

    创建资料档案库

    创建完成后,资料档案库将可用于查看其详细信息。

    填写以下信息

    注:记下为资料档案库创建的名称空间。此名称空间将在后面的任务中使用。

任务 3:创建 OCI 存储桶以控制信号

如建议环境的拓扑所示,需要创建 OCI 存储桶来接收用于控制函数代码执行的文本文件。此存储桶的名称将用于 OCI 函数的配置以及要为环境配置的策略中。

  1. 要创建存储桶,请转至 OCI 控制台,然后单击存储存储桶

    访问存储桶服务

  2. 选择区间,然后单击创建桶

    创建存储桶

  3. 输入组名称,然后单击创建

    填写以下信息

    注:记下存储桶的名称,它将在构建策略和配置 OCI 函数时使用。

任务 4:创建定制日志

从 Oracle Data Safe 收集的日志的目标必须是 OCI 日志记录组,该组将包含专门为接收从受监视数据库捕获的审计记录而创建的定制日志。

  1. 转到 OCI 控制台,导航到 Observability & Management ,然后单击 Log Groups

    访问日志组服务

  2. 将创建一个日志组来存放 OCI 函数使用的定制日志。选择将在其中创建日志组的区间,然后单击创建日志组

    创建日志组

  3. 输入以下信息并单击创建以创建日志组。

    • 名称:输入日志组的名称。
    • 说明:输入日志组的说明。

    填写以下信息

  4. 单击日志,然后单击创建定制日志

    创建定制日志

  5. 输入以下信息以创建定制日志,该日志将从 Oracle Data Safe 监视的数据库接收审计日志,然后单击创建定制日志

    • 定制日志名称:输入定制日志的名称。
    • 区间:选择将在其中创建定制日志的区间。
    • 日志组:选择刚刚在上述步骤中创建的日志组。

    填写以下信息

    注:我们不会创建代理配置。

  6. 自定义日志创建页面是一个工作流,它还允许创建代理配置。在这种情况下,我们不会创建代理配置。因此,单击取消

    不创建代理配置

    将再次加载日志组页并包含创建的定制日志。

    注:请注意在配置 OCI 函数时将使用的定制日志的 Oracle Cloud 标识符 (OCID)。

    复制定制日志的 OCID

任务 5:创建 OCI 函数

创建应存储 OCI Functions 映像的资料档案库后,必须创建 OCI Functions 以收集数据安全审计日志。

  1. 转到 OCI 控制台,导航到开发人员服务应用程序

    访问应用程序服务

  2. 选择将在其中创建应用程序的区间,然后单击创建应用程序

    创建应用程序

  3. 输入以下信息以创建应用程序,然后单击创建

    • 名称:输入应用程序的名称。
    • < 区间 > 中的 VCN:选择将在其中创建应用程序的 VCN。
    • < 区间 > 中的子网:选择将在其中创建应用程序的子网。
    • 配置:选择要在其上创建应用程序的体系结构。在此示例中,我们将使用 GENERIC_X86

    填写以下信息

任务 6:配置 OCI 函数

创建应用程序后,页面将自动加载。在此页面上,我们建议您通过 OCI Cloud Shell 或本地设置执行分步指南,以便创建 OCI Functions。在本教程中,将使用通过 OCI Cloud Shell 建议的逐步说明。

  1. 选择 Cloud Shell 设置

    OCI 函数云 shell 设置

    注:Cloud Shell 设置中给出的示例是指简单的 Java 代码。由于我们将在本实验中使用 Python 代码,下面是 Python 中启动 OCI 函数的参考。

  2. 单击云 Shell 并根据 OCI Functions 所需的配置输入详细信息。

    打开 cloud shell

    fn list context
    
    fn use context <REGION>
    
    fn update context oracle.compartment-id <OCID_Compartment>
    
    fn update context registry <REPO_URL>/<namespace>/[repo-name-prefix]
    
    • < REGION >:输入将创建 OCI 函数的区域。在这种情况下,我们使用 sa-saopaulo-1。可在此处找到 OCI 区域列表:区域和可用性域
    • < OCID 区间 >:输入将在其中创建函数的区间的 OCID。
    • < REPO_URL >/< 名称空间 >/[ repo-name-prefix]:资料档案库 URL 由创建资料档案库的区域关键字和此已创建资料档案库的名称组成。因此,对于本教程,完整 URL 将为:
      • REPO_URL:< region-key >.ocir.io 构成的字符串。我们使用 sa-saopaulo-1 区域,因此 URL 将为 gru.ocir.io(您所在区域的区域键可以在此处找到:区域和可用性域)。
      • 名称空间:axyxxqi24xxx(在任务 2.4 处标注)。
      • repo-name-prefix:创建的系统信息库的名称。

任务 7:创建用于登录到 OCI 注册表的验证令牌

需要创建验证令牌,以便用于执行此过程的用户可以登录到创建的 OCI 注册表。有关详细信息,请参阅获取验证令牌

任务 8:创建和部署 OCI 函数

  1. 创建验证令牌后,您将需要通过 Docker 命令登录到资料档案库。有关登录的详细信息,请参阅登录到 Oracle Cloud Infrastructure Registry

    docker login -u '<namespace>/<username>' <repo-domain-url>
    
  2. 登录到存储库后,可以初始化函数并编辑用于部署的 Python 代码。运行以下命令。

    fn list apps
    
    fn init --runtime python fndatasafelogs
    
    cd fndatasafelogs
    
       >> Edit function.py to insert the function code
       >> Edit requirements.txt to insert requirements as needed for the role
       >> Edit function.yaml to make it as needed
    
    fn -v deploy --app <app_name>
    

    注:在一些步骤中,需要编辑文件。function.pyrequirements.txtfunction.yaml 文件的内容可以在此处找到。

任务 9:配置 OCI 函数操作参数

创建 OCI 函数后,必须将其配置为正确收集数据安全日志。

  1. 转到 OCI 控制台,然后导航到开发人员服务应用

    访问应用程序服务

  2. 选择用于创建此项目的应用程序的区间,然后单击该应用程序。

    访问应用程序

  3. 函数中,单击创建的函数以对其进行配置。

    访问功能

  4. 单击配置并输入要工作的函数的以下信息。

    • ociOSTrackerBucketName:输入在任务 3.3 中创建的控制存储桶的名称。
    • ociDataSafeCompartmentOCID:输入使用的 OCI 租户(根租户)的 OCID。
    • ociLoggingLogOCID:输入在任务 4.6 中创建的定制日志的 OCID。

    配置函数

    现在,完成用于配置 Oracle Data Safe 日志收集功能的策略。

任务 10:创建动态组

创建动态组,以便向 OCI Functions 授予对收集数据安全日志所需服务的访问权限。

  1. 在 OCI 控制台中,转至身份<Your_Domain>动态组,然后单击创建动态组

    创建动态组

    注:在此示例中,使用身份域默认值。检查环境中使用的身份域并正确访问它。

  2. 输入以下信息并单击创建动态组

    • 名称:输入动态组的名称。

    • 说明:输入动态组的说明。

    • 规则 1:输入将标识创建的 OCI 函数的动态组匹配规则。

      使用的匹配规则将如下所示:ALL {resource.type = 'fnfunc', resource.compartment.id = '<Compartment_ID>'}

      • Compartment_ID:输入在其中创建函数的区间的 OCID。

    填写以下信息

    注:记下创建的动态组的名称。它将在构建 OCI IAM 策略期间使用。

任务 11:为 OCI 函数的运行创建 OCI IAM 策略

要使收集数据安全日志的功能正常工作,必须创建所有必要的访问权限。

  1. 在 OCI 控制台中,转至身份和安全策略

    访问策略

    必须在创建环境的区间级别和租户级别创建策略。在租户级别,需要创建单个策略。此策略将允许创建的函数读取所有 Oracle Data Safe 事件(无论这些事件发生在何处)。

  2. 要在区间中创建策略,请单击创建策略

    创建 IAM 策略

  3. 输入以下信息并单击创建

    填写以下信息

    • 名称:输入策略的名称。

    • 说明:输入策略的说明。

    • 区间:选择将在其中创建策略的区间。可以在创建环境的区间中创建此第一个策略。

    • 策略构建器:单击密钥可激活高级策略填充模式。

    • 策略:以文本格式输入策略。

      环境运行所需的策略如下:

      Allow dynamic-group 'Default'/'<Dynamic_Group_Name>' to manage buckets in compartment <Compartment_Name> where target.bucket.name='<Bucket_Name>'
      
      Allow dynamic-group 'Default'/'<Dynamic_Group_Name>' to manage objects in compartment <Compartment_Name> where target.bucket.name='<Bucket_Name>'
      
      Allow dynamic-group 'Default'/'<Dynamic_Group_Name>' to use log-content in compartment <Compartment_Name>
      
      Allow dynamic-group 'Default'/'<Dynamic_Group_Name>' to manage objects in compartment <Compartment_Name>
      
      Allow dynamic-group 'Default'/'<Dynamic_Group_Name>' to read objectstorage-namespaces in compartment <Compartment_Name>
      
      Allow dynamic-group 'Default'/'<Dynamic_Group_Name>' to read buckets in compartment <Compartment_Name>
      
    • 在租户级别,只需创建允许函数读取数据安全事件的策略。

      Allow dynamic-group 'Default'/'<Dynamic_Group_Name>' to read data-safe-audit-events in tenancy
      
      • Dynamic_Group_Name:输入为 OCI 函数创建的动态组的名称。
      • Compartment_Name:输入用于创建此过程环境的区间的名称。
      • Bucket_Name:输入创建的 OCI 存储桶的名称。

    注:这些策略和此过程的整个环境是在环境的默认身份域中创建的。有关身份域的详细信息,请参阅身份域

    创建策略后,将可以执行该函数,以便标识其名称空间。此名称空间将用于在 OCI 监视中创建预警。

  4. 要执行该函数,请打开 Cloud Shell 并运行以下命令。

    fn list apps
    

    复制为此练习创建的应用程序的名称,然后运行以下命令。

    fn invoke <app_name> <function_name>
    

    调用 OCI 函数示例

    注:检查执行状态是否为 ok 。这表明该函数可以在环境中完美运行。

现在,我们已运行函数,请创建 OCI 通知主题和 OCI 监视预警,以完成配置。

任务 12:创建 OCI 通知主题

部署 OCI 函数后,可以配置 OCI 通知服务以调用 Python 代码的执行,这些代码将定期收集数据安全日志。

  1. 在 OCI 控制台中,转至开发人员服务通知

    访问通知

  2. 单击创建主题以创建通知主题。

    创建通知主题

  3. 输入以下信息以创建通知主题,然后单击创建

    • 名称:输入要创建的主题名称。
    • 说明:可选输入主题的说明。

    填写以下信息

  4. 可以订阅该主题的函数,也就是说,当该主题被时间警报触发时,该主题将执行 Python 代码来收集数据安全日志。要配置有关该主题的 OCI 函数订阅,请单击新创建主题的名称。

    访问主题

  5. 在主题页内,单击创建订阅以执行配置。

    创建订阅

  6. 在配置页面上,输入以下信息,然后单击创建

    • 协议:选择函数
    • 函数区间:选择在其中创建 OCI 函数的区间。
    • Oracle Functions 应用程序:选择在任务 5 中创建的应用程序。
    • 函数:选择在任务 6 中创建的函数。

    填写以下信息

    该主题将使用成功的函数订阅进行更新。

    订阅主题的功能

任务 13:使用 OCI 监视创建预警

在配置主题并添加函数后,必须创建预警,该预警将负责触发通知并因此触发函数。

  1. 在 OCI 控制台中,转至 Observability & ManagementAlarm Definitions

    访问预警定义

  2. 要创建预警,请单击创建预警

    创建预警

  3. 输入以下信息以创建预警。

    1. 定义预警字段中,输入以下信息。

      • 预警名称:输入预警的名称。
      • 预警严重性:为预警严重性选择“信息”。

      填写以下信息

    2. 度量说明字段中,输入以下信息。

      • 区间:选择将在其中创建预警的区间。
      • 度量名称空间:oci_faas
      • 度量名称:FunctionInvocationCount
      • 间隔:1 day
      • 统计信息:Count

      填写以下信息

    3. 触发器规则字段中,输入以下信息。

      • 运算符:greater then
      • 值: 0
      • 触发延迟分钟数:1

      填写以下信息

    4. 定义预警通知字段中,输入以下信息。

      • 目标服务:Notifications
      • 区间:选择在其中创建 OCI 通知主题的区间。
      • 主题:选择已创建主题的名称。
      • 是否重复通知?:选中此框可多次触发 OCI 通知。
      • 通知频率:1
      • 通知频率:minutes

      填写以下信息

    5. 选择是否启用此预警?,然后单击保存预警

      创建预警

完成此操作后,环境将准备好收集数据安全日志。等待片刻,直到数据安全日志开始显示在创建的定制日志中。

查看日志

确认

更多学习资源

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

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