使用 OCI 函数将 Oracle Cloud Infrastructure 登录到 Microsoft Azure Sentinel

您所在的位置:网站首页 lad指令的功能 使用 OCI 函数将 Oracle Cloud Infrastructure 登录到 Microsoft Azure Sentinel

使用 OCI 函数将 Oracle Cloud Infrastructure 登录到 Microsoft Azure Sentinel

#使用 OCI 函数将 Oracle Cloud Infrastructure 登录到 Microsoft Azure Sentinel| 来源: 网络整理| 查看: 265

注:

此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于云环境的那些值。 使用 OCI 函数将 Oracle Cloud Infrastructure 登录到 Microsoft Azure Sentinel 简介

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

服务连接器中心是一个云消息总线平台,它提供了一个单一平台来描述、执行和监视在 Oracle Cloud Infrastructure 服务之间移动数据时的交互。使用服务连接器中心服务可以在 Oracle Cloud Infrastructure 中的服务之间传输数据。

通过使用服务连接器和函数服务,您可以将来自 OCI 云环境的日志生成与自动、可伸缩地将环境中的所有信息安全记录发送到安全信息和事件管理 (SIEM) Microsoft Azure Sentinel 实例。

目标

使用 OCI 函数将 OCI 日志摄取到 Microsoft Azure Sentinel。

先决条件 访问 Oracle Cloud 租户 您的租户中的虚拟云网络设置 日志、流处理和函数的所有策略设置。 任务 1:启动 OCI 实例

通过 Web 控制台创建新的 OCI 实例并默认激活其任何插件,转至“实例”页并单击创建实例。

填写创建实例所需的所有信息。

转到页面末尾,然后单击显示高级选项。

某些选项卡将显示在屏幕上。单击 Oracle Cloud Agent 并选择在实例创建完成后要处于活动状态的插件。

在实例准备就绪可供使用后,在此选项卡上选择的所有插件都将自动激活。

选择插件后,单击页面末尾的创建。

任务 2:配置 OCI 日志记录设置 任务 2.1:配置 Windows 实例定制日志

创建 Windows 实例后,必须配置 OCI 环境以通过服务器上安装的 Oracle Agent 捕获事件查看器日志。

开始之前,请确保要从中收集日志的服务器上“定制日志”插件处于活动状态。在 OCI 控制台中,转至计算、实例。

选择要监视的实例。

单击 Oracle Cloud Agent 选项卡,并确保启用名为定制日志监视的插件。

如果未在实例中启用插件,请启用该插件。之后,让我们配置 OCI 日志记录,以便该代理可以捕获 Windows 事件查看器事件。 任务 2.2:配置服务器的动态组

要从一个或多个 Windows 服务器捕获事件查看器日志,必须创建动态组。此组将包含应捕获其日志的所有 Windows 实例。

要创建动态组,请单击 OCI 控制台的主菜单并转至身份与安全、身份。

从“身份”菜单中,访问 *Domains 子菜单。

单击您的身份域(在本教程示例中,我们使用默认)。

现在,在身份域内,单击动态组菜单,以便可以创建将包含要监视的所有 Windows 服务器的动态组。完成此操作后,单击创建动态组。

将打开一个新页面。填写有关创建动态组(名称和说明)的信息,然后在匹配规则中单击规则构建器链接,以便能够创建规则来选择将分组在此动态组中的实例。

我们将创建的示例规则将对区间中的所有现有服务器进行分组。为此,只需捕获区间 ID 并将其插入值字段中,如下图中所示。

有关创建动态组的更多信息,请参阅官方文档:创建动态组和策略以从记事本会话访问其他 Oracle Cloud Infrastructure 资源。

创建完成后,将提供包含动态组信息的页面。

动态组已创建,可用于集中 OCI 环境的日志。

注:您可以使用高级筛选器并创建动态组来仅捕获具有特定标记的实例。为此,我们建议阅读 OCI 的官方文档,网址为:编写匹配规则以定义动态组。

任务 2.3:创建日志记录组

您还需要创建一个日志记录组,以便能够集中由安装在您的环境中的 Windows 服务器上的代理发送的所有日志。

单击 OCI 控制台的主菜单并转至观察和管理、日志组。

访问服务页时,单击创建日志组。

在日志组创建页内,填写请求的信息,然后单击创建。

