注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
将 Oracle Cloud Guard 事件捕获到 Oracle Analytics Cloud 中
简介
本教程将介绍如何将 Oracle Cloud Guard 事件转发到 Oracle Autonomous JSON Database (AJD) 并将其捕获到 Oracle Analytics Cloud 中。随后的教程将在 Oracle Analytics Cloud 中分析和显示 Cloud Guard 事件。
-
Oracle Cloud Guard:Oracle Cloud Guard 是一项原生 Oracle Cloud Infrastructure (OCI) 服务,可帮助客户监视和检测跨区域的资源,从而保持云安全态势,确保 OCI 租户的安全。有关详细信息,请参阅 Oracle Cloud Guard 。
-
Oracle Analytics Cloud:Oracle Analytics Cloud 是一个完全托管的基于云的商务智能 (BI) 和分析平台,旨在作为一个完整的平台来帮助业务用户和分析人员发现洞察和趋势,从而做出数据驱动的决策。有关详细信息,请参阅 Oracle Analytics Cloud 。
概括体系结构
目标
- 将 Oracle Cloud Guard 事件捕获到 Oracle Analytics Cloud 中。
先决条件
-
深入了解 OCI、OCI Events Service 和 Oracle Cloud Guard。
-
提供 Oracle Autonomous Database 以及 Oracle REST Data Services (ORDS) 的知识。
-
具备 OCI 函数和安全性的基本知识。
任务 1:将 Oracle Cloud Guard 配置为触发云事件
配置 Oracle Cloud Guard 以响应检测器配方。响应器规则应确保 Oracle Cloud Guard 事件的状态设置为已启用,如下图中所示。
任务 2:创建 OCI 事件服务规则以检测 Oracle Cloud Guard 问题并调用 OCI 函数
-
OCI Events Service 支持您基于整个租户中资源的状态更改来创建自动化。通过使用事件,开发团队可以在资源更改状态时自动响应。
要获取事件,请导航到 Observability & Management ,然后单击 Events Service 。创建新规则并配置将写入函数的事件类型,如下图中所示。
-
单击省略号图标(三个垂直点)可编辑 Oracle Cloud Guard 事件并将其发送到函数,如下图中所示。
添加操作以将 Cloud Guard 事件转发到函数,如下所示。
配置事件类型。
任务 3:创建用于将事件转发到 AJD 的函数
-
转到 OCI 控制台,导航到 Developer Services ,然后单击 Functions(函数)。
-
选择现有应用程序或单击创建应用程序。在应用程序中创建新的 OCI 函数。有关详细信息,请参阅 Cloud Shell 上的函数 QuickStart 。
注:假设您已成功完成先决条件。
-
运行以下命令可在应用程序列表中查看应用程序。
fn ls apps
-
建议先创建一个样板 Python 函数。
fn init – runtime oci-event-to-db
命令将生成一个名为oci-event-to-db
的文件夹,其中包含三个名为func.py
、func.yaml
和requirements.txt
的文件。 -
AJD 表必须存在且已启用 REST。如下图所示。
-
使用以下代码更新
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"} )
-
使用以下代码更新
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
-
使用以下代码更新
requirements.txt
文件内容。Requests oci fdk
-
运行以下命令以部署函数。
fn -v deploy -app oci-event-to-db
任务 4:使用 ORDS 展平数据库
-
将 Oracle Cloud Guard 事件存储在 AJD 中后,通过检查事件表来检查数据库中的 Oracle Cloud Guard 活动。运行以下 SQL 语句。
SELECT * FROM EVENTS
-
由于 Oracle Cloud Guard 事件以 Java 脚本对象表示法 (JSON) 格式存储,因此必须将其展平或转换为关系格式,Oracle Analytics Cloud 才能分析数据。
要平展数据库,请执行以下步骤:
-
在 Events(事件)表上创建一个索引,然后运行以下 SQL 语句将其展平。
Create search index event_idx on event (event) for JSON parameters ('DATAGUIDE ON');
-
创建视图。
exec dbms_json.create_view_on_path('flat_event', 'event', 'event', '$’);
-
-
运行以下 SQL 语句以检查在上述步骤中创建的列。
SELECT COLUMN_NAME,DATA_TYPE FROM all_tab_columns where table_name ='FLAT_EVENT' order BY column_id;
您应该会看到列以及数据类型,如下图中所示。
任务 5:连接到 Oracle Analytics Cloud
-
将数据库从 JSON 转换为关系格式后,连接到 Oracle Analytics Cloud。转到 OCI 控制台并导航到 AJD 实例,然后单击数据库连接即可提供身份证明并下载 wallet,如下图中所示。
-
登录到 Oracle Analytics Cloud,单击创建新连接,然后单击 Oracle Autonomous Data Warehouse ,然后选择在步骤 1 中下载的 wallet。
-
建立连接后,OAC 将按如下所示在“Connections(连接)”下显示该连接。
-
双击连接以在 OAC 中创建新数据集,展开方案并将表拖到画布上。
确认
-
Authors - Murtuza Madarwala(云解决方案工程师),Phil Dolbow(云解决方案工程师)
-
撰稿人 — Kevin Colwell(云解决方案工程师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Capture Oracle Cloud Guard Events into Oracle Analytics Cloud
G27476-01
February 2025
Copyright ©2025, Oracle and/or its affiliates.