为第三方查询引擎启用调用应用程序集成 API 操作所需的权限 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为第三方查询引擎启用调用应用程序集成 API 操作所需的权限

按照以下步骤操作,以便允许第三方查询引擎通过 Amazon Lake Formation 控制台、Amazon CLI 或 API/SDK 调用应用程序集成 API 操作。

Console
注册您的账户以进行外部数据筛选:
  1. 登录 Amazon Web Services Management Console 并打开 Lake Formation 控制台 (https://console.aws.amazon.com/lakeformation/)。

  2. 在左侧导航栏中,展开权限,然后选择应用程序集成设置

  3. 应用程序集成设置页面上,选择允许外部引擎筛选在 Lake Formation 中注册的 Amazon S3 位置处的数据

  4. 输入您为第三方引擎创建的会话标签。有关会话标签的信息,请参阅《Amazon Identity and Access Management 用户指南》中的在 Amazon STS 中传递会话标签

  5. 输入可使用第三方引擎访问未经过筛选的元数据信息的用户的账户 ID 以及当前账户中资源的数据访问凭证。

    您也可以使用 Amazon 账户 ID 字段配置跨账户访问权限。

    
                    屏幕截图显示了 Lake Formation 的应用程序集成设置页面。允许外部引擎筛选在 Lake Formation 中注册的 Amazon S3 位置处的数据选项处于选中状态。对于会话标签值,文本框为空,但字段下方显示了六个标签,其值分别为:“engine1、“engine2”、“engine3”、“session1”、“session2”和“session3”。最后一个字段为 Amazon Web Services 账户 ID 字段。文本字段为空,但该账户 iD 字段下方显示了三个标签。账户 ID 值已被修订。
CLI

使用 put-data-lake-settings CLI 命令可设置以下参数。

使用此 Amazon CLI 命令时,需要配置以下三个字段:

  • allow-external-data-filtering –(布尔值)表示第三方引擎可以访问未经过筛选的元数据信息和当前账户中资源的数据访问凭证。

  • external-data-filtering-allow-list –(数组)可以使用第三方引擎访问未经过筛选的元数据信息和当前账户中资源的数据访问凭证的账户 ID 的列表。

  • 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 –(数组)可以使用第三方引擎访问未经过筛选的元数据信息和当前账户中资源的数据访问凭证的账户 ID 的列表。

  • 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)); }