注意:

将 Oracle Cloud Guard 事件捕获到 Oracle Analytics Cloud 中

简介

本教程将介绍如何将 Oracle Cloud Guard 事件转发到 Oracle Autonomous JSON Database (AJD) 并将其捕获到 Oracle Analytics Cloud 中。随后的教程将在 Oracle Analytics Cloud 中分析和显示 Cloud Guard 事件。

概括体系结构

概括体系结构。

目标

先决条件

任务 1:将 Oracle Cloud Guard 配置为触发云事件

配置 Oracle Cloud Guard 以响应检测器配方。响应器规则应确保 Oracle Cloud Guard 事件的状态设置为已启用,如下图中所示。

响应器规则。

任务 2:创建 OCI 事件服务规则以检测 Oracle Cloud Guard 问题并调用 OCI 函数

  1. OCI Events Service 支持您基于整个租户中资源的状态更改来创建自动化。通过使用事件,开发团队可以在资源更改状态时自动响应。

    要获取事件,请导航到 Observability & Management ,然后单击 Events Service 。创建新规则并配置将写入函数的事件类型,如下图中所示。

    规则定义。

  2. 单击省略号图标(三个垂直点)可编辑 Oracle Cloud Guard 事件并将其发送到函数,如下图中所示。

    参数定义。 添加操作以将 Cloud Guard 事件转发到函数,如下所示。事件操作。 配置事件类型。 事件类型。

任务 3:创建用于将事件转发到 AJD 的函数

  1. 转到 OCI 控制台,导航到 Developer Services ,然后单击 Functions(函数)

  2. 选择现有应用程序或单击创建应用程序。在应用程序中创建新的 OCI 函数。有关详细信息,请参阅 Cloud Shell 上的函数 QuickStart

    注:假设您已成功完成先决条件。

  3. 运行以下命令可在应用程序列表中查看应用程序。

    fn ls apps
    
  4. 建议先创建一个样板 Python 函数。fn init – runtime oci-event-to-db 命令将生成一个名为 oci-event-to-db 的文件夹,其中包含三个名为 func.pyfunc.yamlrequirements.txt 的文件。

  5. AJD 表必须存在且已启用 REST。如下图所示。 Rest 已启用。

  6. 使用以下代码更新 func.py 文件内容。

    import io
    import json
    import re
    import requests
    
    eventTable="https://mrj6p3vkk4ramuu-cgdata.adb.us-ashburn-1.oraclecloudapps.com/ords/cguser/event/"
    
    from fdk import response
    
    def handler(ctx, data: io.BytesIO=None):
    try:
    bodytxt = data.getvalue()
    body = json.loads(bodytxt)
    
    # print("event type: " + body["eventType"])
    # print("compartment name: " + body["data"]["compartmentName"])
    
    headers = {'Content-type': 'application/json', 'accept': 'application/json'}
    req = requests.post(eventTable, json={ "event": body }, headers=headers)
    
    except (Exception, ValueError) as ex:
    print('ERROR:', ex, flush=True)
    raise
    
    return response.Response(
    ctx,
    response_data=[ json.loads(req.text)["id"] ],
    # response_data=json.loads(req.text),
    headers={"Content-Type": "application/json"}
    )
    
  7. 使用以下代码更新 func.yaml 文件内容。

    schema_version: 20180708
    name: oci-event-to-db
    version: 0.0.44
    runtime: python
    build_image: fnproject/python:3.11-dev
    run_image: fnproject/python:3.11
    entrypoint: /python/bin/fdk /function/func.py handler
    memory: 256
    
  8. 使用以下代码更新 requirements.txt 文件内容。

    Requests
    oci
    fdk
    
  9. 运行以下命令以部署函数。

    fn -v deploy -app oci-event-to-db
    

任务 4:使用 ORDS 展平数据库

  1. 将 Oracle Cloud Guard 事件存储在 AJD 中后,通过检查事件表来检查数据库中的 Oracle Cloud Guard 活动。运行以下 SQL 语句。

    SELECT * FROM EVENTS
    
  2. 由于 Oracle Cloud Guard 事件以 Java 脚本对象表示法 (JSON) 格式存储,因此必须将其展平或转换为关系格式,Oracle Analytics Cloud 才能分析数据。

    要平展数据库,请执行以下步骤:

    1. Events(事件)表上创建一个索引,然后运行以下 SQL 语句将其展平。

      Create search index event_idx on event (event) for JSON parameters ('DATAGUIDE ON');
      
    2. 创建视图。

      exec dbms_json.create_view_on_path('flat_event', 'event', 'event', '$’);
      
  3. 运行以下 SQL 语句以检查在上述步骤中创建的列。

    SELECT COLUMN_NAME,DATA_TYPE FROM all_tab_columns where table_name ='FLAT_EVENT' order BY column_id;
    

    您应该会看到列以及数据类型,如下图中所示。

    关系格式。

任务 5:连接到 Oracle Analytics Cloud

  1. 将数据库从 JSON 转换为关系格式后,连接到 Oracle Analytics Cloud。转到 OCI 控制台并导航到 AJD 实例,然后单击数据库连接即可提供身份证明并下载 wallet,如下图中所示。

    AJD 连接。

  2. 登录到 Oracle Analytics Cloud,单击创建新连接,然后单击 Oracle Autonomous Data Warehouse ,然后选择在步骤 1 中下载的 wallet。

    Oracle Analytics Cloud 连接类型。

  3. 建立连接后,OAC 将按如下所示在“Connections(连接)”下显示该连接。 Oracle Analytics Cloud 连接列表。

  4. 双击连接以在 OAC 中创建新数据集,展开方案并将表拖到画布上。 Oracle Analytics Cloud 数据集。

确认

更多学习资源

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

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