使用 AWS Glue Data Catalog 視圖 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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 AdminDefinerInvoker

  • 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 AdminDefiner 可使用 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 檢視語法