完成此步骤后,让我们开始创建安装在 OCI 实例中的 Oracle Cloud Agent 的事件查看器日志捕获。

任务 2.4:配置 OCI 日志记录

配置实例后,动态组和日志组,转至观察和管理,然后单击日志记录。

在“OCI 日志记录”页面中,单击代理配置,以便我们可以创建允许将 Windows 事件查看器日志发送到 OCI 日志记录的配置。在代理配置页中,单击创建代理配置。

填写页面上的所有必需字段,然后选择您在上一步中创建的动态组。

填写这些初始项目时,向下滚动页面并填写代理配置字段,通知您希望捕获每个可用通道(应用程序、安全性和系统)的“Windows 事件日志”。在此处,您需要重复为每个通道创建日志输入的过程。

配置完成后,您的代理配置页将可用,如下所示。

注:上面创建的代理配置用于捕获在 Linux 服务器上的 /var/log/messages 文件中生成的事件查看器日志和日志。

代理配置处于活动状态后,请等待大约 5 分钟,直到可以完成第一个日志收集。要查看所收集的受监视实例的日志,请单击浏览日志菜单,如下图中所示。

任务 3:记下 Microsoft Azure Sentinel 详细信息

在 OCI 区域中设置集中日志记录环境后,转到 Microsoft Azure 订阅并收集以下信息:

工作区 ID:Microsoft Azure Sentinel 在 Microsoft Azure 订阅中使用的 Log Analytics 工作区 ID。 共享密钥:您的 Log Analytics 工作区访问密钥。

可以在代理管理菜单中找到这些值,如下图中所示的 Azure 订阅:

请记下这些值。

重要提示:本文档中并没有提供在 Microsoft Azure 订阅中创建和配置 Microsoft Azure Sentinel 的指导。为此,请访问 Microsoft 网站上的官方产品文档。

任务 4:创建 OCI Vault

现在,我们已经拥有属于 SIEM Sentinel 的 Microsoft Azure Log Analytics Workspace 数据,让我们创建一个 OCI Vault 来存储上一个任务中复制的密钥值。此密钥必须存储在 OCI Vault 中,因此无需将其插入 OCI 函数代码中,我们将在下一步中创建该代码。

要创建 OCI Vault,请转到 OCI 控制台的主菜单并转至身份与安全性 Vault 。

加载 Vault 页面后,单击创建 Vault ,选择所需的区间并命名 Vault。

创建 Vault 之后,您需要创建主加密密钥。此密钥将用于加密您的 Vault 中的所有密钥。为此,请单击下面的图像中所示的创建密钥。

完成主密钥创建后,单击安全菜单并创建您在上一步中记录的 Microsoft Azure 密钥。

使用 Microsoft Azure Sentinel Log Analytics 工作区中的主键或辅助键数据填充必要的字段,如任务 3 中所示。

其他项(Sentinel 工作区 ID 和将存储在 Sentinel 中的表的名称)可以插入 Vault 中,也可以不插入。下面,让我们将其插入函数的代码中。

重要提示:记下在 Vault 中创建的密钥的 OCID。

任务 5:创建和配置 OCI 功能

在 OCI 区域中设置集中式日志记录环境后,Vault 和 Azure 环境已准备就绪,现在可以创建 OCI 功能,将定制日志和审计日志从 OCI 区域发送到 Microsoft Azure Sentinel。

任务 5.1:创建 OCI 函数

转到 OCI 控制台的主菜单并转至开发人员服务、功能。

加载“函数”页后,单击创建应用程序。

填写所需的字段,然后单击创建。

创建后,请注意您的功能将不受任何网络安全组保护。必须将其添加到网络安全组。

重要提示:

由于函数将访问用于将日志发送到 Microsoft Azure Sentinel 的公共 Microsoft Azure 端点,因此必须在有权访问 Internet 的子网中创建此函数。

还要验证您的 VNET 安全列表,以确保这些列表都不会阻止您的 OCI 功能访问 Internet。

任务 5.2:配置 OCI 功能和启动

创建 OCI 函数后,您将在屏幕上看到在环境中配置函数所需的命令。在此,举例来说,我们将逐步通过 Cloud Shell 执行这些设置,但也可以直接在设备上执行这些设置。

直接在要配置的 OCI 区域的 Web 控制台中打开 Cloud Shell(在本教程中,区域是巴西东部)。

