开发您的首个自定义集成
支持:
Google SecOps
SOAR
本文档介绍了如何在集成开发环境 (IDE) 中创建与商业集成具有相同结构的自定义集成。自定义集成会显示在 Content Hub 中,您可以在其中为不同环境配置这些集成,以便在 playbook、手动操作和远程代理中使用。您还可以像导入和导出其他 IDE 项一样导入和导出这些设置。
在此自定义集成示例中,您将为 WHOIS XML API 产品构建自定义集成。首先创建您的第一个集成,包括 WHOIS 产品的注册流程,包括注册产品和创建所需的 API 密钥。
选择要集成的产品
- 在此示例中,您将与 WHOIS XML API 产品集成,这是一款免费的开源工具,可提供对网域数据的 API 访问权限,包括注册者姓名、组织、电子邮件地址、注册地址、注册商信息、网域创建、到期和更新日期、网域可用性和年龄。
- 前往 WHOIS XML API 并注册。
- 登录后,从您的账号页面获取 API 密钥:https://user.whoisxmlapi.com/products
- 在集成参数中使用此 API 密钥。
在 IDE 中创建第一个自定义集成
如需在 IDE 中创建您的第一个自定义集成,请按以下步骤操作:
- 在响应 > IDE 页面上,点击 add 添加以添加新的 IDE 项。
- 选择集成单选按钮,然后输入集成的名称。
- 点击创建。该集成会显示自定义集成图标。
- 点击 设置。
- 在集成对话框中,定义图标、说明、Python 依赖项和集成参数。
在此示例中,系统会显示以下详细信息: - 已上传 WhoisXML API 徽标的图片。此图片会显示在 Content Hub 中,并带有集成标识。
- IDE 中的集成旁边添加了一个 SVG 图标,并附有简要说明和一个参数(API 密钥)。这是 Who Is XML API 产品在配置集成时所需的参数。
- 此集成不需要额外的 Python 库。默认情况下,集成设置为在 Python 3.11 上运行,您可以在设置中更改版本。
配置默认实例
创建集成后,您可以在 Google SecOps 响应集成中查看该集成(在搜索栏中搜索集成名称,或按自定义集成过滤集成类型),其中包含您为该集成定义的图片、说明和参数。
- 依次点击 设置 > 配置默认实例。
- 输入您的 API 密钥,然后点击保存。
- 可选:如需为其他环境(非默认环境)配置集成,请点击配置标签页,然后为该实例设置参数。
创建 Ping 操作
- 在响应 > IDE 中,依次点击 添加 添加 > 添加新的 IDE 项。
- 选择操作单选按钮,输入名称,然后选择集成。
- 点击创建。查看生成的代码模板。
-
复制以下代码,用于 Ping 操作。Ping 操作会使用您为集成配置的
API Key参数,并将其放入产品提供的网址中以进行测试。如需了解详情,请参阅创建自定义操作。 - 点击操作上方的切换开关,然后点击保存,以测试与产品的连接。
- 前往 Google SecOps Marketplace,点击 配置默认实例,并确保集成已配置并保存。
- 点击测试以测试集成。连接成功会显示绿色对勾标记;连接失败会显示 X 以及相关错误。
- 完成身份验证后,在自定义集成中创建您的第一个自定义操作。如需了解详情,请参阅创建自定义操作。
from SiemplifyAction import SiemplifyAction
from SiemplifyUtils import output_handler
import requests
INTEGRATION_NAME = "My first Integration - Whois XML API"
SCRIPT_NAME = "Whois XML API Ping"
@output_handler
def main():
siemplify = SiemplifyAction()
siemplify.script_name = SCRIPT_NAME
api_key = siemplify.extract_configuration_param(provider_name=INTEGRATION_NAME,
param_name="API Key")
url = "https://www.whoisxmlapi.com/whoisserver/WhoisService?apiKey={api_key}&domainName=google.com".format(api_key=api_key)
res = requests.get(url)
res.raise_for_status()
if "ApiKey authenticate failed" in res.content.decode("utf-8"):
raise Exception("Error, bad credentials")
siemplify.end("Successful Connection", True)
if __name__ == "__main__":
main()