Sentry 企业级数据安全解决方案 - Relay 入门

内容整理自官方开发文档
Sentry Relay 通过提供作为应用程序和 sentry.io 之间中间层的独立服务来提供企业级数据安全性。
Relay 专门设计用于:
- 在将个人身份信息 (
PII) 发送给Sentry之前,在中心位置对其进行清理 - 在低带宽或连接受限的地区提高事件响应时间
- 充当将所有
HTTP通信限制为自定义域名的组织的不透明代理
托管模式(managed mode)下的Relay仅适用于商业和企业计划。https://sentry.io/pricing/
Relay 用例
Relay 旨在支持对个人身份信息 (PII) 的数据清理、响应时间和企业域管理具有特定企业安全要求的组织。
PII 数据清理
Sentry 已经在两个地方清除了 PII:
- 在发送事件之前在
SDK中 - 抵达
Sentry的基础设施后
Relay 添加了第三个选项,可以在将数据发送到 Sentry 之前在一个中心位置清理数据。
要选择正确的数据清理位置,请考虑:
-
如果您更喜欢在一个中心位置配置数据清理,您可以让
Sentry处理数据清理。到达后,Sentry立即应用服务器端清理并保证永远不会存储个人信息。 -
如果您无法将
PII发送到您的基础设施之外,但您仍希望在一个集中的位置配置数据清理,请配置您的 SDK 以将事件发送到Relay。Relay使用Sentry中配置的隐私设置,并在将数据转发到Sentry之前清理PII。 -
如果您必须执行严格的数据隐私要求,您可以将
SDK配置为使用before-sendhooks 清除 PII,从而防止在设备上收集数据。这可能需要您在应用程序中复制相同的逻辑,并可能影响性能。
响应时间
Relay 对请求的响应非常快。在您的基础设施附近安装 Relay 将进一步缩短发送事件时的响应时间。这种安装方法可以特别减少偏远地区的往返时间。
企业域管理
默认情况下,SDK 需要使用指向 sentry.io 的数据源名称 (DSN) 进行配置。如果您需要将所有 HTTP 通信限制为自定义域名,Relay 可以充当不透明代理,将事件可靠地转发到 Sentry。
入门
开始使用 Relay 就像使用默认设置一样简单。您还可以配置 Relay 以满足您组织的需求。查看配置选项页面以获取有关操作场景的详细讨论。
Relay server 称为
relay。从 GitHub Releases 下载二进制文件。DockerHub 上提供了一个 Docker 镜像。
初始化配置
要创建初始配置,请使用 Relay 的 relay config init 命令,
该命令将配置文件放在当前工作目录下的 .relay 文件夹中。
在
Docker中,使用Docker提供的标准机制提供配置目录,通过挂载 Docker volumes 或构建新容器并复制文件。
# 调整配置目录的权限
docker run --rm -it \
-v $(pwd)/config/:/work/.relay/ \
--entrypoint bash \
getsentry/relay \
-c 'chown -R relay:relay /work/.relay'
# 生成配置
docker run --rm -it \
-v $(pwd)/config/:/work/.relay/ \
getsentry/relay \
config init
选择默认配置以创建最小配置文件。
您可以通过选择 "create custom config" 并自定义这些参数来选择覆盖默认设置:
mode设置,用于配置Relay运行的主要模式。有关可用Relay模式的更多信息,请参阅 Relay 模式。
目前,只有
proxy和static模式可供所有组织使用。managed模式下的 Relay 仅适用于商业和企业计划。https://docs.sentry.io/product/relay/modes/
-
upstream设置配置Relay将事件转发到的服务器(默认为主要的sentry.ioURL)。 -
port和host设置配置Relay将侦听的TCP端口。这是SDK发送事件的地址。 -
tls设置配置TLS支持(HTTPS支持),当需要保护SDK和Relay之间的通信时使用。
设置记录在 .relay/config.yml 中。请注意,所有配置值都是可选的,并且默认为以下设置:
relay:
mode: managed
upstream: "https://sentry.io/"
host: 0.0.0.0
port: 3000
tls_port: ~
tls_identity_path: ~
tls_identity_password: ~
配置在配置选项中有完整记录。
创建凭证
不适用于
proxy或static模式。
除了 config.yml,init 命令还创建了一个凭证文件 credentials.json,它位于同一个 .relay 目录中。此文件包含 Relay 用于与上游服务器进行身份验证的公钥和私钥。
因此,必须保护此文件不被未经授权的实体修改或查看。
典型的凭据文件类似于此示例:
{
"secret_key": "5gkTAfwOrJ0lMy9aOAOmHKO1k6gd8ApYkAInmg5VfWk",
"public_key": "nDJI79SbEYH9-8NEJAI7ezrgYfoIPW3Bnkg00k1z0fA",
"id": "cde0d72e-0c4e-4550-a934-c1867d8a177c"
}
在 managed 模式下运行时,使用 public_key 向上游服务器注册您的 Relay。
使用 Sentry 注册 Relay
不适用于
proxy或static模式。
为了在 managed 模式下运行,Relay 从 Sentry 中的组织和项目设置中提取 PII 剥离、过滤和速率限制的配置。
由于这些设置可能包含敏感信息,因此它们的访问受到 Sentry 的限制并需要授权。
向 Sentry 注册 Relay:
-
通过检查
credentials.json文件或运行以下命令来复制公钥的内容:docker run --rm -it \ -v $(pwd)/config/:/work/.relay/ \ getsentry/relay \ credentials show -
单击
Sentry主导航中的Settings,然后选择Relays。

