本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为第三方查询引擎启用调用应用程序集成API操作的权限
按照以下步骤操作,允许第三方查询引擎通过 AWS Lake Formation控制台( AWS CLI 或API/)调用应用程序集成API操作SDK。
- Console
-
注册您的账户以进行外部数据筛选:
登录并打开 Lake AWS Management Console Formation 控制台,网址为https://console.aws.amazon.com/lakeformation/
。 -
在左侧导航栏中,展开管理,然后选择应用程序集成设置。
-
在应用程序集成设置页面上,选择允许外部引擎筛选在 Lake Formation 中注册的 Amazon S3 位置处的数据。
-
输入您为第三方引擎创建的会话标签。有关会话标签的信息,请参阅AWS Identity and Access Management 用户指南 AWS STS中的传递会话标签。
-
输入可使用第三方引擎访问未经过筛选的元数据信息的用户账户IDs,以及当前账户中资源的数据访问凭证。
您也可以使用 AWS 账户 ID 字段配置跨账户访问权限。
- CLI
-
使用
put-data-lake-settings
CLI命令设置以下参数。使用此 AWS CLI 命令时,需要配置三个字段:
-
allow-external-data-filtering
–(布尔值)表示第三方引擎可以访问未经过筛选的元数据信息和当前账户中资源的数据访问凭证。 -
external-data-filtering-allow-list
—(数组)使用第三方引擎时IDs可以访问未经过筛选的元数据信息和当前账户中资源的数据访问凭证的账户列表。 -
authorized-sessions-tag-value-list
–(数组)授权会话标签值(字符串)的列表。如果IAM角色凭据已附加授权的键值对,则如果会话标签包含在列表中,则会话有权访问未经过筛选的元数据信息和已配置账户中资源的数据访问凭证。授权会话标签键为*LakeFormationAuthorizedCaller*
。 -
AllowFullTableExternalDataAccess
–(布尔值)当调用者拥有完整的数据访问权限时,是否允许第三方查询引擎在没有会话标签的情况下获取数据访问凭证。
例如:
aws lakeformation put-data-lake-settings --cli-input-json file://datalakesettings.json { "DataLakeSettings": { "DataLakeAdmins": [ { "DataLakePrincipalIdentifier": "arn:aws:iam::111111111111:user/lakeAdmin" } ], "CreateDatabaseDefaultPermissions": [], "CreateTableDefaultPermissions": [], "TrustedResourceOwners": [], "AllowExternalDataFiltering": true, "ExternalDataFilteringAllowList": [ {"DataLakePrincipalIdentifier": "111111111111"} ], "AuthorizedSessionTagValueList": ["engine1"], "AllowFullTableExternalDataAccess": false } }
-
- API/SDK
-
使用
PutDataLakeSetting
API操作来设置以下参数。使用此API操作时,需要配置三个字段:
-
AllowExternalDataFiltering
–(布尔值)表示第三方引擎可以访问未经过筛选的元数据信息和当前账户中资源的数据访问凭证。 -
ExternalDataFilteringAllowList
—(数组)可以使用第三方引擎访问未经过筛选的元数据信息和当前账户中资源的数据访问凭证的账户列表。IDs -
AuthorizedSectionsTagValueList
–(数组)授权标签值(字符串)的列表。如果已为IAM角色凭据附加了授权标签,则会话将被授予访问未经过筛选的元数据信息和已配置账户中资源的数据访问凭证的权限。授权会话标签键为*LakeFormationAuthorizedCaller*
。 -
AllowFullTableExternalDataAccess
–(布尔值)当调用者拥有完整的数据访问权限时,是否允许第三方查询引擎在没有会话标签的情况下获取数据访问凭证。
例如:
//Enable session tag on existing data lake settings public void sessionTagSetUpForExternalFiltering(AWSLakeFormationClient lakeformation) { GetDataLakeSettingsResult getDataLakeSettingsResult = lfClient.getDataLakeSettings(new GetDataLakeSettingsRequest()); DataLakeSettings dataLakeSettings = getDataLakeSettingsResult.getDataLakeSettings(); //set account level flag to allow external filtering dataLakeSettings.setAllowExternalDataFiltering(true); //set account that are allowed to call credential vending or Glue GetFilteredMetadata API List<DataLakePrincipal> allowlist = new ArrayList<>(); allowlist.add(new DataLakePrincipal().withDataLakePrincipalIdentifier("111111111111")); dataLakeSettings.setWhitelistedForExternalDataFiltering(allowlist); //set registered session tag values List<String> registeredTagValues = new ArrayList<>(); registeredTagValues.add("engine1"); dataLakeSettings.setAuthorizedSessionTagValueList(registeredTagValues); lakeformation.putDataLakeSettings(new PutDataLakeSettingsRequest().withDataLakeSettings(dataLakeSettings)); }
-