按照“Function(函数)”页面上指示的步骤操作,并在 Cloud Shell 终端中执行请求的命令。

要执行的前 3 个命令不需要更改,但是,在第四个命令中,您需要提供存储应用程序映像的资料档案库的名称。在我们的示例中,输入的名称为 repo-ocilog-to-azuresiem 。

$ fn update context registry gru.ocir.io/xxxxxxxxxa/repo-ocilog-to-azuresiem

在 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 配置文件中生成授权令牌。Auth Token 是访问凭据,可用于与将存储函数的 Docker 映像的 OCI 存储库进行交互。单击 OCI Web 控制台中的用户图标,然后单击我的概要信息。

在用户页面中后,向下滚动并单击 Auth 令牌。

在“验证令牌”部分中,单击生成令牌。

填写您的验证令牌的名称,然后单击生成令牌。

重要提示:写下此令牌并将其存储在安全的地方。此令牌是将用于存储函数映像的 OCI 注册表的访问密码。

通过访问 OCI Web 控制台的主菜单并访问开发人员服务功能返回“函数”页。

在“Functions(函数)”页面上,访问在前面的步骤中创建的函数。

单击开始菜单并在验证令牌创建步骤后逐步继续。

运行命令 docker login,作为口令,请在执行的最后一步中使用刚从创建验证令牌中复制的字符串。

现在,在接下来的步骤中,我们将创建、部署和调用函数。要在 Cloud Shell 中初始化函数,请更改屏幕上显示的示例中建议的命令。此更改是必要的,因为要使用的运行时环境在 Python 中(而不是在 Java 中,如创建函数所建议的 hello-world 示例所示)。

$ fn init --runtime python func-ocilog-to-azuresiem

任务 5.2.1:编写 OCI 函数的源代码

执行 init 命令后,访问新创建的 Function 目录。

$ cd func-ocilog-to-azuresiem/

请注意,在您刚刚访问的目录中,有一个 Python 文件 (func.py)、一个 YAML 文件 (func.yaml) 和一个要求文件 (requirements.txt)。我们需要编辑其中的两个文件。

编辑 func.py 文件,删除所有内容并将以下内容插入其中。

import io import json import requests import datetime import hashlib import hmac import base64 import logging import oci import base64 import sys from fdk import response # Global variable logger = logging.getLogger() # Get Resource Principal Credentials # OCI Functions get permission to read vault from OCI IAM signer = oci.auth.signers.get_resource_principals_signer() # Retrieve secret from OCI Vault def get_binary_secret(secret_ocid): try: client = oci.secrets.SecretsClient({}, signer=signer) secret_content = client.get_secret_bundle(secret_ocid).data.secret_bundle_content.content.encode('utf-8') secret_content_decoded = base64.b64decode(secret_content).decode('UTF-8') except Exception as ex: logger.critical("ERROR: failed to retrieve the secret content from OCI Vault. ", ex) raise return secret_content_decoded # Build the API signature def build_signature(customer_id, shared_key, date, content_length, method, content_type, resource): x_headers = 'x-ms-date:' + date string_to_hash = method + "\n" + str(content_length) + "\n" + content_type + "\n" + x_headers + "\n" + resource bytes_to_hash = bytes(string_to_hash, encoding= "utf-8" ) decoded_key = base64.b64decode(shared_key) encoded_hash = base64.b64encode(hmac.new(decoded_key, bytes_to_hash, digestmod=hashlib.sha256).digest()).decode() authorization = "SharedKey {}:{}" .format(customer_id,encoded_hash) return authorization # Build and send a request to the POST API (Microsoft Azure Sentinel public endpoint) def post_data(customer_id, shared_key, body, log_type, logger): method = 'POST' content_type = 'application/json' resource = '/api/logs' rfc1123date = datetime.datetime.utcnow().strftime( '%a, %d %b %Y %H:%M:%S GMT' ) content_length = len(body) signature = build_signature(customer_id, shared_key, rfc1123date, content_length, method, content_type, resource) uri = 'https://' + customer_id + '.ods.opinsights.azure.com' + resource + '?api-version=2016-04-01' headers = { 'content-type' : content_type, 'Authorization' : signature, 'Log-Type' : log_type, 'x-ms-date' : rfc1123date } response = requests.post(uri,data=body, headers=headers) if (response.status_code >= 200 and response.status_code


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3