타사 쿼리 엔진이 애플리케이션 통합 API 작업을 호출할 수 있는 권한을 활성화합니다. - AWS Lake Formation

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

타사 쿼리 엔진이 애플리케이션 통합 API 작업을 호출할 수 있는 권한을 활성화합니다.

타사 쿼리 엔진이 AWS Lake Formation 콘솔, AWS CLI 또는 API /를 통해 애플리케이션 통합 API 작업을 호출할 수 있도록 하려면 다음 단계를 따르세요SDK.

Console
외부 데이터 필터링을 위해 계정을 등록하려면:
  1. 에 AWS Management Console로그인하고 에서 Lake Formation 콘솔을 엽니다 https://console.aws.amazon.com/lakeformation/.

  2. 왼쪽 탐색 창에서 관리를 확장한 다음 애플리케이션 통합 설정을 선택합니다.

  3. 애플리케이션 통합 설정 페이지에서 외부 엔진이 Lake Formation에 등록된 Amazon S3 위치의 데이터를 필터링하도록 허용 옵션을 선택합니다.

  4. 서드 파티 엔진용으로 생성한 세션 태그를 입력합니다. 세션 태그에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 세션 태그 전달을 참조하십시오. AWS STS

  5. 타사 엔진을 사용하여 필터링되지 않은 메타데이터 정보와 현재 계정 IDs 내 리소스의 데이터 액세스 자격 증명에 액세스할 수 있는 사용자의 계정을 입력합니다.

    AWS 계정 ID 필드를 사용하여 계정 간 액세스를 구성할 수도 있습니다.

    스크린샷은 Lake Formation의 애플리케이션 통합 설정 페이지를 보여줍니다. 외부 엔진이 Lake Formation에 등록된 Amazon S3 위치의 데이터를 필터링하도록 허용이라는 옵션이 선택되어 있습니다. 세션 태그 값의 경우, 텍스트 상자는 비어 있지만 필드 아래에는 '엔진1', '엔진2', '엔진3', '세션1', '세션2', '세션3'이라는 6개의 태그가 표시됩니다. 마지막 필드에는 필드가 표시됩니다. AWS 계정 IDs 텍스트 필드는 비어 있지만 이 필드 아래에 account와 함께 세 개의 태그가 표시됩니다IDs. 계정 ID 값이 삭제됩니다.
CLI

put-data-lake-settingsCLI명령을 사용하여 다음 매개 변수를 설정합니다.

이 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

PutDataLakeSettingAPI작업을 사용하여 다음 매개 변수를 설정합니다.

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