内容整理自官方开发文档

Sentry Relay 通过提供作为应用程序和 sentry.io 之间中间层的独立服务来提供企业级数据安全性。

Relay 专门设计用于:

  • 在将个人身份信息 (PII) 发送给 Sentry 之前,在中心位置对其进行清理
  • 在低带宽或连接受限的地区提高事件响应时间
  • 充当将所有 HTTP 通信限制为自定义域名的组织的不透明代理

托管模式(managed mode) 下的 Relay 仅适用于商业和企业计划https://sentry.io/pricing/

Relay 用例

Relay 旨在支持对个人身份信息 (PII) 的数据清理、响应时间和企业域管理具有特定企业安全要求的组织。

PII 数据清理

Sentry 已经在两个地方清除了 PII

  1. 在发送事件之前在 SDK
  2. 抵达 Sentry 的基础设施后

Relay 添加了第三个选项,可以在将数据发送到 Sentry 之前在一个中心位置清理数据。

要选择正确的数据清理位置,请考虑:

响应时间

Relay 对请求的响应非常快。在您的基础设施附近安装 Relay 将进一步缩短发送事件时的响应时间。这种安装方法可以特别减少偏远地区的往返时间。

企业域管理

默认情况下,SDK 需要使用指向 sentry.io 的数据源名称 (DSN) 进行配置。如果您需要将所有 HTTP 通信限制为自定义域名,Relay 可以充当不透明代理,将事件可靠地转发到 Sentry

入门

开始使用 Relay 就像使用默认设置一样简单。您还可以配置 Relay 以满足您组织的需求。查看配置选项页面以获取有关操作场景的详细讨论。

Relay server 称为 relay。从 GitHub Releases 下载二进制文件。DockerHub 上提供了一个 Docker 镜像。

初始化配置

要创建初始配置,请使用 Relayrelay 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 模式

目前,只有 proxystatic 模式可供所有组织使用。managed 模式下的 Relay 仅适用于商业和企业计划https://docs.sentry.io/product/relay/modes/

  • upstream 设置配置 Relay 将事件转发到的服务器(默认为主要的 sentry.io URL)。

  • porthost 设置配置 Relay 将侦听的 TCP 端口。这是 SDK 发送事件的地址。

  • tls 设置配置 TLS 支持(HTTPS 支持),当需要保护 SDKRelay 之间的通信时使用。

设置记录在 .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: ~

配置在配置选项中有完整记录。

创建凭证

不适用于 proxystatic 模式。

除了 config.ymlinit 命令还创建了一个凭证文件 credentials.json,它位于同一个 .relay 目录中。此文件包含 Relay 用于与上游服务器进行身份验证的公钥和私钥。

因此,必须保护此文件不被未经授权的实体修改或查看。

典型的凭据文件类似于此示例:

{
"secret_key": "5gkTAfwOrJ0lMy9aOAOmHKO1k6gd8ApYkAInmg5VfWk",
"public_key": "nDJI79SbEYH9-8NEJAI7ezrgYfoIPW3Bnkg00k1z0fA",
"id": "cde0d72e-0c4e-4550-a934-c1867d8a177c"
}

managed 模式下运行时,使用 public_key 向上游服务器注册您的 Relay

使用 Sentry 注册 Relay

不适用于 proxystatic 模式。

为了在 managed 模式下运行,RelaySentry 中的组织和项目设置中提取 PII 剥离、过滤和速率限制的配置。

由于这些设置可能包含敏感信息,因此它们的访问受到 Sentry 的限制并需要授权。

Sentry 注册 Relay

  1. 通过检查 credentials.json 文件或运行以下命令来复制公钥的内容:

    docker run --rm -it                \
    -v $(pwd)/config/:/work/.relay/ \
    getsentry/relay \
    credentials show
  2. 单击 Sentry 主导航中的 Settings,然后选择 Relays

  1. 点击 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,请将 DSNprotocolhost 更改为:


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)中。

系列

公众号:黑客下午茶

