本文档介绍了 OpenZeppelin Defender 平台中的 Settings 模块,包括审批流程管理、通知渠道配置(Slack、Email、Discord、Telegram等)、团队成员管理(角色、2FA)、密钥管理、API 密钥管理、自定义网络(Forked 和 Private)以及一些高级设置(导出配置和删除账户)。该模块用于 Defender 的配置和管理,保障链上交易的安全。
管理与 Defender 配置相关的所有内容,包括通知、地址、团队成员、API 密钥等。
审批流程充当链上执行交易的包装器。它们目前包装以下内容:
多重签名 (Multisigs)
EOA(Defender 外部)
中继器 (Relayers)(Defender 内部)
Governor 合约
Timelock 合约
Fireblocks
它们是按网络定义的,并在整个 Defender 中用于执行交易,例如在 部署 (Deploy) 向导、操作 (Actions) 和 工作流 (Workflows) 中。
当被触发时,Defender 可以将通知传递到一个或多个已配置的通知渠道,这些渠道可以包括 Slack、电子邮件、Telegram、Discord、Datadog、PagerDuty、OpsGenie 或自定义 Webhook。这些通知渠道可以在监视器、操作和工作流中使用。
请参阅 Slack webhook 文档 以配置 Slack webhook。配置完 Slack 后,在 Defender 中输入 webhook URL。
别名 (Alias) 是此 Slack 配置的名称。例如,你可以将其命名为通道名称。
Webhook URL 是来自你的 Slack 管理控制台的 URL,用于通知。
别名 (Alias) 是此电子邮件列表的名称。(例如,开发者)
电子邮件 (Emails) 是你希望通知的电子邮件列表。这些可以是逗号或分号分隔的。
请参阅 Discord webhook 文档 以配置你的 Discord 频道的 webhook。
别名 (Alias) 是此 Discord 配置的名称。
Webhook URL 是来自你的 Discord 频道的 URL,用于通知。
请参阅 Telegram 机器人文档 以使用 BotFather 配置 Telegram 机器人。
必须将 Telegram 机器人添加到你的频道,并具有发布消息的权限。 |
要查找频道的 Chat ID,请执行以下 curl(使用你的机器人Token值)并提取聊天的 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, // <--- 这是你的 chat ID\
"title": "Monitor Test",\
"type": "channel"\
},\
"date": 1612809138,\
"text": "test"\
}\
}\
]
}
别名 (Alias) 是此 Telegram 配置的名称。
Chat ID 是 Telegram Chat 的 ID。
Bot Token 是你在创建 Telegram 机器人时从 BotFather 收到的Token。
Datadog 配置允许 Defender 将自定义指标转发到你的 Datadog 帐户。有关自定义指标的更多信息,请参阅 Datadog 指标文档
我们发送的指标是一个 COUNT 指标,它表示触发通知的交易数量。我们不发送零,因此如果没有触发器,则应预期缺少数据。对于每个指标,我们发送两个标签:network
(rinkeby, mainnet, …) 以及当监视器触发通知时 monitor
(监视器的名称)
新的自定义指标可能需要几分钟才能显示在 Datadog 控制台中 |
别名 (Alias) 是此 Datadog 配置的名称。
Api Key 是来自你的 Datadog 管理的 API 密钥。
Metric Prefix 将位于所有指标名称之前。例如,如果前缀为 openzeppelin.
,则监视器将发送一个名为 openzeppelin.monitor
的指标。
要配置自定义 webhook 通知渠道,你只需提供 webhook 端点 URL 和用于显示的别名。
别名 (Alias) 是此 webhook 端点的名称。
Webhook URL 是将发送通知的 URL。
为了避免在大量匹配项下以许多并发请求压垮接收 webhook,Defender 发送一个 JSON 对象,该对象具有一个 events
,其中包含一个数组,其中包含在一个块中找到的所有匹配事件。
{
events: [...] // 参见事件 Schema 信息,位于 Action 或 Monitor 文档中
}
有关事件 schema 的更多信息,请参阅 监视器 (Monitor) 或 操作 (Actions)。
请参阅 OpsGenie 集成文档 以配置可以创建警报的 OpsGenie API 集成。
API 密钥 (API Key) 集成 API 密钥,可以在集成设置中找到
实例位置 (Instance Location) OpsGenie 实例服务器所在的位置
响应者 (Responders) 将警报路由到发送通知的团队、用户、升级和计划。type 字段对于每个项目都是强制性的,可能的值为 team、user、escalation 和 schedule。如果 API 密钥属于团队集成,则此字段将被所有者团队覆盖。应提供每个响应者的 id 或 name。你可以参考下面的示例值(50 个团队、用户、升级或计划)
可见对象 (Visible To) 警报将对哪些团队和用户可见,而无需发送任何通知。type 字段对于每个项目都是强制性的,可能的值为 team 和 user。除了 type 字段之外,还应为团队提供 id 或 name,为用户提供 id 或 username。请注意:警报默认情况下将对 responders 字段中指定的团队可见,因此无需在 visibleTo 字段中重新指定它们。你可以参考下面的示例值(总共 50 个团队或用户)
别名 (Alias) 警报的客户端定义标识符,它也是 警报去重 (Alert De-Duplication) 的关键元素(最多 512 个字符)
优先级 (Priority) 警报的优先级级别。可能的值为 P1、P2、P3、P4 和 P5。默认值为 P3
实体 (Entity) 警报的实体字段,通常用于指定警报与哪个域相关(最多 512 个字符)
操作 (Actions) 警报可用的自定义操作(10 x 50 个字符)
注意 (Note) 创建警报时将添加的额外说明(最多 25000 个字符)
详细信息 (Details) 键值对映射,用作警报的自定义属性(最多 8000 个字符)
标签 (Tags) 警报的标签(20 x 50 个字符)
请参阅 PagerDuty 集成文档 以配置可以创建更改和警报事件的 PagerDuty API v2 集成。
事件类型 (Event Type) PagerDuty 分类的事件类型(alert 或 change)
路由密钥 (Routing Key) 服务或全局规则集上的集成的集成密钥(32 个字符)
事件操作 (Event Action) 事件的操作类型(trigger、acknowledge 或 resolve)
Dedup 密钥 (Dedup Key) 用于关联触发器和解决的去重密钥(最多 255 个字符)
严重性 (Severity) 事件描述的状态相对于受影响系统的感知严重性(critical、error、warning 或 info)
组件 (Component) 负责该事件的源计算机的组件
组 (Group) 服务的组件的逻辑分组
类 (Class) 事件的类/类型
自定义_详细信息 (Custom_detail) 键值对的映射,用于提供有关事件和受影响系统的其他详细信息
你可以在加粗 团队成员 加粗部分邀请、管理访问权限和删除 Defender 帐户中的团队成员。
如果你想将用户添加到你的团队,请确保从加粗 团队成员 加粗部分邀请他们。如果他们直接注册到应用程序,他们将被添加到他们自己的新团队中。如果发生这种情况,请考虑让你的队友删除他们的帐户,以便你可以重新发送你的团队的邀请。或者,他们可以使用其他电子邮件地址加入你的团队。 |
每个团队成员都有一个分配的角色。你可以通过基于角色的访问控制系统管理访问、修改和执行所有 Defender 产品的授权。
当你邀请新用户加入你的团队时,你将为他们分配一个角色,从而确定他们的访问权限。
要创建新角色,请单击加粗 创建角色 加粗按钮。系统将要求你输入角色名称和描述,并指定该角色中的用户将获得的每个产品的访问级别。你还可以指定该角色将授予访问权限的管理权限:管理用户和角色、管理团队 API 密钥、管理 Fireblocks API 密钥、管理地址簿以及配置日志转发。
保存后,新角色将可用于分配给新的或现有的团队成员。当然,如果将来你决定修改给定角色的访问级别,那么所有拥有该角色的用户都将因此而看到他们的访问级别发生变化。
授予管理权限时请务必小心。有权修改角色但无权访问任何其他组件的用户可以修改自己的角色以授予他们访问应用程序任何其他部分的权限。 |
我们强烈建议你启用 2FA 以提高你的 Defender 帐户安全性。作为第二种身份验证因素,Defender 依赖于 基于时间的一次性密码标准 (TOTP)。要在 Defender 上启用 2FA,你需要一个符合 TOTP 的应用程序,例如 Authy 或 Google Authenticator。每个用户都可以在他们的个人资料下启用 2FA,可以从右上角的用户菜单访问。 Defender 将指导用户完成必要的步骤。
作为管理员用户,你可以为团队中的所有用户强制执行 2FA。为此,请转到加粗 团队成员 加粗部分下的设置,然后单击加粗 强制执行 2FA 加粗切换。这将要求所有用户先设置 2FA 才能再次访问 Defender。
如果你有仍在访问 Defender 1.0 的用户,他们也必须设置 2FA。 |
要更改你的 Defender 用户密码,请按照以下步骤操作。
如果你已登录,请通过打开右上角菜单并单击加粗 退出登录 加粗 注销。你将被重定向到登录页面。
从 Defender 登录页面,单击加粗 登录 加粗。你将被重定向到登录页面。
从 Defender 登录页面,单击加粗 忘记密码? 加粗。
输入你的电子邮件地址,然后单击加粗 重置我的密码 加粗。你将很快收到一封电子邮件,其中包含有关如何继续密码重置过程的说明。
密钥 (Secrets) 是字符串的键值区分大小写对,可以使用 event.secrets
对象从任何 Action 访问。 你可以根据 Action 使用的需要定义任意数量的 secret。 Secret 在你的所有 Action 之间共享,而不是特定于单个 Action。
exports.handler = async function(event) {
const { mySecret, anApiKey } = event.secrets;
}
Secret 被加密并存储在安全 vault 中,仅在你的 action 运行时才解密以进行注入。 写入后,只能从用户界面删除或覆盖 secret,但不能读取。
Action 可能会记录 secret 的值,从而意外泄漏它。 |
你可以使用 secret 来存储安全密钥以访问外部 API,或你不想在 Action 代码中公开的任何其他 secret 值。
虽然你也可以使用 action secret 来存储用于对消息或交易进行签名的私钥,但我们建议你改用 [Relayers]。Relayers 的签名操作在安全 vault 中执行,与在 action 运行中加载私钥并在那里签名相比,提供了更高的安全性。 |
在 API 密钥中,你可以管理客户端用于访问你帐户的 Defender API 的密钥,如果你使用 Fireblocks 进行审批,还可以输入集成 API 密钥。 请注意,中继器 (Relayers) 拥有自己的 API 密钥,这些密钥与这些 API 密钥分开,并且直接在管理中继器 (Manage Relayers) 中配置。
要添加 API 密钥,请单击创建 API 密钥按钮。
选择你要与 API 密钥关联的 API 功能:
管理事务提案和合约 (Manage Transaciton Proposals and Contract) 用于创建和发布操作以及管理合约。
管理中继器 (Manage Relayers) 用于创建中继器和更改中继器策略。
管理自动操作 (Manage Automatic Actions) 用于创建和修改自动操作及其配置。
管理监视器 (Manage Monitors) 用于创建和管理监视器及其配置。
(可选)选择 API 密钥过期时间。 你可以指定过期时间,以分钟、小时或天为单位。
创建 API 密钥后,Defender 将向你显示详细信息。
请务必复制 secret 密钥,访问时需要它,并且在关闭表单后将无法再次访问。
在“分叉网络”部分中,你可以管理和监督你的分叉网络。 这些网络让你可以测试你的安全设置的效率,并提供一个重要的机会来识别和修复任何问题,然后再在测试网和主网上启动。
单击“创建分叉网络”按钮即可设置分叉网络。 此操作会提示你为分叉网络提供一个名称,并选择你打算从中分叉的基础网络。 你可以从 Defender 支持的任何网络中进行分叉选择。 网络的货币符号将根据你选择的网络自动填充。 此外,你需要输入分叉网络的 RPC URL,如果需要访问,还可以选择输入 API 密钥。
为了获得更好的用户体验,你还可以选择包括区块浏览器 URL。
创建后,可以访问该网络以在任何需要网络选择的 Defender 模块中使用。 这在执行诸如建立审批流程、配置中继器或部署合约的任务时特别有价值。
创建分叉网络后,你无法编辑其名称或 RPC URL。 如果你需要更改这些设置,你将需要删除并重新创建分叉网络。 删除分叉网络后,所有 相关资源也将被删除。 这包括审批流程、中继器、合约、地址簿条目等。 |
导航到“私有网络”部分,以有效地管理和监督你的私有网络。 这些网络建立了一个受限的和受控的环境,专门用于测试和验证网络配置。 这个受控空间使用户能够在将配置部署到生产环境之前识别和解决潜在问题,从而提供一个安全的场所来隔离评估系统功能和安全措施。
要设置私有网络,只需单击“创建私有网络”按钮。 此操作会提示你为私有网络定义名称,并为你的网络选择货币符号 ("ETH")。 此外,请提供 RPC URL,如果访问需要,还可以选择提供 API 密钥。
私有网络的链 ID 不得与 [官方支持的 Defender 网络] 的链 ID 冲突。 |
要获得增强的用户体验,请通过包括区块浏览器 URL、Safe 合约部署地址和子图 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 中激活此功能。 你可以在 此处 找到访问控制子图的示例配置。
创建后,该网络可用于任何需要网络选择的 Defender 模块中。 这在执行诸如建立审批流程、配置中继器或部署合约的任务时被证明非常有价值。
创建私有网络后,你无法编辑其名称、RPC URL 或符号。 要进行更改,你必须删除并重新创建私有网络。 删除私有网络也会删除 所有 相关资源,包括审批流程、中继器、合约、地址簿条目等。 |
虽然自定义网络是集成 EVM 兼容网络到 Defender 或测试独特网络条件的好方法,但它们存在一些显着的缺点,使它们与官方支持的 Defender 网络有所不同:
RPC 瓶颈: 自定义网络只能有一个 RPC 提供程序,这会在高流量期间成为单点故障。
有限的可靠性: 自定义网络可能会返回非标准或意外的响应,Defender 将不会处理这些响应。 因此,某些服务的行为可能与预期不符。
较慢的交易处理: 自定义网络对每个交易请求都需要更多的 RPC 调用,从而导致较慢的交易处理。
仅建议对具有高度可靠的 RPC 端点的自定义网络进行高交易量操作。 |
在高级选项卡中,你可以从当前配置中导出无服务器配置文件以用于你的 Defender 帐户。
这可用于使用配置即代码设置帐户的自动化资源管理。 此外,在“高级”中,你可以删除你的 Defender 帐户。 此操作不可逆转,所有 Defender 配置都将被删除,并且所有产品功能都将被取消和删除。
- 原文链接: docs.openzeppelin.com/de...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!