设置
管理与 Defender 配置相关的所有内容,包括通知、地址、团队成员、API 密钥等。
通知
当触发时,Defender可以将通知传递到一个或多个配置的通知渠道,这些渠道可以包括 Slack、电子邮件、Telegram、Discord、Datadog、PagerDuty、OpsGenie 或自定义 Webhooks。这些通知渠道可以在监视器、动作和工作流中使用。

Slack 配置
请参阅 Slack webhook 文档 以配置 Slack webhook。 配置 Slack 后,在 Defender 中输入 webhook URL。
-
别名 是此 Slack 配置的名称。 例如,您可以将其命名为渠道名称。
-
Webhook URL 是来自您的 Slack 管理控制台的 URL,用于发送通知。
Discord 配置
请参阅 Discord webhook 文档 以配置 Discord 频道的 webhook。
-
别名 是此 Discord 配置的名称。
-
Webhook URL 是来自您的 Discord 频道的 URL,用于发送通知。
Telegram 配置
请参阅 Telegram 机器人文档 以使用 BotFather 配置 Telegram 机器人。
注意:必须将 Telegram 机器人添加到您的频道并具有发布消息的权限。
要查找频道的聊天 ID,请执行以下 curl 命令(使用您的机器人令牌值)并提取聊天的 id
值。 如果您在响应中未收到任何条目,请先向您的聊天发送测试消息。
$ curl https://api.telegram.org/bot$BOT_TOKEN/getUpdates
{
"ok": true,
"result": [
{
"update_id": 98xxxx98,
"channel_post": {
"message_id": 26,
"sender_chat": {
"id": -100xxxxxx5976,
"title": "Monitor Test",
"type": "channel"
},
"chat": {
"id": -100xxxxxx5976, // <--- This is your chat ID
"title": "Monitor Test",
"type": "channel"
},
"date": 1612809138,
"text": "test"
}
}
]
}
-
别名 是此 Telegram 配置的名称。
-
聊天 ID 是 Telegram 聊天的 ID。
-
机器人令牌 是您在创建 Telegram 机器人时从 BotFather 收到的令牌。
Datadog 配置
Datadog 配置允许 Defender 将自定义指标转发到您的 Datadog 帐户。 有关自定义指标的更多信息,请参阅 Datadog 指标文档
我们发送的指标是 COUNT 指标,它表示触发通知的交易数量。 我们不发送零,因此如果没有触发器,则应预期缺少数据。 对于每个指标,我们发送两个标签:network
(rinkeby, mainnet,…),当监视器触发通知时,则发送 monitor
(监视器的名称)
注意:新的自定义指标可能需要几分钟才能显示在 Datadog 控制台中
-
别名 是此 Datadog 配置的名称。
-
Api Key 是来自您的 Datadog 管理的 API 密钥。
-
指标前缀 将位于所有指标名称之前。 例如,如果前缀为
openzeppelin.
,则监视器将发送一个名为openzeppelin.monitor
的指标。
Webhook 配置
要配置自定义 webhook 通知渠道,您只需提供 webhook 端点 URL 和一个用于显示目的的别名。
-
别名 是此 webhook 端点的名称。
-
Webhook URL 是将发送通知的 URL。
为了避免在大量匹配的情况下,大量并发请求淹没接收 webhook,Defender 发送一个 JSON 对象,其中包含一个 events
,其中包含一个数组,其中包含在一个区块中找到的所有匹配事件。
{
events: [...] // See Event Schema info in Action or Monitor docs
}
OpsGenie 配置
请参阅 OpsGenie 集成文档 以配置可以创建警报的 OpsGenie API 集成。
-
API Key 集成 API 密钥,可以在集成设置中找到
-
Instance Location OpsGenie 实例服务器所在的位置
-
Responders 将把警报发送到通知的团队、用户、升级和计划。 type字段对于每个项目都是强制性的,可能的值是team,user,escalation和schedule。如果API Key属于团队集成,则此字段将被所有者团队覆盖。应提供每个响应者的id或name。您可以参考以下示例值(50个团队、用户、升级或计划)
-
Visible To 警报将变为可见而无需发送任何通知的团队和用户。 type字段对于每个项目都是强制性的,可能的值是team和user。除了type字段之外,还应该为团队提供id或name,并为用户提供id或username。请注意:默认情况下,警报对于响应者字段中指定的团队都是可见的,因此无需在visibleTo字段中重新指定它们。您可以参考以下示例值(总共50个团队或用户)
-
Alias 警报的客户端定义标识符,也是 警报去重 的关键要素 (最大 512 个字符)
-
Priority 警报的优先级。 可能的值为 P1、P2、P3、P4 和 P5。 默认值为 P3
-
Entity 警报的实体字段,通常用于指定警报与哪个域相关 (最大 512 个字符)
-
Actions 可用于警报的自定义操作 (10 x 50 个最大字符)
-
Note 在创建警报时将添加的附加说明 (最大 25000 个字符)
-
Details 用作警报自定义属性的键值对映射 (最大 8000 个字符)
-
Tags 警报标签 (20 x 50 个最大字符)
PagerDuty 配置
请参阅 PagerDuty 集成文档 以配置可以创建更改和警报事件的 PagerDuty API v2 集成。
-
Event Type PagerDuty 分类的事件类型(alert 或 change)
-
Routing Key 服务或全局规则集上集成的集成密钥(32 个字符)
-
Event Action 事件的操作类型(trigger、acknowledge 或 resolve)
-
Dedup Key 用于关联触发器和解决的重复数据删除键(最大 255 个字符)
-
Severity 状态事件描述的受影响系统的感知严重性(critical、error、warning 或 info)
-
Component 负责该事件的源计算机的组件
-
Group 服务的组件的逻辑分组
-
Class 事件的类/类型
-
Custom_detail 键值对映射,用于提供有关事件和受影响系统的其他详细信息
团队成员
您可以在 团队成员 部分下邀请、管理访问权限以及从您的 Defender 帐户中删除团队成员。

