外部Schema內對聯邦外表授權
當外部Schema建立成功後,其表的所有者歸屬於外部Schema的帳號。如果需要將外部Schema許可權或表操作許可權授予其他使用者,請執行下述操作。
由於MaxCompute在湖倉一體模式下不持久化資料來源的中繼資料,權限原則依據資料來源對象名稱管理。資料來源對象名稱變更會導致授權失效,須通過Revoke命令或刪除Policy方式移除授權;未及時移除可能導致新同名對象繼承舊策略的許可權定義,允許原使用者獲得外部項目中的資料來源新同名對象的非預期許可權。
開啟Project內租戶對象鑒權後,建立外部Schema之前需要將當前專案掛載在外部資料源上,如果沒有提前進行掛載操作,會在建立外部Schema的時候報錯
假設建立和管理External Schema的專案名稱為test_lakehouse_project。
建立External Schema
要求的權限
Project的CreateSchema許可權。
如果開啟專案層級租戶資源存取控制,需要Foreign Server的Usage許可權。
樣本步驟
指定當前專案,並授予專案CreateSchema許可權。
-- 指定當前專案 use test_lakehouse_project; -- 為RAM使用者授予專案的CreateSchema許可權 GRANT CreateSchema ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;(可選)如果開啟了專案層級租戶資源存取控制,且已經完成外部資料源與當前專案的掛載配置,在專案內對使用者的授權如下:
-- 為當前專案空間增加RAM使用者體系 ADD accountprovider ram; -- 添加ram使用者 ADD USER `RAM$xxx@test.aliyunid.com:test_user`; -- 建立專案角色 CREATE role test_lakhouse_role; -- 為專案角色添加policy,允許使用外部資料源 put policy D:\bin\allow.policy ON role test_lakhouse_role; -- 將RAM使用者添加到專案角色 GRANT role test_lakhouse_role TO `RAM$xxx@test.aliyunid.com:test_user`;其中
allow.policy檔案內容如下:{ "Version": "1", "Statement": [{ "Action": "odps:Usage", "Effect": "Allow", "Resource": ["acs:odps:*:servers/fs_hive"] }] }建立External Schema。
CREATE EXTERNAL SCHEMA IF NOT EXISTS es_hive3 with fs_hive ON 'default' ;
查詢全部External Schema
要求的權限
Project的CreateInstance和List許可權。
樣本步驟
為RAM使用者授予專案CreateInstance許可權。
GRANT CreateInstance ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;授予專案List許可權。
GRANT List ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;查看全部Schema。
SHOW schemas;
查詢某個External Schema
要求的權限
Schema的Describe許可權。
樣本步驟
為RAM使用者授予某Schema的Describe許可權。
GRANT DESCRIBE ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user;查詢某個External Schema。
DESC SCHEMA es_hive3;
修改External Schema屬性
目前暫不支援修改External Schema屬性。
刪除某個External Schema
要求的權限
Schema的Drop許可權。
樣本步驟
為RAM使用者授予某Schema的Drop許可權。
GRANT DROP ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user;刪除某個External Schema。
DROP SCHEMA es_hive3;
使用某個External Schema
要求的權限
普通三層模式專案不涉及。
當專案從兩層模式升級為三層模式時,需要Schema的Describe許可權。
樣本步驟
指定當前使用某個External Schema。
USE SCHEMA es_hive3;若專案從兩層模式升級為三層模式,需要對指定的Schema授予Describe許可權。
GRANT DESCRIBE ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user;
列出某個External Schema下的表
要求的權限
Schema的List許可權
樣本步驟
為RAM使用者授予某Schema的List許可權。
GRANT List ON schema es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user;倆出某個External Schema下的表。
SHOW tables IN es_hive3;
查詢某個External Schema下的表
要求的權限
Schema內表的Select許可權。
樣本步驟
為RAM使用者授予某Schema內某張表的Select許可權。
GRANT SELECT ON TABLE es_hive3.t1 TO USER RAM$xxx@test.aliyunid.com:test_user;查詢某個External Schema下的表。
SELECT * FROM es_hive3.t1;
將某個External Schema下的表資料匯入至內部表
要求的權限
Schema中表的Select許可權。
Project的CreateTable、CreateInstance許可權。
樣本步驟
為RAM使用者授予專案CreateTable許可權。
GRANT CreateTable ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;授予專案CreateInstance許可權。
GRANT CreateInstance ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user;授予對某張表Select許可權。
GRANT SELECT ON TABLE es_hive3.t1 TO USER RAM$xxx@test.aliyunid.com:test_user;匯入某個External Schema中的表資料至內部表。
CREATE TABLE default.t1_copy_ram3 AS SELECT * FROM t1;