- 点击
New Relay Key添加密钥并保存:

此过程向 Sentry 注册 Relay,以便准备发送消息。请参阅配置选项以了解有关 Relay 配置选项的更多信息。
运行 Relay
在 Sentry 注册 Relay 后,它就可以运行了:
docker run --rm -it \
-v $(pwd)/config/:/work/.relay/ \
-p 3000:3000 \
getsentry/relay \
run
在默认配置下,Relay 发出类似于以下内容的日志输出:
INFO relay::setup > launching relay from config folder .relay
INFO relay::setup > relay mode: managed
INFO relay::setup > relay id: cde0d72e-0c4e-4550-a934-c1867d8a177c
INFO relay::setup > public key: nDJI79SbEYH9-8NEJAI7ezrgYfoIPW3Bnkg00k1z0fA
...
INFO relay_server::actors::upstream > relay successfully registered with upstream
有关如何配置 Relay 的日志记录的更多信息,请参阅 Logging 页面。
如果您移动了 config 文件夹(例如,出于安全原因),请使用 --config 选项指定位置:
docker run --rm -it \
-v $(pwd)/config/:/etc/relay/ \
-p 3000:3000 \
getsentry/relay \
run --config /etc/relay/
发送测试事件
一旦 Relay 运行并通过 Sentry 进行身份验证,将测试事件发送到您组织中的项目之一。
通过在 Settings > Projects > {YOUR_PROJECT_NAME} > Client Keys (DSN) 导航到您的项目设置来获取您的项目的 DSN,然后选择一个现有的 DSN,它看起来类似于:
https://12345abcdef10111213141516171819@o1.ingest.sentry.io/2345
接下来,替换部分 DSN 以匹配 Relay 可访问的地址。例如,如果 Relay 侦听 http://localhost:3000,请将 DSN 的 protocol 和 host 更改为:
http
://12345abcdef10111213141516171819@
localhost:3000
/2345
在您的 SDK 配置中使用新的 DSN。要对此进行测试,您可以使用 sentry-cli(安装说明)发送消息:
export SENTRY_DSN='http://12345abcdef10111213141516171819@127.0.0.1:3000/2345'
sentry-cli send-event -m 'A test event'
几秒钟后,该事件应出现在您项目的问题流(issues stream)中。
系列
- Docker Compose 部署与故障排除详解
- 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本
- 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps
- Sentry For React 完整接入详解
- Sentry For Vue 完整接入详解
- Sentry-CLI 使用详解
- Sentry Web 性能监控 - Web Vitals
- Sentry Web 性能监控 - Metrics
- Sentry Web 性能监控 - Trends
- Sentry Web 前端监控 - 最佳实践(官方教程)
- Sentry 后端监控 - 最佳实践(官方教程)
- Sentry 监控 - Discover 大数据查询分析引擎
- Sentry 监控 - Dashboards 数据可视化大屏
- Sentry 监控 - Environments 区分不同部署环境的事件数据
- Sentry 监控 - Security Policy 安全策略报告
- Sentry 监控 - Search 搜索查询实战
- Sentry 监控 - Alerts 告警
- Sentry 监控 - Distributed Tracing 分布式跟踪
- Sentry 监控 - 面向全栈开发人员的分布式跟踪 101 系列教程(一)
- Sentry 监控 - Snuba 数据中台架构简介(Kafka+Clickhouse)
- Sentry 监控 - Snuba 数据中台架构(Data Model 简介)
- Sentry 监控 - Snuba 数据中台架构(Query Processing 简介)
- Sentry 官方 JavaScript SDK 简介与调试指南
- Sentry 监控 - Snuba 数据中台架构(编写和测试 Snuba 查询)
- Sentry 监控 - Snuba 数据中台架构(SnQL 查询语言简介)
- Sentry 监控 - Snuba 数据中台本地开发环境配置实战
- Sentry 监控 - 私有 Docker Compose 部署与故障排除详解
- Sentry 开发者贡献指南 - 前端(ReactJS生态)
- Sentry 开发者贡献指南 - 后端服务(Python/Go/Rust/NodeJS)
- Sentry 开发者贡献指南 - 前端 React Hooks 与虫洞状态管理模式
- Sentry 开发者贡献指南 - SDK 开发(性能监控)
公众号:黑客下午茶

浙公网安备 33010602011771号