Java Agent 和安全性

本文为 OneAPM Java Agent 的安全注意事项概述。

目录:

概述

OneAPM Java Agent 监控 web 事务,收集事务信息并且将收集到的信息传递到 OneAPM 的用户界面。该 Agent 被包装成一个符合 JSR 163 规范的 Java Agent,并且通过修改 JVM 启动参数来激活 Agent。一旦被激活,该 Agent 会将自己插入到类加载流,并且使用字节码 instrumentation 方法(bci)加载类方法。

此项术允许 Agent 插入软件探头,来检测 web 应用的关键部分。关键部分包括像 servlets、struts 动作和 spring controllers 这样的请求处理程序,和对数据库、web 服务器的远程系统调用。

Agent 还会对来自 JVM 和 JMX 的数据进行调查。Agent 每分钟都会向 OneAPM 用户界面发送数据,用户可以登录在自己的用户界面,利用 OneAPM 发来的数据了解自己网站的是如何运行的。

环境

当 OneAPM Java Agent 连接到 OneAPM web 服务器时,Agent 会收集和发送有关您主机环境的信息。这些信息主要供我们的支持团队使用。Agent 收集信息包括:

  • OS 类型和版本
  • Java 版本
  • 所以系统属性
  • Oneapm.properites 文件内容

数据类型

Java Agent 收集几种不同类型的数据。

指标集合

这是追踪一个“normalized” url 请求次数和平均响应时间的计数器。例如,我们在一个 Spring controller URL 上的软件探头一分钟内可能会被调用 1000 次。这样的情况下,我们的指标集合会将 1000 记为调用次数,并且记录这所有 1000 次调用的响应时间的总和。追踪指标集合的内存数量是固定的,和调用次数无关,。指标集合在 OneAPM 用户界面展示时间序列图。并且 OneAPM 也可以数据库表格创建指标。

事务 traces

这是单个 web 请求的完整快照。只有在发生缓慢请求时,才会收集该数据。只有每分钟最慢的事务 trace 才会被发送到 OneAPM 用户界面。事务 traces 包括请求的详细信息,包括(可选) http 参数和 SQL。

错误信息

这里记录应用传回 web 浏览器的未捕获异常。它们可选择性地包含请求的 http 参数和未处理的异常。异常的一部分是来自托管应用的堆栈 trace。

请求参数采集

事务 traces 和错误信息都可选择性地记录 http 参数。Http 参数默认不包含敏感信息,例如信用卡卡号。并且,Agent 中有一个配置选项,可以选择采集不包含某些命名参数的 http 参数信息。

线程剖析

线程剖析抽样调查 Java 线程,并且报告堆栈 traces。该功能可以在 oneapm.properites 配置文件中关闭。线程配置文件不包含用户信息,仅包含源代码的类和方法信息。

对您应用的影响

Agent 的目的是将对您 web 应用的影响降到最低。Agent 所有的类都是在 oneapm 包的名称空间中,以免与您自己的类发生冲突。

Agent 使用 ASM bci 引擎插入软件探针,对此,OneAPM 已经测出对应用的启动时间影响低于 10%。对应用的响应时间的影响应该不会超过 5%,因为我们的工具只有在处理远程系统调用方法。内存影响大约在 5%。

安全性

通过 https,数据每分钟从 Agent 传递一次到 OneAPM 用户界面。信息格式是 JSON。该网站会返回一个 JSON 响应到 Agent,这样 Agent 可以知道数据是否已经接收成功或者是否出现错误。也可以在您的 DMZ 和我们网站之间使用一个标准的 HTTP 代理服务器。Agent 还有一个模式,在这个模式中,所有的通信可以都可以转储到一个日志文件(用于审计)。

不同账号的数据是独立的,所以用户只能看到他们自己的账号数据。

OneAPM 的默认 Agent 设置提供一个高水平的安全性,不抓取用户任何敏感数据,且保证数据不传送给第三方。并且,你可以修改 oneapm.properites 配置文件,选择性发送数据到 OneAPM。

 

还有其他问题? 提交请求

您还可以采取以下方式解决问题: