本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS Glue Data Catalog 視圖
這項功能目前在預覽版本中,並可能會有所變更。如需詳細資訊,請參閱 AWS 服務條款 |
當您想要橫跨亞馬遜雅典娜和亞馬 Amazon Redshift AWS 服務 等單一通用 AWS Glue Data Catalog 視圖時,請使用視圖。在 Data Catalog 檢視中,存取許可由建立檢視的使用者定義,而不是由查詢檢視的使用者定義。授予許可的這種方法被稱為定義程式語義。
下列使用案例顯示如何使用 Data Catalog 檢視。
-
更大的存取權 – 您建立的檢視會根據使用者需要的許可層級,來限制資料存取權。例如,您可使用 Data Catalog 檢視,來阻止不在人力資源 (HR) 部門工作的員工查看可識別的個人身分資訊。
-
確保完整記錄 – 透過將某些篩選條件套用至 Data Catalog 檢視,您可確保 Data Catalog 檢視中的資料記錄一律是完整的。
-
增強的安全性 – 在 Data Catalog 檢視中,建立檢視的查詢定義必須完整,才能建立檢視。這使得 Data Catalog 檢視不易受到惡意執行者的 SQL 命令的影響。
-
防止存取基礎資料表 – 定義程式語意可讓使用者存取檢視,而無需讓基礎資料表可供其使用。只有定義檢視的使用者才需要存取該資料表。
Data Catalog 檢視定義存放在 AWS Glue Data Catalog中。這意味著您可使用 AWS Lake Formation ,以透過資源授權、資料欄授權或以標籤為基礎的存取控制來授予存取權。如需有關在 Lake Formation 中授予和撤銷存取權的詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的授與和撤銷存取 Data Catalog 資源的許可。
許可
Data Catalog 檢視需要三個角色:Lake Formation Admin
、Definer
和 Invoker
。
-
Lake Formation Admin
– 具有設定所有 Lake Formation 許可的存取權。 -
Definer
– 建立 Data Catalog 檢視。對於檢視定義參考的所有基礎資料表,Definer
角色必須具有完整的可授予SELECT
許可。 -
Invoker
– 可查詢 Data Catalog 檢視或檢查其中繼資料。若要顯示查詢的呼叫程式,您可以使用invoker_principal()
DML 函式。如需詳細資訊,請參閱 發票主體 ()。
Definer
角色的信任關係必須允許 AWS Glue 和 Lake Formation 服務主體的sts:AssumeRole
動作,如下列範例所示。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com", "lakeformation.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
還需要 Athena 進行存取的 IAM 許可。如需詳細資訊,請參閱 AWS Amazon Athena 的受管政策。
限制
-
Data Catalog 檢視無法參考其他檢視。
-
檢視定義中可參考最多 10 個資料表。
-
基礎資料表必須在 Lake Formation 註冊。
-
DEFINER
主體只能是 IAM 角色。 -
DEFINER
角色必須具有基礎資料表的完整SELECT
(可授予) 許可。 -
UNPROTECTED
Data Catalog 檢視不受支援。 -
檢視定義中不支援使用者定義函數 (UDF)。
-
Athena 聯合資料來源無法用於 Data Catalog 檢視。
-
外部 Hive 中繼儲存不支援 Data Catalog 檢視。
-
Athena 會在偵測到過時的檢視時顯示錯誤訊息。當發生下列其中一種情況時,便會報告過時的檢視:
-
檢視參考資料表或資料庫不存在。
-
在參考的資料表中進行了結構描述或中繼資料變更。
-
參考的資料表遭捨棄,並使用不同的結構描述或組態重新建立。
-
建立 Data Catalog 檢視
下列範例語法顯示具有 Definer
角色的使用者如何建立 orders_by_date
Data Catalog 檢視。此範例假設 Definer
角色對 default
資料庫中的 orders
資料表具有完整的 SELECT
許可。
CREATE PROTECTED MULTI DIALECT VIEW orders_by_date SECURITY DEFINER AS SELECT orderdate, sum(totalprice) AS price FROM orders WHERE order_city = 'SEATTLE' GROUP BY orderdate
查詢 Data Catalog 檢視
建立檢視之後,Lake Formation
Admin
可將 Data Catalog 檢視的 SELECT
許可授予 Invoker
主體。然後,Invoker
主體可查詢檢視,而無需存取檢視參考的基礎基本資料表。以下是範例 Invoker
查詢。
SELECT * from orders_by_date where price > 5000
更新 Data Catalog 檢視
Lake Formation Admin
或 Definer
可使用 ALTER VIEW
UPDATE DIALECT
語法來更新檢視定義。下列範例會修改檢視定義,以從 returns
資料表,而非 orders
資料表中選取資料欄。
ALTER VIEW orders_by_date UPDATE DIALECT AS SELECT return_date, sum(totalprice) AS price FROM returns WHERE order_city = 'SEATTLE' GROUP BY orderdate
如需有關建立和管理 Data Catalog 檢視的語法的詳細資訊,請參閱 Glue Data Catalog 檢視語法。