設定 AWS Glue Data Catalog 中的資料庫和資料表的存取權
如果您搭配 Amazon Athena 使用 AWS Glue Data Catalog,則可以為 Athena 所使用的資料庫和資料表目錄物件定義資源層級政策。
注意
本主題討論了資料庫和資料表層級安全性。如需有關資料欄、資料列和儲存格層級安全性的資訊,請參閱 Lake Formation 中的資料篩選和儲存格層級安全性。
您可以定義 IAM 身分型政策中的資源層級許可。
重要
本節討論 IAM 身分型政策中的資源層級許可。這些不同於資源型政策。如需有關相關差異的詳細資訊,請參閱《IAM 使用者指南》中的身分型政策和資源型政策。
請參閱以下主題以了解這些任務:
| 執行此任務 | 參閱以下主題 |
|---|---|
| 建立 IAM 政策來定義資源的存取權 | 《IAM 使用者指南》中的建立 IAM 政策。 |
| 了解 AWS Glue 中使用的 IAM 身分型政策 | 《AWS Glue 開發人員指南》中的身分型政策 (IAM 政策)。 |
本節內容
限制
當您使用 AWS Glue Data Catalog 和 Athena 的資料庫和資料表層級存取控制時,請考慮下列限制:
-
啟用 IAM Identity Center 的 Athena 工作群組需要將 Lake Formation 設定為使用 IAM Identity Center 身分。如需詳細資訊,請參閱《AWS Lake Formation 開發人員指南》中的整合 IAM Identity Center。
-
您可以限制只能存取資料庫和資料表。這些控制項適用於資料表層級。您不能限制存取資料表中個別分割區。如需更多詳細資訊,請參閱 關於 AWS Glue 中資料表分割區和版本的存取控制。
-
AWS Glue Data Catalog 包含下列資源:
CATALOG、DATABASE、TABLE、FUNCTION。注意
在此清單中,對於每個帳戶,Athena 與 AWS Glue Data Catalog 之間的共同資源為
TABLE、DATABASE和CATALOG。Function專用於 AWS Glue。對於 Athena 中的刪除動作,您必須包含 AWS Glue 動作的許可。請參閱 資料庫和資料表層級許可的範例。其階層如下:
CATALOG是每個帳戶中所有DATABASES的上階,而每個DATABASE是它的所有TABLES和FUNCTIONS的上階。例如,在帳戶中目錄裡的table_test資料庫中名為db的資料表,它的上階是帳戶中的db和目錄。對db資料庫來說,它的上階是帳戶中的目錄,而它的子代是資料表和函數。如需有關資源階層架構的詳細資訊,請參閱《AWS Glue 開發人員指南》中的資料目錄中的 ARN 清單。 -
對於資源的任何非刪除 Athena 動作,例如
CREATE DATABASE、CREATE TABLE、SHOW DATABASE、SHOW TABLE或ALTER TABLE,您需要許可,才能對資源 (資料表或資料庫) 以及資料目錄中資源的所有上階呼叫此動作。例如,對於表格,其上階為其所屬的資料庫,以及帳戶的目錄。對於資料庫,其上階為帳戶的目錄。請參閱 資料庫和資料表層級許可的範例。 -
對於 Athena 中的刪除動作,例如
DROP DATABASE或DROP TABLE,您也需要許可,才能對資料型錄中資源的所有上階和下階呼叫刪除動作。例如,若要刪除資料庫,您需要資料庫,目錄 (即其上階),以及所有表格和使用者定義函數 (即其下階) 的許可。表格沒有下階。若要執行DROP TABLE,您需要許可,才能對表格、其所屬資料庫,以及目錄執行此動作。請參閱 資料庫和資料表層級許可的範例。
將 AWS Glue 設定為依 AWS 區域 存取您的目錄和資料庫
若要搭配使用 Athena 與 AWS Glue,需要一個政策來授予每個 AWS 區域 對您的資料庫和帳戶中的 AWS Glue Data Catalog 的存取權。若要建立資料庫,還需要 CreateDatabase 許可。在下列政策範例中,將 AWS 區域、AWS 帳戶 ID 和資料庫名稱取代為您自己的名稱。
{ "Sid": "DatabasePermissions", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:CreateDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/default" ] }
關於 AWS Glue 中資料表分割區和版本的存取控制
在 AWS Glue 中,資料表可以有分割區和版本。資料表版本和分割區在 AWS Glue 中不會被當做不同的資源。授予資料表和資料表上階資源的存取權,便可得到資料表版本和分割區的存取權。
基於存取控制之目的,以下存取許可適用:
-
控制適用於資料表層級。您可以限制只能存取資料庫和資料表。例如,如果允許存取有分割區的資料表,則此存取權會套用到資料表中的所有分割區。您不能限制存取資料表中個別分割區。
重要
若要在 AWS Glue 中對分割區執行動作,則需要目錄、資料庫和資料表層級的分割區動作許可。存取資料表內的分割區並不足夠。例如,若要在資料庫
myDB中對資料表myTable執行GetPartitions,您必須授予目錄、myDB資料庫和myTable資源的glue:GetPartitions許可。 -
存取控制不適用於資料表版本。與分割區一樣,透過 AWS Glue 中的資料表版本 API 以及資料表上階的存取權,可授予對資料表先前版本的存取權。
如需有關 AWS Glue 動作許可的資訊,請參閱《AWS Glue 開發人員指南》中的 AWS Glue API 許可:動作和資源參考。
資料庫和資料表層級許可的範例
下列資料表列出了 IAM 身分型政策範例,這些政策允許對 Athena 中的資料庫和資料表進行存取。我們建議您從這些範例開始,並根據您的需要調整它們,來允許或拒絕對特定資料庫和資料表的特定動作。
這些範例包括存取資料庫和目錄,以便 Athena 和 AWS Glue 能夠共同搭配運作。若有多個 AWS 區域,請為每個資料庫及目錄加入類似的政策,一個區域一行。
在此範例中,將 example_db 資料庫和 test 資料表名稱取代為您自己的資料庫和資料表名稱。
| DDL 陳述式 | IAM 存取政策授予資源存取權的範例 |
|---|---|
| ALTER DATABASE | 可讓您修改 example_db 資料庫的屬性。
|
| CREATE DATABASE | 可讓您建立名為 example_db 的資料庫。
|
| CREATE TABLE | 可讓您在 test 資料庫中建立名為 example_db 的資料表。
|
| DROP DATABASE | 可讓您捨棄 example_db 資料庫,包括其中的所有資料表。
|
| DROP TABLE | 可讓您捨棄 test 資料庫中名為 example_db 的分割資料表。如果您的資料表沒有分割區,請勿包含分割動作。
|
| MSCK REPAIR TABLE | 允許您在將 Hive 相容分割區新增至 example_db 資料庫中名為 test 的資料表後更新目錄中繼資料。
|
| SHOW DATABASES | 可讓您列出 AWS Glue Data Catalog 中的所有資料庫。
|
| SHOW TABLES | 可讓您列出 example_db 資料庫中的所有資料表。
|