Thanks to the European Union’s General Data Protection Regulation (GDPR) and more recent privacy laws in various jurisdictions, many of us are familiar with personally identifiable information (PII)—any data that can be used to identify a specific individual, like Social Security numbers, mailing or email addresses, and phone numbers. But the proliferation of SaaS platforms and cloud computing, in general, has expanded the scope of PII considerably. From online banking to social media to online shopping, many using location-based services as middleware, every digital business needs to account for managing PII in some way.

许多新的遗物日志管理客户想知道他们可以做些什么来将PII脱离日志流。这篇文章概述了每个日志管理用户应该知道的四种方法,因为通常有法律和合同的原因,将PII与影响如何以及必须删除数据的日志流。

理解日志管道

将日志记录系统看作是一个管道,了解可以做出决策并采取行动阻止PII进入的所有点是有意义的。考虑从客户的数据中心(或控制域)开始的管道,并通过一个或多个转发器/处理器层移动,这些层也可以位于该客户的控制域。之后,数据将转移到New Relic的平台。

沿日志管道图的PII管理周期

以下部分涵盖日志管道中的特定域,您可以采用实际和精确的行动来控制包含PII的数据的传输,持久性和访问。

申请级治理

公司内部的开发实践可以确保某些信息永远不会以日志的形式发出,或者即使发出了,也不会进入集中的日志管道流。一个标准是开放Web应用程序安全项目OWASP,谁的记录指南明确地调用不当直接写入应用程序日志的内容:

  • 会话标识值(如果需要跟踪特定于会话的事件,可以考虑用散列值替换)
  • 访问令牌
  • 应用程序源代码
  • 敏感的个人数据和某些形式的PII,如健康信息、政府标识符、漏洞
  • 身份验证密码
  • 数据库连接字符串
  • 加密密钥和其他掌握秘密
  • 银行账户或付款持卡人数据
  • 允许存储比日志系统安全级别更高的数据
  • 商业敏感信息
  • 在有关司法管辖区非法收集的资料
  • 用户选择退出或不同意收集的信息,因为该同意从未给予或已过期

采用这样的标准,即使您需要进行一些例外,也是系统体系结构中的第一行管理PII。

您还可以通过使用L筛选它们来阻止敏感数据登录详细日志消息Og4j日志记录实用程序。这种方法有助于防止在源代码上记录CVV2代码等敏感信息。此代码示例展示了如何扩展Patternlayout.伪装信用卡号码。更完整的开发示例可以在网上找到,但是这个简短的例子就足够了。

public class CardNumberFilteringLayout extends PatternLayout {private static final String MASK = "$1++++++++++++";private static final Pattern Pattern = Pattern.compile("([0-9]{4})([0-9]{9,15})");@Override public String format(logingevent event) {if (event. getmessage () instanceof String) {String message = event. getrenderedmessage ();Matcher = PATTERN.matcher(消息);if (matcher.find()) {String maskedMessage = matcher.replaceAll(MASK);@SuppressWarnings({"ThrowableResultOfMethodCallIgnored"}) Throwable Throwable = event.getThrowableInformation() !.getThrowable event.getThrowableInformation()():空;logggingevent maskedEvent = new logggingevent (event. event)fqnOfCategoryClass Logger.getLogger (event.getLoggerName()),事件。timeStamp, event.getLevel(), maskedMessage, throwable);返回super.format (maskedEvent); } } return super.format(event); } }

转发层治理

转发层通常由应用层和日志存储后端解耦(在我们的情况下,遥测数据平台在New Relic One中),他的主要工作是将日志移出客户的安全域,转移到SaaS提供商的安全域(例如New Relic的)。许多组织在该层中实现了一组过滤器和转换,可用于实施监视和安全标准。例如,如果存在不需要的PII,那么在配置转发器(例如,在Fluentd.logstash.配置文件)。

在您的转发器中配置一个规则很简单,该规则使用filter_grep插件:

 @type grep  key message pattern /credit_card/ /排除> 

更有用的方法可能是在转发某个字段时简单地对其进行模糊处理,使用记录变压器操作符

 @type record_transformer  credit_card_number REDACTED  

