云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

游戏服务器_网站建设设计公司哪家好_12月免费

小七 141 0

基于熵的apachespark日志编校

这篇博文是我们一系列关于Databricks平台、基础设施管理、工具、监控和供应的内部工程博客的一部分。我们喜欢Databricks的日志。我们希望为用户提供访问apachespark日志的最佳体验。在Databricks上,Spark日志通过集群的内置Spark UI提供。Databricks还支持将集群日志传递到客户选择的目的地。虽然我们关心访问Spark日志的容易程度,但我们更关注日志记录中出现的数据安全问题。在这篇博文中,我们讨论了Spark日志的一个特定数据安全主题:在日志中编辑凭证。Apache Spark日志中的凭据Spark可以从各种数据源加载数据,用户可能需要提供访问数据的凭据。例如,Spark作业可以使用AWS访问和秘密访问密钥从S3读取数据集:spark.read.拼花地板("s3a://AKIAABCDEFGHIJKLMNOP:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn@测试桶/测试/路径")任何获得密钥副本的人都将具有对相应的AWS资源的相同访问权限。不幸的是,包含凭据的S3 URI可能以纯文本形式出现在Spark日志中:17/01/01 00:00:00信息文件扫描:读取文件路径:s3a://AKIAABCDEFGHIJKLMNOP:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn@测试桶/测试/路径,范围:。。。如果日志没有收到与凭据相同的保护级别,这可能会导致严重的数据安全问题。而且用户很难控制或观看Spark和第三方软件包记录的内容。为了增强数据安全性,Databricks在日志记录时,在日志消息写入磁盘之前,对Spark日志中的凭证进行编辑。例如,上面的日志消息将以密文形式出现在Databricks上:17/01/01 00:00:00信息文件扫描:读取文件路径:s3a://修订的_AWS_ACCESS_KEY:修订的_AWS_SECRET_ACCESS_KEY@test bucket/test/path,范围:。。。在下面的部分中,我们将讨论如何在日志记录时正确地识别凭据并对其进行编辑。尽管我们将使用AWS密钥作为本博客文章的示例,Databricks还编辑了其他类型的凭证。识别AWS认证在每条消息被记录之前,Databricks扫描整个字符串以识别任何可能的凭证,并对其进行修订。因为修订是在日志记录时完成的,所以我们不能承担过于复杂的可能会影响性能的编校过程。考虑到复杂性约束,Databricks的日志编校是基于正则表达式(regex)开发的。AWS访问密钥由以"AKIA"开头的20个字符的大写字母数字字符串组成,可由以下正则表达式捕获:(?在信息论中,熵或香农熵是每个消息(Wiki页面)中包含的信息的期望值。这个概念可以应用于字符串,以测量它们的随机性。我们期望随机生成的字符串比长度相同的有意义的单词具有更高的熵。在计算熵之后,我们设置一个阈值来决定是否对给定的字符串进行编校。该阈值基于AWS密钥和已知假阳性类型密钥的经验分布。一种误报是SHA-1hashcode,它有40个字符长,随机生成。但是,SHA-1哈希码只由十六进制数字组成。粗略地说,在相同的长度下,一个字符串的字符越明显,它的熵就越高。因此,SHA-1哈希码的熵通常要小于由base64字符集生成的AWS密钥的熵。通过比较由AWS密钥和SHA-1哈希码组成的两个数据集的熵的经验分布(见下图),发现这两个分布之间存在明显的差距,我们可以相应地选择一个阈值。用log4j记录时间编校Apache Spark作业在Databricks上生成的日志主要由日志服务log4j处理。Databricks定制log4j appender,例如控制台appender和rolling file appender,在日志字符串到达磁盘之前对其进行编校。请注意,编校不仅应用于普通消息,而且在引发异常时也应用于堆栈跟踪。一个有趣的教训是,由于日志记录在Databricks中非常普遍,我们需要最小化定制appender的依赖性。否则可能会出现循环依赖问题。使用IAM角色而不是密钥在这篇博文中,我们分享了我们在日志记录时编辑凭证的经验。在Databricks上,此安全功能会自动打开1。在Databricks之外,用户可以在Spark日志中实现所提到的提高数据安全性的方法。然而,最好的安全实践不是在日志记录时进行编校,而是在一开始就不使用凭证。Databricks鼓励用户使用IAM角色访问AWS资源。用户可以启动具有IAM角色的Databricks集群,这些角色向worker授予相应的权限。使用支持IAM的集群,用户不再需要在笔记本中嵌入AWS密钥来访问数据,因此密钥不会出现在日志中。类似地,在Databricks文件系统(DBFS)中,用户可以使用IAM角色挂载s3bucket。用户可以创建具有相应IAM角色的集群,从而无需密钥直接访问数据。看到了吗https://docs.databricks.com/user-guide/security.html了解详情↩免费试用Databricks。今天就开始吧