本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Lake Formation 許可可針對資料湖中的資料啟用精細存取控制。您可以使用 Lake Formation 許可模型,在 Amazon Simple Storage Service (Amazon S3) 中管理現有的 AWS Glue Data Catalog 物件和資料位置。
Lake Formation 許可模型使用粗粒 AWS Identity and Access Management (IAM) 許可進行API服務存取。Lake Formation 使用Lake Formation 中的資料篩選和儲存格層級安全性函數來限制使用者及其應用程式在資料欄、資料列和儲存格層級的資料表存取。相比之下,AWS Glue 模型透過 Identity 型和資源型IAM政策 授予資料存取權。
若要進行切換,請遵循本指南中的步驟。
如需詳細資訊,請參閱Lake Formation 許可概觀 。
關於預設許可
維持與 的回溯相容性 AWS Glue依預設, AWS Lake Formation 會授予所有現有 IAMAllowedPrincipals
群組的Super
許可 AWS Glue Data Catalog 資源,如果啟用僅使用IAM存取控制設定,則會授予新 Data Catalog 資源的Super
許可。這有效地導致對 Data Catalog 資源和 Amazon S3 位置的存取僅由 AWS Identity and Access Management (IAM) 政策控制。此IAMAllowedPrincipals
群組包含任何使用者和角色,這些IAM使用者和角色都允許您的IAM政策存取 Data Catalog 物件。此Super
許可可讓委託人在授予授權的資料庫或資料表上執行每個支援的 Lake Formation 操作。
您可以在 Lake Formation 中註冊現有 Data Catalog 資源的位置或使用混合存取模式,以開始使用 Lake Formation 來管理對資料的存取。當您以混合存取模式註冊 Amazon S3 位置時,您可以選擇該位置下資料庫和資料表的主體來啟用 Lake Formation 許可。
為了簡化資料湖許可從 IAM和 Amazon S3 模型轉換至 Lake Formation 許可,我們建議您使用 Data Catalog 的混合存取模式。使用混合存取模式時,您會有一個增量路徑,可讓您為特定使用者集啟用 Lake Formation 許可,而不會中斷其他現有使用者或工作負載。
如需詳細資訊,請參閱混合存取模式。
停用預設 Data Catalog 設定,以在單一步驟中將資料表的所有現有使用者移至 Lake Formation。
開始將 Lake Formation 許可與現有的 AWS Glue Data Catalog 資料庫和資料表,您必須執行下列動作:
-
判斷使用者對每個資料庫和資料表的現有IAM許可。
-
在 Lake Formation 中複寫這些許可。
-
對於每個包含資料的 Amazon S3 位置:
-
在參考該位置的每個 Data Catalog 資源上,從
IAMAllowedPrincipals
群組撤銷Super
許可。 -
向 Lake Formation 註冊位置。
-
-
清除現有的精細存取控制IAM政策。
重要
若要在轉換 Data Catalog 的過程中新增使用者,您必須設定精細 AWS Glue 的許可IAM。您也必須在 Lake Formation 中複寫這些許可,如本節所述。如果新使用者具有本指南中所述的粗粒IAM政策,他們可以列出任何授予 Super
許可的資料庫或資料表IAMAllowedPrincipals
。他們也可以檢視這些資源的中繼資料。
依照本節中的步驟升級至 Lake Formation 許可模型。
主題
步驟 1:列出使用者和角色的現有許可
開始將 AWS Lake Formation 許可用於現有的 AWS Glue 資料庫和資料表,您必須先判斷使用者的現有許可。
重要
在開始之前,請確定您已完成 中的任務Lake Formation 入門。
使用 API操作
使用 AWS Identity and Access Management (IAM) ListPoliciesGrantingServiceAccessAPI操作來判斷連接至每個主體 (使用者或角色) IAM的政策。從結果中傳回的政策,您可以判斷授予委託人的IAM許可。您必須分別叫用每個主體API的 。
下列 AWS CLI 範例會傳回附加至使用者 的政策glue_user1
。
aws iam list-policies-granting-service-access --arn arn:aws:iam::111122223333:user/glue_user1 --service-namespaces glue
命令會傳回類似下列的結果。
{
"PoliciesGrantingServiceAccess": [
{
"ServiceNamespace": "glue",
"Policies": [
{
"PolicyType": "INLINE",
"PolicyName": "GlueUserBasic",
"EntityName": "glue_user1",
"EntityType": "USER"
},
{
"PolicyType": "MANAGED",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonAthenaFullAccess",
"PolicyName": "AmazonAthenaFullAccess"
}
]
}
],
"IsTruncated": false
}
使用 AWS Management Console
您也可以在 AWS Identity and Access Management (IAM) 主控台、使用者或角色摘要頁面上的 Access Advisor 索引標籤中查看此資訊:
在 開啟IAM主控台https://console.aws.amazon.com/iam/
。 -
在服務導覽窗格中,選擇 Users (使用者) 或者 Roles (角色)。
-
在清單中選擇名稱以開啟其摘要頁面,然後選擇 Access Advisor 索引標籤。
-
檢查每個政策,以確定每個使用者具有許可的資料庫、資料表和動作的組合。
請記得在此過程中檢查使用者以外的角色,因為資料處理任務可能擔任存取資料的角色。
使用 AWS CloudTrail
判斷現有許可的另一種方法是尋找 AWS CloudTrail AWS Glue API 呼叫,其中日誌additionaleventdata
的欄位包含insufficientLakeFormationPermissions
項目。此項目會列出使用者在 上需要 Lake Formation 許可才能採取相同動作的資料庫和資料表。
這些是資料存取日誌,因此無法保證它們會產生完整的使用者及其許可清單。我們建議您選擇廣泛的時間範圍來擷取大部分使用者的資料存取模式,例如數週或數月。
如需詳細資訊,請參閱 AWS CloudTrail 使用者指南 中的使用事件歷史記錄檢視 CloudTrail 事件。
接下來,您可以設定 Lake Formation 許可,以符合 AWS Glue 許可。請參閱 步驟 2:設定同等 Lake Formation 許可。
步驟 2:設定同等 Lake Formation 許可
使用 中收集的資訊步驟 1:列出使用者和角色的現有許可,授予許可 AWS Lake Formation 以符合 。AWS Glue 許可。使用下列任一方法來執行授予:
-
使用 Lake Formation 主控台或 AWS CLI。
-
使用
GrantPermissions
或BatchGrantPermissions
API操作。請參閱 許可 APIs。
如需詳細資訊,請參閱Lake Formation 許可概觀 。
設定 Lake Formation 許可後,請繼續 步驟 3:授予使用者使用 Lake Formation 的IAM許可。
步驟 3:授予使用者使用 Lake Formation 的IAM許可
若要使用 AWS Lake Formation 許可模型,主體必須在 Lake Formation 上具有 AWS Identity and Access Management (IAM) 許可APIs。
在 中建立下列政策,並將其IAM連接至需要存取您資料湖的每個使用者。將政策命名為 LakeFormationDataAccess
。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LakeFormationDataAccess",
"Effect": "Allow",
"Action": [
"lakeformation:GetDataAccess"
],
"Resource": "*"
}
]
}
接下來,一次升級至 Lake Formation 許可一個資料位置。請參閱 步驟 4:將資料存放區切換至 Lake Formation 許可模型。
步驟 4:將資料存放區切換至 Lake Formation 許可模型
升級到 Lake Formation 許可一次一個資料位置。若要這麼做,請重複整個區段,直到您已註冊 Data Catalog 參考的所有 Amazon Simple Storage Service (Amazon S3) 路徑為止。
驗證 Lake Formation 許可
在註冊位置之前,請執行驗證步驟,以確保正確的主體具有所需的 Lake Formation 許可,並且不會將 Lake Formation 許可授予不應擁有它們的主體。使用 Lake Formation GetEffectivePermissionsForPath
API操作,識別參考 Amazon S3 位置的資料目錄資源,以及對這些資源具有許可的主體。
下列 AWS CLI 範例會傳回參考 Amazon S3 儲存貯體 的資料型錄資料庫和資料表products
。
aws lakeformation get-effective-permissions-for-path --resource-arn arn:aws:s3:::products --profile datalake_admin
請注意 profile
選項。建議您以資料湖管理員的身分執行 命令。
以下是傳回結果的摘錄。
{
"PermissionsWithGrantOption": [
"SELECT"
],
"Resource": {
"TableWithColumns": {
"Name": "inventory_product",
"ColumnWildcard": {},
"DatabaseName": "inventory"
}
},
"Permissions": [
"SELECT"
],
"Principal": {
"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1",
"DataLakePrincipalType": "IAM_USER"
}
},...
重要
如果您的 AWS Glue Data Catalog 已加密,只會GetEffectivePermissionsForPath
傳回 Lake Formation 一般可用性之後建立或修改的資料庫和資料表。
保護現有的 Data Catalog 資源
接下來,從您為位置指定的每個資料表和資料庫IAMAllowedPrincipals
上撤銷Super
許可。
警告
如果您有在 Data Catalog 中建立資料庫和資料表的自動化,下列步驟可能會導致自動化和下游擷取、轉換和載入 (ETL) 任務失敗。只有在您修改現有程序或將明確的 Lake Formation 許可授予必要的委託人之後,才能繼續執行。如需有關 Lake Formation 許可的資訊,請參閱 Lake Formation 許可參考。
在資料表IAMAllowedPrincipals
上Super
從 撤銷
-
在 開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/
。以資料湖管理員身分登入。 -
在導覽窗格中,選擇 Tables (資料表)。
-
在資料表頁面上,選取所需資料表旁的選項按鈕。
-
在動作功能表中,選擇撤銷 。
-
在撤銷許可對話方塊中,在IAM使用者和角色清單中,向下捲動至群組標題,然後選擇 IAMAllowedPrincipals。
-
在資料表許可 下,確保已選取 Super,然後選擇撤銷 。
在IAMAllowedPrincipals
資料庫中撤銷 Super
-
在 開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/
。以資料湖管理員身分登入。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
在資料庫頁面上,選取所需資料庫旁的選項按鈕。
-
在 Actions (動作) 功能表上,選擇 Edit (編輯)。
-
在編輯資料庫頁面上,清除僅對此資料庫 中的新資料表使用IAM存取控制,然後選擇儲存 。
-
返回資料庫頁面,確保資料庫仍處於選取狀態,然後在動作功能表中選擇撤銷 。
-
在撤銷許可對話方塊中,在IAM使用者和角色清單中,向下捲動至群組標題,然後選擇 IAMAllowedPrincipals。
-
在資料庫許可 下,確保已選取 Super,然後選擇撤銷 。
開啟 Amazon S3 位置的 Lake Formation 許可
接下來,向 Lake Formation 註冊 Amazon S3 位置。若要這麼做,您可以使用 中所述的程序將 Amazon S3 位置新增至您的資料湖。或者,如 中所述使用 RegisterResource
API操作憑證自動販賣 API。
注意
如果父位置已註冊,則不需要註冊子位置。
完成這些步驟並測試使用者是否可以存取其資料後,您已成功升級至 Lake Formation 許可。繼續下一步,步驟 5:保護新的 Data Catalog 資源。
步驟 5:保護新的 Data Catalog 資源
接下來,變更預設的 Data Catalog 設定,以保護所有新的 Data Catalog 資源。關閉選項,以僅對新資料庫和資料表使用 AWS Identity and Access Management (IAM) 存取控制。
警告
如果您有在 Data Catalog 中建立資料庫和資料表的自動化,下列步驟可能會導致自動化和下游擷取、轉換和載入 (ETL) 任務失敗。只有在您修改現有程序或將明確的 Lake Formation 許可授予必要的委託人之後,才能繼續執行。如需有關 Lake Formation 許可的資訊,請參閱 Lake Formation 許可參考。
若要變更預設 Data Catalog 設定
-
在 開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/
。以IAM管理使用者身分登入 (使用者 Administrator
或其他具有AdministratorAccess
AWS 受管政策的使用者)。 -
在導覽窗格中,選擇設定。
-
在資料目錄設定頁面上,清除兩個核取方塊,然後選擇儲存 。
下一步是授與使用者未來存取其他資料庫或資料表的權限。請參閱 步驟 6:為使用者提供未來資料湖存取的新IAM政策。
步驟 6:為使用者提供未來資料湖存取的新IAM政策
若要在未來授予使用者對其他 Data Catalog 資料庫或資料表的存取權,您必須提供使用者下列粗粒 AWS Identity and Access Management (IAM) 內嵌政策。將政策命名為 GlueFullReadAccess
。
重要
如果您在 Data Catalog IAMAllowedPrincipals
中每個資料庫和資料表上叫Super
用 之前,將此政策連接至使用者,則該使用者可以檢視Super
授予 之任何資源的所有中繼資料IAMAllowedPrincipals
。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GlueFullReadAccess",
"Effect": "Allow",
"Action": [
"lakeformation:GetDataAccess",
"glue:GetTable",
"glue:GetTables",
"glue:SearchTables",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetPartitions"
],
"Resource": "*"
}
]
}
注意
此步驟和先前步驟中指定的內嵌政策包含最低IAM許可。如需資料湖管理員、資料分析師和其他角色的建議政策,請參閱 Lake Formation 角色和 IAM 許可參考。
接下來,繼續 步驟 7:清除現有IAM政策。
步驟 7:清除現有IAM政策
設定 AWS Lake Formation 許可並建立和連接粗粒存取控制 AWS Identity and Access Management (IAM) 政策後,請完成下列最終步驟:
-
從使用者、群組和角色中移除您在 Lake Formation 中複寫的舊精細存取控制IAM政策。
如此一來,您就能確保這些主體不再能夠直接存取 Amazon Simple Storage Service (Amazon S3) 中的資料。然後,您可以完全透過 Lake Formation 管理這些主體的資料湖存取。