本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为第三方查询引擎启用权限以调用凭证售卖 API 操作
按照以下步骤允许第三方查询引擎通过AmazonLake Formation控制台、Amazon CLI或 API/SDK 调用凭证自动售货 API 操作。
- Console
-
要注册您的账户以进行外部数据筛选,请执行以下操作:
登录,然后通过以下Amazon Web Services Management Console网址打开 Lake Formation 控制台:https://console.aws.amazon.com/lakeformation/
。 -
在左侧导航栏中,展开 “权限”,然后选择 “外部数据筛选”。
-
在 “外部数据筛选” 页面上,选择 “允许外部引擎筛选注册的 Amazon S3 位置中的数据” 选项Lake Formation。
-
输入您为第三方引擎创建的会话标签。有关会话标签的信息,请参阅Amazon Identity and Access Management用户指南中的在Amazon STS 中传递会话标签。
-
输入用户的账户 ID,这些用户可以使用第三方引擎访问未经过滤的元数据信息以及当前账户中资源的数据访问凭证。
您也可以使用Amazon账户 ID 字段配置跨账户访问权限。
- CLI
-
使用 C
put-data-lake-settings
LI 命令设置以下参数。使用此Amazon CLI命令时,需要配置三个字段:
-
allow-external-data-filtering
—(布尔值)表示第三方引擎可以访问当前账户中资源的未经过筛选的元数据信息和数据访问凭证。 -
external-data-filtering-allow-list
—(数组)账户 ID 列表,这些账户 ID 在使用第三方引擎时可以访问当前账户中资源的未经过筛选的元数据信息和数据访问凭据。 -
authorized-sessions-tag-value-list
—(数组)授权会话标签值(字符串)列表。如果 IAM 角色证书已附加了授权的密钥值对,则如果会话标签包含在列表中,则会话被授予访问配置账户中资源的未经过筛选的元数据信息和数据访问凭证的权限。授权的会话标签密钥定义为*LakeFormationAuthorizedCaller*
。
例如:
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"] } }
-
- API/SDK
-
使用
PutDataLakeSetting
API 操作设置以下参数。使用此 API 操作时,需要配置三个字段:
-
AllowExternalDataFiltering
—(布尔值)表示第三方引擎是否可以访问当前账户中资源的未经过筛选的元数据信息和数据访问凭证。 -
ExternalDataFilteringAllowList
—(数组)账户 ID 列表,这些账户 ID 可以使用第三方引擎访问未经过滤的元数据信息和当前账户中资源的数据访问凭据。 -
AuthorizedSectionsTagValueList
—(数组)授权标签值(字符串)列表。如果 IAM 角色证书已附加了授权标签,则会话将被授予对未经过筛选的元数据信息和已配置账户中资源的数据访问凭证的访问权限。授权的会话标签密钥定义为*LakeFormationAuthorizedCaller*
。
例如:
//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)); }
-