这个例子将使用任何命名的字段credit_card_number并用文本替换它“编辑”。应该注意的是,组织应该以一种结构化的方式(如代码)管理这些过滤器和转换,在一个受代码审查和开发标准约束的配置管理系统中,该标准类似于在应用程序级治理的第一节中提到的那些标准。

预持久性SaaS后端治理

在这种情况下遥测数据平台后端提供了两个不同的工具来从日志数据中删除PII。事实上,你可以:

  1. 根据基于a删除完整的日志记录或选定的字段下降的过滤规则。这些删除过滤规则允许您删除整个日志记录或仅删除一个有问题的字段。在本例中,我们怀疑有一个名为credit_card_number这正在进入我们的一些日志中,所以我们设置了一个drop filter来删除它。

“创建一个新的删除过滤器”示例屏幕截图

您还可以使用带有过滤器的删除规则。例如,当您的消息字段包含更多数据时,您才能删除的数据而不是保留,您可以设置a神交解析模式将您关心的内容提取到单独的字段中,并同时使用删除原始消息字段的删除规则。

2.您还可以自动模糊匹配诸如信用卡号和社会保险号等常见模式的某些字段。

日志管理服务自动屏蔽出现在信用卡或社会保险号上的数字模式。它将所有整数(包括可以用作分隔符的空格和连字符)替换为一个Xs字符串。看起来像信用卡的数字(13到16位)被混淆为XXXXXXXXXXXXXXXX。例如:

  • 数字,如“4111-1111-1111-1111”
  • 带空格的数字,如4111 1111 1111 1111
  • 数字有13 (Visa)、14 (Diner 's Club)、15(美国运通卡、JCB)或16位数字(Visa、万事达卡、Discover、JCB),如411111111111111111

带有连字符的9位数字看起来像是社会安全号码,比如123-45-6789,被混淆为XXXXXXXXX。带空格的9位数字(如123 45 6789或不同模式的连字符,如12-345-67-89)不会自动混淆。

如果您需要选择退出自动模糊处理,请了解关于混淆规则

3.如果希望保留日志用于审计目的,可以创建警报条件,在日志包含安全信息时向您发出警告。这假设PII渗漏事件在我们的环境中是相对罕见的。下面是创建New Relic警告策略的示例。让我们把我们的警告命名为“隐私政策”。

“create alert policy”示例截图

接下来,我们将添加一个自定义NRQL.查找有一个名为Credit_Card的非空字段的日志的警报条件,并且该字段出现未更新(例如,不包含XS)。

“添加一个NRQL条件”示例截图

最后,我们将把新的警报策略与通知通道关联起来,让随时待命的人员知道它。

“选择通道”示例截图

后期持久性SaaS后期治理

新遗迹允许你管理遥测数据到一个硕士和子账户结构。例如,您可以提供高度特权的用户对父帐户和相关子帐户中的所有数据访问,同时给予另一个用户基于其角色和安全许可访问一个或多个子帐户。新的遗物帐户访问规则将保护您的帐户所有者配置的特权数据。此解决方案的上游效果是您需要将数据路由到日志流的转发层中的相关帐户,然后送到遥测数据平台。

新的遗物主/子帐户层次结构看起来像下面的例证,包括易于使用的工具,用于在您的帐户中设置这些关系。您可以根据您的内部公司访问策略路由内容,以适当的子帐户。访问一个或多个子帐户的用户将能够在这些帐户中查看数据,但无法在未添加它们的帐户上查看内容。通常,大多数特权用户都是给定的主帐户访问权限,并且可以在层次结构中查看所有数据。

主帐户层次结构示例

因此,您有它 - 在日志数据中管理PII的几种方法。现在你有这些技术,报名一个免费的New Relic账号,让他们付诸行动。

Jim Hagan是New Relic驻波士顿的企业解决方案顾问。他有20年的软件工程师经验,在地理空间技术和时间序列分析方面有专长。在加入New Relic之前,他曾在Wayfair从事高度分布式日志和度量平台的工作。查看贴子

有兴趣为New Relic博客写作吗?亚搏体育登入网送我们一个球场!