如何在 Databricks 中管理 S3 挂载的权限

Posted

技术标签:

【中文标题】如何在 Databricks 中管理 S3 挂载的权限【英文标题】:How to manage permissions for S3 mounting in Databricks 【发布时间】:2017-07-20 07:38:24 【问题描述】:

在 Databricks 中,从 S3 读取通常是通过首先将 S3 存储桶安装到 DBFS 来完成的:

// Replace with your values
//
// NOTE: Set the access to this notebook appropriately to protect the security of your keys.
// Or you can delete this cell after you run the mount command below once successfully.

val AccessKey = "REPLACE_WITH_YOUR_ACCESS_KEY"
val SecretKey = "REPLACE_WITH_YOUR_SECRET_KEY"
val EncodedSecretKey = SecretKey.replace("/", "%2F")
val AwsBucketName = "REPLACE_WITH_YOUR_S3_BUCKET"
val MountName = "REPLACE_WITH_YOUR_MOUNT_NAME"

dbutils.fs.mount(s"s3a://$AccessKey:$EncodedSecretKey@$AwsBucketName", s"/mnt/$MountName")

安装 S3 存储桶后,所有用户都可以使用它。这可能会导致用户更改或删除他们不熟悉的数据时出现严重问题。

我想以只读模式挂载几个桶,不让任何人在没有特定权限的情况下堆放桶。

如何管理用户将 S3 存储桶挂载到 Databricks 中的权限?

【问题讨论】:

【参考方案1】:

最好使用 AWS IAM 角色来提供对存储桶的只读访问权限。基本步骤是:

    创建 IAM 角色。 指定有权担任该角色的用户。 创建为角色提供只读访问权限的存储桶策略。 使用 dbfs.fs.mount 命令将存储桶挂载到 Databricks 文件系统。 在创建 Databricks 集群时指定 IAM 角色。

【讨论】:

您能告诉我们如何使用角色进行挂载部分吗?我见过的例子都使用ACCESS_KEY/SECRET_KEY。对于第 5 步,我们可以动态执行吗?谢谢! 对于第 3 步,您需要什么权限?我想我尝试了“s3:GetObject”和“s3:ListBucket”,但这还不够

以上是关于如何在 Databricks 中管理 S3 挂载的权限的主要内容,如果未能解决你的问题,请参考以下文章

如何列出 Azure Databricks 中的所有挂载点?

将 AWS S3 连接到 Databricks PySpark

检查 Databricks 笔记本中是不是存在 S3 目录

如何在 Databricks 上将数据框导出为 excel

05 DataBricks遍历S3容器

检查 .NET 中是不是存在 azure databricks 挂载点