에 대한 알려진 문제 AWS Lake Formation - AWS Lake Formation

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

에 대한 알려진 문제 AWS Lake Formation

에 대한 알려진 문제를 AWS Lake Formation검토하십시오.

테이블 메타데이터 필터링 제한

AWS Lake Formation 열 수준 권한을 사용하여 테이블의 특정 열에 대한 액세스를 제한할 수 있습니다. 사용자가 콘솔이나 glue:GetTable과 같은 API를 사용하여 테이블에 대한 메타데이터를 검색하면 테이블 객체의 열 목록에는 액세스 권한이 있는 필드만 포함됩니다. 이 메타데이터 필터링의 제한을 이해해야 합니다.

Lake Formation은 통합 서비스에 열 권한에 대한 메타데이터를 제공하지만 쿼리 응답의 실제 열 필터링은 통합 서비스의 책임입니다. Amazon Athena, Amazon Redshift Spectrum 및 Amazon EMR을 포함하여 열 수준 필터링을 지원하는 Lake Formation 클라이언트는 Lake Formation에 등록된 열 권한을 기반으로 데이터를 필터링합니다. 사용자는 액세스 권한이 없는 데이터를 읽을 수 없습니다. 현재 AWS Glue ETL은 열 필터링을 지원하지 않습니다.

참고

EMR 클러스터는 AWS에서 완전히 관리되지 않습니다. 따라서 EMR 관리자는 데이터에 대한 무단 액세스를 방지하기 위해 클러스터를 적절하게 보호해야 합니다.

특정 애플리케이션이나 형식은 열 이름 및 유형을 비롯한 추가 메타데이터를 Parameters 맵에 테이블 속성으로 저장할 수 있습니다. 이러한 속성은 수정되지 않은 상태로 반환되며 모든 열에 대해 SELECT 권한이 있는 사용자라면 누구나 액세스할 수 있습니다.

예를 들어 Avro는 테이블 스키마의 JSON 표현을 라는 avro.schema.literal 테이블 속성에 SerDe 저장합니다. 이 속성은 테이블에 대한 액세스 권한이 있는 모든 사용자가 사용할 수 있습니다. 테이블 속성에 민감한 정보를 저장하지 않는 것이 좋으며, 사용자가 Avro 형식 테이블의 전체 스키마를 학습할 수 있다는 점에 유의해야 합니다. 이 제한은 테이블 관련 메타데이터에만 적용됩니다.

AWS Lake Formation 호출자에게 테이블의 모든 열에 대한 SELECT 권한이 없는 경우 glue:GetTable 또는 유사한 요청에 응답할 spark.sql.sources.schema 때 로 시작하는 모든 테이블 속성을 제거합니다. 이렇게 하면 사용자가 Apache Spark로 생성된 테이블에 대한 추가 메타데이터에 액세스할 수 없게 됩니다. Amazon EMR에서 실행할 때 Apache Spark 애플리케이션은 여전히 이러한 테이블을 읽을 수 있지만 특정 최적화가 적용되지 않을 수 있으며 대/소문자를 구분하는 열 이름은 지원되지 않습니다. 사용자가 테이블의 모든 열에 액세스할 수 있는 경우 Lake Formation은 모든 테이블 속성이 포함된 수정되지 않은 테이블을 반환합니다.

제외된 열의 이름 바꾸기 관련 문제

열 수준 권한을 사용하여 열을 제외한 다음 열 이름을 바꾸면 해당 열이 더 이상 쿼리에서 제외되지 않습니다(예: SELECT *).

CSV 테이블의 열 삭제 관련 문제

CSV 형식으로 데이터 카탈로그 테이블을 생성한 다음 스키마에서 열을 삭제하면 쿼리에서 잘못된 데이터가 반환되고 열 수준 권한이 준수되지 않을 수 있습니다.

해결 방법: 새 테이블을 대신 생성합니다.

테이블 파티션을 공통 경로 아래에 추가해야 함

Lake Formation은 테이블의 모든 파티션이 테이블의 위치 필드에 설정된 공통 경로 아래에 있을 것으로 예상합니다. 크롤러를 사용하여 카탈로그에 파티션을 추가하면 원활하게 작동합니다. 그러나 파티션을 수동으로 추가할 때 이러한 파티션이 상위 테이블에 설정된 위치에 있지 않으면 데이터 액세스가 작동하지 않습니다.

워크플로 생성 중 데이터베이스 생성 관련 문제

Lake Formation 콘솔을 사용하여 청사진에서 워크플로를 생성할 때 대상 데이터베이스를 생성할 수 있습니다(대상 데이터베이스가 없는 경우). 이렇게 하면 로그인한 사용자에게 생성된 데이터베이스에 대한 CREATE_TABLE 권한이 부여됩니다. 워크플로가 생성하는 크롤러는 워크플로 역할로 테이블을 생성하려고 시도합니다. 하지만 이 역할에는 데이터베이스에 대한 CREATE_TABLE 권한이 없기 때문에 실패합니다.

해결 방법: 워크플로를 설정하는 동안 콘솔을 통해 데이터베이스를 생성하는 경우 워크플로를 실행하기 전에 워크플로와 관련된 역할에 방금 생성한 데이터베이스에 대한 CREATE_TABLE 권한을 부여해야 합니다.

사용자를 삭제하고 다시 생성할 때 발생하는 문제

다음 시나리오에서는 lakeformation:ListPermissions에서 반환된 잘못된 Lake Formation 권한이 발생합니다.

  1. 사용자를 생성하고 Lake Formation 권한을 부여합니다.

  2. 사용자를 삭제합니다.

  3. 같은 이름으로 사용자를 다시 생성합니다.

ListPermissions은 두 개의 항목을 반환합니다. 하나는 이전 사용자용이고 다른 하나는 새 사용자용입니다. 이전 사용자에게 부여된 권한을 취소하려고 하면 새 사용자의 권한이 취소됩니다.

GetTablesSearchTables API가 IsRegisteredWithLakeFormation 파라미터 값을 업데이트하지 않음

GetTablesSearchTables와 같은 데이터 카탈로그 API 작업은 IsRegisteredWithLakeFormation parameter 값을 업데이트하지 않고 기본값인 false를 반환한다는 알려진 제한 사항이 있습니다. IsRegisteredWithLakeFormation parameter의 올바른 값을 보려면 GetTable API를 사용하는 것이 좋습니다.

데이터 카탈로그 API 작업은 IsRegisteredWithLakeFormation 파라미터 값을 업데이트하지 않습니다.

GetTablesSearchTables와 같은 데이터 카탈로그 API 작업은 IsRegisteredWithLakeFormation 파리미터 값을 업데이트하지 않고 기본값인 false를 반환한다는 알려진 제한 사항이 있습니다. IsRegisteredWithLakeFormation 파라미터의 올바른 값을 보려면 GetTable API를 사용하는 것이 좋습니다.

Lake Formation 작업은 AWS Glue 스키마 레지스트리를 지원하지 않습니다.

Lake Formation 작업은 스키마 SchemaReference 레지스트리에서 사용할 StorageDescriptor in을 포함하는 AWS Glue 테이블을 지원하지 않습니다.