设置

管理与 Defender 配置相关的所有内容,包括通知、地址、团队成员、API 密钥等。

审批流程

审批流程充当链上执行交易的包装器。它们目前包含以下内容:

  • 多重签名

  • EOA(Defender 外部)

  • 中继器(Defender 内部)

  • Governor 合约

  • Timelock 合约

  • Fireblocks

它们是按网络定义的,并在整个 Defender 中用于执行交易,例如在 部署 向导、动作工作流 中。

管理审批流程

通知

当触发时,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 将指导用户完成必要的步骤。

强制执行 2FA

作为管理员用户,您可以为团队中的所有用户强制执行 2FA。 为此,请转到 团队成员 部分下的设置,然后单击 强制执行 2FA 开关。 这将要求所有用户在再次访问 Defender 之前设置 2FA。

注意:如果您有仍在访问 Defender 1.0 的用户,他们也必须设置 2FA。

密码重置

要更改 Defender 的用户密码,请按照以下步骤操作。

  • 如果您已登录,请打开右上角的菜单并单击 Sign out 退出。 您将被重定向到登陆页面。

  • 从 Defender 登陆页面,单击 Sign in。 您将被重定向到登录页面。

  • 从 Defender 登录页面,单击 Forgot your password?

  • 输入您的电子邮件地址,然后单击 Reset my password。 您将很快收到一封电子邮件,其中包含有关如何继续密码重置过程的说明。

密钥

密钥是区分大小写的字符串键值对,可以使用 event.secrets 对象从任何动作访问。 您可以定义任意数量的密钥供您的动作使用。 密钥在您的所有动作中共享,而不是特定于单个动作。

exports.handler = async function(event) {
  const { mySecret, anApiKey } = event.secrets;
}

密钥经过加密并存储在安全保险库中,仅在您的动作运行时才解密以进行注入。 写入密钥后,只能从用户界面删除或覆盖密钥,但不能读取密钥。

警告:动作可能会记录密钥的值,从而意外泄漏密钥。

Defender 密钥

您可以使用密钥来存储安全密钥以访问外部 API,或您不想在动作代码中公开的任何其他密钥值。

注意:虽然您也可以使用动作密钥来存储用于签署消息或交易的私钥,但我们建议您改用 [Relayers]。 中继器的签名操作在安全保险库中执行,与在动作运行中加载私钥并在那里进行签名相比,提供了更高的安全性。

API 密钥

在 API 密钥中,您可以管理客户端用于访问您的帐户的 Defender API 的密钥,如果您使用 Fireblocks 进行审批,还可以输入集成 API 密钥。 请注意,中继器有自己的 API 密钥,这些密钥与这些 API 密钥分开,并且直接在“管理中继器”中配置。

要添加 API 密钥,请单击“创建 API 密钥”按钮。

管理创建团队 API 密钥

选择您想要与 API 密钥关联的 API 功能:

  • 管理交易提案和合约 用于创建和发布操作以及管理合约。

  • 管理中继器 用于创建中继器和更改中继器策略。

  • 管理自动操作 用于创建和修改自动操作及其配置。

  • 管理监视器 用于创建和管理监视器及其配置。

可以选择性地选择 API 密钥到期时间。 您可以以分钟、小时或天为单位指定到期时间。

创建 API 密钥后,Defender 将向您显示详细信息。

管理团队 API 密钥

请务必复制密钥,访问时需要它,并且在关闭表单后将无法再次访问。

自定义网络

分叉网络

在“分叉网络”部分,您可以管理和监督您的分叉网络。 这些网络使您可以测试安全设置的效率,并提供在测试网和主网上启动之前识别和修复任何问题的重要机会。

管理分叉网络

通过单击“创建分叉网络”按钮来完成分叉网络的设置。 此操作会提示您为分叉网络提供一个名称,并选择您打算从中分叉的基础网络。 您可以选择从 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 或符号。 若要进行更改,您必须删除并重新创建私有网络。 删除私有网络也将删除 所有 关联的资源,包括审批流程、中继器、合约、地址簿条目等。

局限性

虽然自定义网络是集成 EVM 兼容网络到 Defender 或测试独特网络条件的好方法,但它们也存在一些值得注意的缺点,使其与官方支持的 Defender 网络有所不同:

  • RPC 瓶颈:自定义网络只能有一个 RPC 提供商,这在流量高峰期会成为单点故障。

  • 有限的可靠性:自定义网络可能会返回 Defender 不会处理的非标准或意外响应。 因此,某些服务可能无法按预期运行。

  • 较慢的交易处理速度:自定义网络每次交易请求都需要更多的 RPC 调用,从而导致交易处理速度较慢。

警告:仅建议对于具有高度可靠的 RPC 端点的自定义网络使用高交易量。

高级

在“高级”选项卡中,您可以从当前 Defender 帐户配置导出 serverless 配置文件。

这可用于通过代码配置为您的帐户设置自动资源管理。 此外,在“高级”中,您可以删除您的 Defender 帐户。 此操作不可逆转,所有 Defender 配置都将被删除,并且所有产品功能都将被取消和删除。