表创建失败与安全例外

学习做什么当表创建失败与安全例外。

写的亚当Pavlacka

去年发表在:2022年5月17日

问题

您试图使用一个集群创建一个表,表启用了acl,但出现以下错误:

错误的SQL语句:SecurityException:用户没有权限选择任何文件。

导致

这个错误发生在一个表ACL-enabled集群如果你不是管理员,您没有足够的权限创建一个表。

AWS

例如,在你的笔记本您尝试创建一个表位于S3使用镶花数据源:

% sql CREATE TABLE mytable使用镶花选项(PATH =“s3: / / my-root-bucket /文件夹/我的桌子)
删除

Azure

例如,在你的笔记本使用镶花您试图创建一个表数据源位于Azure Blob存储:

% sql使用镶花选项(创建表mytable路径= ' wasbs: / / my-container@my-storage-account.blob.core.windows.net/my-table')
删除

解决方案

你应该问你的管理员授予您访问blob存储文件系统,使用以下选项。如果管理员不能授予您访问数据对象,你必须问管理员表给你。

  • 如果你想使用一个cta(创建表,选择)语句来创建表,管理员应该授予你选择文件系统上的特权:
    %的sql选择任何文件授予“user1”
  • 例子商品交易顾问基金声明:

AWS

% sql CREATE TABLE mytable从parquet. SELECT *的s3: / / my-root-bucket /文件夹/我的桌子
删除

Azure

% sql创建表mytable SELECT * FROM parquet. wasbs: / / my-container@my-storage-account.blob.core.windows.net/my-table`
删除
  • 如果你想使用一个CTOP(创建表选项路径)声明表,管理员必须提升你被授予特权修改除了选择
    % sql格兰特选择、修改任何文件“user1”
    例子CTOP声明:

AWS

% sql CREATE TABLE mytable使用镶花选项(PATH =“s3: / / my-root-bucket /文件夹/我的桌子)
删除

Azure

% sql使用镶花选项(创建表mytable路径= ' wasbs: / / my-container@my-storage-account.blob.core.windows.net/my-table')
删除
删除

警告

重要的是要理解授予的安全影响一个文件系统上的任何文件权限。你应该只给予特权用户任何文件。较低的用户特权在集群上不应该访问数据通过引用一个实际的存储位置。相反,他们应该从表由特权用户访问数据,从而确保表acl执行。

此外,如果文件在砖根和桶都可以访问的数据集群和用户拥有修改权限,管理员应该锁定根。

AWS

给予上述数据访问权限不取代任何潜在我角色或S3 bucket的政策。例如,如果一个grant语句user1格兰特选择、修改任何文件但我执行连接到集群中的作用明确否认读取目标S3 bucket,然后呢格兰特语句不会让桶或桶内的物体突然可读性。

删除

Azure

给予上述数据访问权限不取代任何潜在用户访问控制权限或Blob存储容器。例如,如果一个grant语句user1格兰特选择、修改任何文件但用户权限执行连接到集群明确否认读取到目标容器,然后呢格兰特声明不会让容器或容器内的物体突然可读性。

删除





这篇文章有用吗?