表創建失敗與安全例外

學習做什麼當表創建失敗與安全例外。

寫的亞當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格蘭特選擇、修改任何文件但用戶權限執行連接到集群明確否認讀取到目標容器,然後呢格蘭特聲明不會讓容器或容器內的物體突然可讀性。

刪除