注意:如果您想将用户添加到您的团队,请确保从 团队成员 部分邀请他们。 如果他们直接注册到应用程序,他们将被添加到他们自己的新团队。 如果发生这种情况,请考虑让您的队友删除他们的帐户,以便您可以重新发送您的团队的邀请。 或者,他们可以使用其他电子邮件地址加入您的团队。
角色
每个团队成员都分配有一个角色。 您可以通过基于角色的访问控制系统管理跨所有 Defender 产品的访问、修改和执行授权。
当您邀请新用户加入您的团队时,您将为他们分配一个角色,确定他们的访问权限。
要创建新角色,请单击 创建角色 按钮。 系统会要求您输入角色名称和描述,并指定该角色中的用户将获得的每个产品的访问级别。 您还可以指定该角色将授予哪些管理权限:管理用户和角色、管理团队 API 密钥、管理 Fireblocks API 密钥、管理地址簿以及配置日志转发。

保存后,新角色将可用于分配给新的或现有的团队成员。 当然,如果在将来您决定修改给定角色的访问级别,则所有具有该角色的用户都将因此看到他们的访问级别发生变化。
警告:授予管理权限时要小心。 具有修改角色但无权访问任何其他组件的权限的用户可以修改自己的角色,以授予他们访问应用程序其他任何部分的权限。
双重身份验证 (2FA)
我们强烈建议您启用 2FA 以提高您的 Defender 帐户安全性。 作为第二种身份验证因素,Defender 依赖 基于时间的单次密码标准 (TOTP)。 要在 Defender 上启用 2FA,您需要一个符合 TOTP 标准的应用程序,例如 Authy 或 Google Authenticator。 每个用户都可以在他们的个人资料下启用 2FA,可以从右上角的用户菜单访问。 Defender 将指导用户完成必要的步骤。
密钥
密钥是区分大小写的字符串键值对,可以使用 event.secrets
对象从任何动作访问。 您可以定义任意数量的密钥供您的动作使用。 密钥在您的所有动作中共享,而不是特定于单个动作。
exports.handler = async function(event) {
const { mySecret, anApiKey } = event.secrets;
}
密钥经过加密并存储在安全保险库中,仅在您的动作运行时才解密以进行注入。 写入密钥后,只能从用户界面删除或覆盖密钥,但不能读取密钥。
警告:动作可能会记录密钥的值,从而意外泄漏密钥。

