如何在 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 中的所有挂载点?