基礎資料存取控制 - AWS Lake Formation

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

基礎資料存取控制

當整合式 AWS 服務請求存取由存取控制之 Amazon S3 位置中的資料時 AWS Lake Formation,Lake Formation 會提供臨時登入資料來存取資料。

若要讓湖泊形成控制對 Amazon S3 位置基礎資料的存取,請向 Lake Formation 註冊該位置。

註冊 Amazon S3 位置後,您可以開始授予以下 Lake Formation 許可:

  • 資料存取權限 (SELECTINSERT、和DELETE)指向該位置的「資料目錄」表格。

  • 該位置的資料位置權限。

Lake Formation 資料位置許可控制建立指向特定 Amazon S3 位置的資料目錄資源的能力。資料位置權限為資料湖中的位置提供額外的安全層。當您授與CREATE_TABLEALTER權限給主參與者時,您也會授與資料位置權限,以限制主參與者可以建立或變更中繼資料表格的位置。

Amazon S3 位置是儲存貯體下的儲存貯體或前置詞,但不是個別的 Amazon S3 物件。

您可以使用 Lake Formation 主控台、API 或 AWS CLI. 授予書的一般形式如下:

grant DATA_LOCATION_ACCESS to principal on S3 location [with grant option]

如果您包含with grant option,受權者可以將權限授與其他主參與者。

回想一下,Lake Formation 許可始終與 AWS Identity and Access Management (IAM)許可結合使用,以實現精細的訪問控制。對於基礎 Amazon S3 資料的讀取/寫入許可,IAM 許可的授與方式如下:

註冊位置時,您可以指定 IAM 角色,以授與該位置的讀取/寫入許可。在向集成 AWS 服務提供臨時憑據時,Lake Formation 承擔該角色。一般角色可能會附加下列原則,其中註冊位置是值區awsexamplebucket

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::awsexamplebucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::awsexamplebucket" ] } ] }

Lake Formation 提供了一個服務鏈接的角色,您可以在註冊過程中使用它來自動創建這樣的策略。如需詳細資訊,請參閱 使用服務連結角色進行 Lake Formation

因此,註冊 Amazon S3 位置會授予該位置上所需的 s3: IAM 許可,其中許可由用於註冊該位置的角色指定。

重要

避免註冊已啟用請求者付費的 Amazon S3 儲存貯體。對於在 Lake Formation 註冊的值區,用於註冊值區的角色一律會被視為請求者。如果值區是由其他 AWS 帳戶存取,如果該角色與值區擁有者屬於相同的帳戶,則值區擁有者會收取資料存取費用。

對於基礎資料的讀取/寫入存取權,除了 Lake Formation 許可外,主體還需要以下 IAM 權限:

lakeformation:GetDataAccess

有了此許可,Lake Formation 就會授與要求存取資料所需的臨時憑證。

注意

Amazon Athena 要求用戶lakeformation:GetDataAccess獲得許可。其他整合式服務需要其基礎執行角色才能擁有lakeformation:GetDataAccess權限。

此權限包含在中的建議策略中Lake Formation 角色和 IAM 許可參考

總而言之,為了使 Lake Form 校長能夠使用由 Lake Formation 權限控制的訪問權限讀取和寫入基礎數據:

  • 向 Lake Formation 註冊包含資料的 Amazon S3 位置。

  • 建立指向基礎資料位置之「資料目錄」表格的主參與者必須具有資料位置權限。

  • 讀取和寫入基礎資料的主參與者必須對指向基礎資料位置的「資料目錄」表格具有 Lake Formation 資料存取權限。

  • 在 Lake Formation 註冊基礎資料位置時,讀取和寫入基礎資料的主體必須具有 lakeformation:GetDataAccess IAM 權限。

注意

如果您可以透過 IAM 或 Amazon S3 政策存取這些位置,則 Lake Formation 許可模型不會阻止透過 Amazon S3 API 或主控台存取 Amazon S3 位置。您可以將 IAM 政策附加到主體以封鎖此存取權。

有關數據位置權限的更多

資料位置權限可控制資料目錄資料庫和表格上建立和更新作業的結果。規則如下:

  • 主體必須在 Amazon S3 位置具有明確或隱含的資料位置許可,才能建立或更新指定該位置的資料庫或表格。

  • 使用控制台、API 或授予明確權限DATA_LOCATION_ACCESS AWS CLI。

  • 當資料庫具有指向已註冊位置的 location 屬性、主體具有資料庫的權限,且主體嘗試在該位置或子位置建立資料表時,就會授與隱含權限。CREATE_TABLE

  • 如果主參與者被授與某個位置的資料位置權限,則主參與者對所有子位置都具有資料位置權限。

  • 主體不需要資料位置權限,即可對基礎資料執行讀取/寫入作業。擁有SELECTINSERT資料存取權限就足夠了。資料位置權限僅適用於建立指向該位置的資料目錄資源。

考慮下圖中顯示的場景。

資料夾階層和兩個資料庫 (資料庫 A 和 B),資料庫 B 指向客戶服務資料夾。

在這張圖中:

  • Amazon S3 桶 ProductsFinance,並Customer Service在 Lake Formation 註冊。

  • Database A沒有位置屬性,且Database B具有指向Customer Service值區的位置屬性。

  • 用戶CREATE_TABLE在兩個數據庫上都datalake_user有。

  • 使用datalake_user者僅獲得Products儲存貯體的資料位置權限。

以下是使用者datalake_user嘗試在特定資料庫中的特定位置建立目錄表格時的結果。

datalake_user嘗試建立資料表的位置
資料庫和位置 成功或失敗 原因
資料庫 A 在 Finance/Sales 失敗 沒有資料位置權限
資料庫 A 在 Products 成功 具有資料位置權限
資料庫 A 在 HR/Plans 成功 地點尚未註冊
資料庫 B 在 Customer Service/Incidents 成功 資料庫的位置屬性位於 Customer Service

如需詳細資訊,請參閱下列內容: