跳到主要内容
公司博客上

介绍Databricks AWS IAM凭据直通

分享这篇文章

随着越来越多的分析转移到云端,客户面临着如何控制哪些用户可以访问哪些数据的挑战。像AWS这样的云提供商为身份和访问管理(IAM)提供了一组丰富的功能,如IAM用户、角色和策略。这些功能允许客户安全地管理对其敏感数据的访问。

身份和访问管理在云分析中的挑战

我们看到许多AWS客户都在尝试使用我的角色IAM实例配置文件或者使用硬编码的IAM凭证。客户使用策略来控制对S3或其他AWS资源(如Kinesis、SQS等)上数据的访问。然后,它们使用实例配置文件将IAM角色信息传递给EC2实例。这允许他们在启动时将单个数据访问策略与EC2实例关联起来。

然而,这些选择存在一些挑战和局限性:

  1. EC2实例只能分配一个实例配置文件。这要求客户运行不同的EC2实例,每个实例具有不同的角色和访问控制,以访问多个数据集,从而增加了复杂性和成本
  2. 无论是使用实例配置文件还是硬编码的IAM凭证,EC2实例上的用户在访问资源时都共享相同的身份,因此用户级访问控制是不可能的,并且没有审计跟踪,可以记录来自EC2实例的哪个用户访问了哪些内容,使用云原生日志(如Cloud trail)。
  3. 实例概要文件或IAM凭证都不一定映射到企业身份管理系统(如LDAP或Active Directory组)中的访问策略,这需要跨不同系统管理一组新的权限

为了解决这些限制,我们看到一些客户转向代理访问云存储(如S3)的遗留或非云原生工具。这些工具中的许多在设计时并没有考虑到云存储,在某些情况下可能需要对Apache Spark进行自定义扩展,以支持有限的格式或较差的性能。为了管理一组新的服务和权利,这给客户带来了额外的操作负担,并且否定了直接使用S3的可伸缩性、低成本和低维护。对于Databricks客户,这些工具也可能影响我们在Databricks运行时中提供的可用性和特性,例如DBIOδ

当我们开始设计解决方案时,我们的首要任务是集成AWS本地提供的身份和访问服务。特别是,我们的重点是杠杆带有SAML单点登录(SSO)的AWS身份联合.考虑到Databricks已经支持SAML SSO,这是让客户在其身份提供程序(IdP)中集中数据访问并将这些权利直接传递给Databricks集群上运行的代码的最无缝的选择。

在其身份提供程序内集中数据访问

  1. 首先,客户在其IdP和AWS帐户之间配置信任关系,以便IdP控制用户可以承担哪些角色
  2. 用户通过SAML单点登录Databricks,角色的权限由IdP传递
  3. Databricks调用AWS安全令牌服务(STS),并通过传递SAML响应和获取临时令牌来承担用户的角色
  4. 当用户从Databricks集群访问S3时,Databricks运行时使用临时令牌让用户自动安全地执行访问

IAM凭据通过Databricks

为了使用IAM Credential Passthrough,客户首先启用IdP和AWS帐户之间所需的集成,并且必须为Databricks配置SAML SSO。其余部分由IdP和Databricks直接管理,例如用户有权使用哪些角色或从AWS获取临时令牌。

为了使用联邦角色,可以使用一个名为“凭据直通”的新集群配置。

高并发集群上的直通可以安全地支持具有不同凭据的多个用户,运行Python和SQL。使用这些语言,我们可以在Java虚拟机(Spark执行的地方)之外的一个隔离的、低特权的进程中运行用户代码。对于需要完全控制环境的Scala、R或更高级的场景,还支持针对单个用户的标准集群。

一个专门针对联邦角色的新API可供用户使用DBUtils.首先,用户可以通过调用dbutils.credentials.showRoles列出他们可用的角色

为了承担特定的角色,用户调用bubutils .credentials. presumerole

从那时起,该笔记本中的任何S3访问都将使用所选角色。如果用户没有显式地承担角色,那么集群将使用列表中的第一个角色。

在某些情况下,用户可能需要分析需要不同角色的多个数据集。为了使角色选择透明,也可以使用桶安装:

dbutils.fs.mount (“s3a://-演示-数据-我们--1/数据/敏感的”,/mnt/敏感的-数据”,extra_configs{“fs.s3a。credentialsType”:“自定义”,“fs.s3a.credentialsType。customClass”:“com.databricks.backend.daemon.driver.aws.AwsCredentialContextTokenProvider”,“fs.s3a.stsAssumeRole。在攻击”:“在攻击:aws:我::997123456789:角色/敏感的-数据-角色”})
              dbutils.fs.mount (“s3a://-演示-数据-我们--1/数据/人力资源”,/mnt/人力资源-数据”,extra_configs{“fs.s3a。credentialsType”:“自定义”,“fs.s3a.credentialsType。customClass”:“com.databricks.backend.daemon.driver.aws.AwsCredentialContextTokenProvider”,“fs.s3a.stsAssumeRole。在攻击”:“在攻击:aws:我::997123456789:角色/人力资源-数据-角色”})

定义了桶挂载后,用户可以引用DBFS路径,而无需选择任何角色。不能承担挂载点指定的角色的用户将无法访问挂载点。这也允许跨需要不同角色的数据集连接,并为最终用户提供无缝体验。

由于联邦角色唯一地标识用户,因此它允许在S3上进行更强大的数据访问控制。一个例子是定义"主目录,允许用户将数据集保存到只有所有者可以访问的私有位置。即使用户可能共享相同的IAM角色甚至相同的集群,这也是可能的。

https://www.youtube.com/watch?v=pqi1PgqragM

由于假定的角色识别单个用户,现在只需通过Cloud Trail启用S3对象日志记录就可以进行审计。所有S3访问将通过Cloud Trail日志中的ARN直接绑定到用户。

结论

通过新的IAM Credential Passthrough功能,我们引入了更强大的数据访问控制,可以直接与您的企业身份平台集成。bob体育客户端下载它提供对数据的无缝访问控制,而不会失去S3的可靠性、可伸缩性和低成本。使用Databricks进程隔离,您仍然可以安全地共享Spark集群资源,而无需管理环境中的其他工具。您可以安全地让您的分析师,数据科学家和数据工程师使用Databricks统一分析平台的强大功能,同时保持您的数据安全!bob体育亚洲版bob体育客户端下载IAM Credential Passthrough目前正在私人预览中,如果您想了解更多信息,请联系您的Databricks代表。

免费试用Databricks
看到所有公司博客上的帖子