您可以使用密钥来存储安全密钥以访问外部 API,或您不想在动作代码中公开的任何其他密钥值。
注意:虽然您也可以使用动作密钥来存储用于签署消息或交易的私钥,但我们建议您改用 [Relayers]。 中继器的签名操作在安全保险库中执行,与在动作运行中加载私钥并在那里进行签名相比,提供了更高的安全性。
API 密钥
在 API 密钥中,您可以管理客户端用于访问您的帐户的 Defender API 的密钥,如果您使用 Fireblocks 进行审批,还可以输入集成 API 密钥。 请注意,中继器有自己的 API 密钥,这些密钥与这些 API 密钥分开,并且直接在“管理中继器”中配置。
要添加 API 密钥,请单击“创建 API 密钥”按钮。

选择您想要与 API 密钥关联的 API 功能:
-
管理交易提案和合约 用于创建和发布操作以及管理合约。
-
管理中继器 用于创建中继器和更改中继器策略。
-
管理自动操作 用于创建和修改自动操作及其配置。
-
管理监视器 用于创建和管理监视器及其配置。
可以选择性地选择 API 密钥到期时间。 您可以以分钟、小时或天为单位指定到期时间。
创建 API 密钥后,Defender 将向您显示详细信息。

请务必复制密钥,访问时需要它,并且在关闭表单后将无法再次访问。
自定义网络
分叉网络
在“分叉网络”部分,您可以管理和监督您的分叉网络。 这些网络使您可以测试安全设置的效率,并提供在测试网和主网上启动之前识别和修复任何问题的重要机会。

通过单击“创建分叉网络”按钮来完成分叉网络的设置。 此操作会提示您为分叉网络提供一个名称,并选择您打算从中分叉的基础网络。 您可以选择从 Defender 支持的任何网络进行分叉。 网络的货币符号将根据您选择的网络自动填充。 此外,如果访问需要,您还需要输入分叉网络的 RPC URL,并且可以选择输入 API 密钥。
为了改善用户体验,您还可以选择包含区块浏览器 URL。
创建后,该网络可用于需要网络选择的任何 Defender 模块。 这在执行诸如建立审批流程、配置中继器或部署合约等任务时尤其有价值。

注意:创建分叉网络后,您无法编辑其名称或 RPC URL。 如果您需要更改这些设置,您需要删除并重新创建分叉网络。 删除分叉网络时,所有 关联的资源也将被删除。 这包括审批流程、中继器、合约、地址簿条目等。
私有网络
浏览“私有网络”部分以有效地管理和监督您的私有网络。 这些网络建立了一个受限且受控的环境,专为测试和验证网络配置而定制。 这种受控空间使使用者能够在将配置部署到生产环境之前识别和解决潜在问题,从而提供了一个安全的场所来隔离评估系统功能和安全措施。

要设置私有网络,只需点击“创建私有网络”按钮。此操作会提示您为私有网络定义一个名称,并为网络选择货币符号(“ETH”)。 此外,还需提供 RPC URL,以及(可选)访问所需的 API 密钥。
注意:私有网络的链 ID 不得与 官方支持的 Defender 网络 的链 ID 冲突。
为了增强用户体验,通过包含区块浏览器 URL、Safe 合约部署地址和 subgraph URL 自定义您的设置。
Safe 合约 形成了一套全面的智能合约集合,旨在部署、管理和交互多重签名钱包。Defender 使用以下 Safe 合约部署来丰富用户体验:
-
Master:促进 Safe 多重签名钱包部署,支持使用基于 EIP-712 的签名消息进行确认。
-
Proxy Factory:使 Safe 智能合约部署能够在单个事务中创建新的代理合约并执行对新代理的消息调用。
-
Multi Send Call Only:允许 Safe 智能合约部署将多个事务批量处理为一个,专门用于调用。
-
Create Call:促进 Safe 智能合约部署来利用不同的创建操作码来部署合约。
您可以在您的私有网络上 部署这些合约,在创建表单中提供合约地址,以在 Defender 中利用它们,尤其是在使用 CREATE2
进行部署时。
Defender 利用 Subgraph 对区块链数据进行基于 GraphQL 的查询,主要用于访问控制模块。 创建您自己的 Subgraph,并在创建表单中输入端点以在 Defender 中激活此功能。 您可以在此处找到访问控制 subgraph 的示例配置 here。
创建后,该网络可用于需要网络选择的任何 Defender 模块。 这在执行诸如建立审批流程、配置中继器或部署合约等任务时被证明是无价的。

注意:创建私有网络后,您无法编辑其名称、RPC URL 或符号。 若要进行更改,您必须删除并重新创建私有网络。 删除私有网络也将删除 所有 关联的资源,包括审批流程、中继器、合约、地址簿条目等。