Sentry 企业级数据安全解决方案 - Relay 入门的更多相关文章

  1. Sentry 企业级数据安全解决方案 - Relay 运行模式

    内容整理自官方开发文档 Relay 可以在几种主要模式之一下运行,如果您正在配置 Relay server 而不是使用默认设置,那么事先了解这些模式至关重要. 模式存储在配置文件中,该文件包含 rel ...

  2. Sentry 企业级数据安全解决方案 - Relay 配置选项

    Relay 的配置记录在文件 .relay/config.yml 中.要更改此位置,请将 --config 选项传递给任何 Relay 命令: ❯ ./relay run --config /path ...

  3. Sentry 企业级数据安全解决方案 - Relay 监控 & 指标收集

    内容整理自官方文档 系列 Sentry 企业级数据安全解决方案 - Relay 入门 Sentry 企业级数据安全解决方案 - Relay 运行模式 Sentry 企业级数据安全解决方案 - Rela ...

  4. Sentry 企业级数据安全解决方案 - Relay 项目配置

    内容整理自官方文档 系列 Sentry 企业级数据安全解决方案 - Relay 入门 Sentry 企业级数据安全解决方案 - Relay 运行模式 Sentry 企业级数据安全解决方案 - Rela ...

  5. Sentry 企业级数据安全解决方案 - Relay 操作指南

    内容整理自官方文档 本篇回顾了我们在自托管外部使用 Relay 时的操作指南,即在您的硬件上运行的 Relay 并将事件转发到 sentry.io. 系列 Sentry 企业级数据安全解决方案 - R ...

  6. Sentry 企业级数据安全解决方案 - Relay PII 和数据清理

    本文档描述了一种我们希望最终对用户隐藏的配置格式.该页面仍然存在的唯一原因是当前 Relay 接受这种格式以替代常规数据清理设置. 以下文档探讨了 Relay 使用和执行的高级数据清理配置的语法和语义 ...

  7. 《Hadoop高级编程》之为Hadoop实现构建企业级安全解决方案

    本章内容提要 ●    理解企业级应用的安全顾虑 ●    理解Hadoop尚未为企业级应用提供的安全机制 ●    考察用于构建企业级安全解决方案的方法 第10章讨论了Hadoop安全性以及Hado ...

  8. Foreman 企业级配置管理解决方案

    Foreman 企业级配置管理解决方案 Foreman 企业级配置管理解决方案 笔记本 puppet foreman 构建运维体系 本文是构建运维体系的其中一个关键环节. 什么是 foreman Fo ...

  9. Oracle数据安全解决方案(1)——透明数据加密TDE

    Oracle数据安全解决方案(1)——透明数据加密TDE2009年09月23日 22:49:00 华仔爱技术 阅读数:7991原文地址: http://www.oracle.com/technolog ...

随机推荐

  1. lvm 创建扩展

    fdisk /dev/sdgnpt8ewpartprobepvcreate /dev/sdg1vgcreate multibank /dev/sdg1lvcreate -l +100%FREE -n ...

  2. go 代理

    环境变量中设置 #GO111MODULE=auto GOPROXY=https://goproxy.io 如果不第一次,则在命令行设置 go env -w GO111MODULE=on go env ...

  3. 3.7 rust 静态块

    Cargo.toml [dependencies] lazy_static = "1.4.0" main.rs #[macro_use] extern crate lazy_sta ...

  4. 【Java 8】函数式接口(二)—— 四大函数接口介绍

    前言 Java8中函数接口有很多,大概有几十个吧,具体究竟是多少我也数不清,所以一开始看的时候感觉一脸懵逼,不过其实根本没那么复杂,毕竟不应该也没必要把一个东西设计的很复杂. 几个单词 在学习了解之前 ...

  5. jstl中的foreach标签

    <%@ page import="java.util.ArrayList" %><%@ page import="java.util.List" ...

  6. Java后端高频知识点学习笔记1---Java基础

    Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...

  7. ios获取文件MD5值

    一般我们在使用http或者socket上传或者下载文件的时候,经常会在完成之后经行一次MD5值得校验(尤其是在断点续传的时候用的更 多),校验MD5值是为了防止在传输的过程当中丢包或者数据包被篡改,在 ...

  8. 使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller

    本文作者:黄鑫鑫 - Nocalhost 项目核心开发者 腾讯云 CODING DevOps 研发工程师.硕士毕业于中山大学数据科学与计算机学院,曾负责过平安云主机及国家超算中心容器云平台等相关业务, ...

  9. CF977C Less or Equal 题解

    Content 给定一个 \(n\) 个数的数列 \(a_1,a_2,a_3,...,a_n\) 和一个数 \(k\),试找出这样的一个数 \(x\),使得数列中有 \(k\) 个数小于等于 \(x\ ...

  10. JAVAWEB项目处理XSS漏洞攻击处理方案

    对页面传入的参数值进行过滤,过滤方法如下 public static String xssEncode(String s) { if (s == null || s.equals("&quo ...