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

百度云_服务器安全维护_返现

小七 141 0

为Apache Spark作业管理和保护Databricks中的凭证

由于apachespark将计算和存储分开,所以每个Spark作业都需要一组凭据来连接到不同的数据源。如果没有严格的管理,将这些凭证清晰地存储可能会带来安全风险。为了降低这种风险,Databricks使得通过DBFS或使用IAM角色的访问密钥连接到S3变得简单和安全。对于所有其他数据源(Kafka、Cassandra、RDBMS等),必须通过其他方式管理敏感凭证。这篇博客文章将描述如何利用IAM角色映射到任何一组凭据。它将利用AWS的密钥管理服务(KMS)对凭证进行加密和解密,这样您的凭证就不会在静止或飞行时处于清晰状态。当使用IAM角色创建Databricks集群时,它将拥有从S3 bucket读取加密凭证和使用KMS密钥解密密文的特权。在本例中,ETL作业将使用JDBC从关系数据库读取数据并写入S3存储桶。它使用一个IAM角色prod etl,该角色允许从S3 bucket prod etl config读取生产etl作业的配置,使用prod data credentials KMS密钥解密密文,并将数据写入prod datamart S3 bucket。类似地,开发和测试环境也可以有等效的bucket、角色和键。Databricks允许您限制哪些用户可以使用哪些IAM角色。作业配置文件此ETL作业的配置位于S3存储桶中,类似于以下内容:{"Name":"阶段订单数据集市","连接":[{"Name":"订单数据库","Type":"jdbc","属性":{"database":"订单","主机名":"订单-群集.cluster-CMEIFWAK1公司美国-西部2号。rds.amazonaws.com网站","username":"etluser","密码。加密": 该文介绍了一种新型的无刷无刷直流无刷直流电励磁系统,该系统是一种新型的、新型的、新型的、新型的、新型的、新型的、新型的、新型的、新型的、新型的、相结合的线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路、线路0MJCYMMZMI1KYJC5LTRIOTITOWRIOC01 JY2RIZJHNHJKAPWebAQB4NOKLYXQ\/N2xFyhCyrix公司两人合二二二两组,一组是新的,另一组是QQPa48AAAB+MHWCGCSQGSIB3DQHBQBVMG0AQAAAAYJKZQBMB四是一个有两个世界的一组。一个是一个有两个世界的一个世界,另一个是第三个世界,另一个是第三个世界,另一个是第三个世界,另一个是第三个世界是第二个世界,第二个是第二个是第二个是第二个是第三个是一个是一个是一个是一个是一个是一个是一个是一个是一个是一个是一个是两个是两个是一个是一个是一个是一个是一个是一个是一个是一个\/\/aaaaa ccptpeaqlnjaqufuqaaav8bubf4r\/YTpJ08etxFXYM+c4m7HO9\/iJBoe0AZjBkAjBeWc2i9N\/LUO\/hmbn5ojxqbxozbibja7es5fslnsizejupsjku3pvxbcjsapdnximacmfm2uqetaz1h0bi+i9ft70ehovrx51jpgzolfktpaqrw41fr3gn7pquxpsfdfdoha==","密码.encrypted.keyARN": "arn:aws公司:kms:美国西部-2:997819012307:键\/42722c32-db79-4b92-9db8-581ccdbf8a69","port":"3306","driver":"mysql"}},{"Name":"订单数据集市","Type":"文件","属性":{"path":"s3a:\/\/prod datamart\/orders"}}]}配置的每一部分都是明文形式,除了用加密密文表示的密码。运行ETL作业时,它接受配置文件的路径作为输入:s3a://prod etl配置/StageOrdersDataMart.json如果此配置要连接到测试数据源,则会引用与测试环境相对应的配置文件。ETL笔记本ETL作业的笔记本执行以下操作:接收作业参数(配置文件和作业名称)下载配置文件检查配置是否有效将文件解析为JobConfig对象使用该JobConfig对象对DataFrameReader和DataFrameWriter进行解密并应用凭据密文解密实际的解密发生在私有方法的Connection类中。API接受DataFrameReader或DataFrameWriter对象,并将解密的值作为选项应用于它们。在任何时候都不会打印或记录解密后的值。这个类可以从一个受限制的源代码存储库构建到它自己的库中,这样就只允许少数开发人员修改它。此笔记本显示连接代码。这段代码的灵感来自AWS Encryption sdkforjava示例代码。您_可能_需要_试验_加密_上下文_以_适合_您_的_特定_用例_ 。_为了使加密SDK正常工作,您需要从maven创建并附加以下库。AWS加密SDK库BouncyCastle提供程序库加密必须使用AWS Encryption SDK对明文密码进行加密,然后才能将其包含在配置文件中。连接类中包含了一个这样做的方法。这可以在Databricks笔记本中完成。在配置文件被创建并写入S3之后,要创建的笔记本可以删除。AWS设置创建IAM角色prod etl将策略添加到IAM角色以将列表、获取、放置、删除添加到以下S3存储桶:*拼花地板数据集市桶:生产数据集市*ETL配置存储桶:prod ETL config三。使用Databricks注册IAM角色4通过AWS控制台创建客户主密钥(CMK)*在单击"创建密钥"之前,请务必选择正确的区域*添加prod etl IAM角色作为密钥用户*记录CMK的ARN,因为您需要它来加密您的凭证结论这篇博客文章说明了如何利用IAM角色和KMS密钥加密静态敏感凭证并在内存中解密它们。这提供了一种利用Databricks中的访问控制的方法,该方法限制哪些用户可以使用哪些IAM角色创建集群。这可以防止敏感凭证在笔记本或源代码存储库中被清除。最后,这个方案提供了一种在开发、测试和生产环境配置之间进行清晰分离的方法。在你的数据库里试试这三个笔记本。如果你没有Databricks帐户,今天就去买一个。ETL的凭据作业配置的凭据保存作业配置的凭据免费试用Databricks。今天就开始吧