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

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

에 대해 알려진 문제 AWS Lake Formation

에 대해 알려진 문제를 검토합니다 AWS Lake Formation.

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

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

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

참고

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

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

예를 들어 AvroSerDe는 테이블에 액세스할 수 있는 모든 사용자가 사용할 수 avro.schema.literal있는 라는 테이블 속성에 테이블 스키마의 JSON 표현을 저장합니다. 테이블 속성에 민감한 정보를 저장하지 않는 것이 좋으며, 사용자가 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은 두 개의 항목을 반환합니다. 하나는 이전 사용자용이고 다른 하나는 새 사용자용입니다. 이전 사용자에게 부여된 권한을 취소하려고 하면 새 사용자의 권한이 취소됩니다.

GetTables 파라미터 값을 업데이트하지 SearchTables APIs 마세요. IsRegisteredWithLakeFormation

GetTables 및 와 같은 Data Catalog API 작업은 의 값을 업데이트하지 SearchTables 않고 기본값인 false를 IsRegisteredWithLakeFormation parameter반환하는 것으로 알려진 제한 사항이 있습니다. 를 사용하여 에 대한 올바른 값을 GetTable API 보는 것이 좋습니다IsRegisteredWithLakeFormation parameter.

Data Catalog API 작업은 IsRegisteredWithLakeFormation 파라미터 값을 업데이트하지 않습니다.

GetTables 및 와 같은 Data Catalog API 작업은 IsRegisteredWithLakeFormation 파라미터 값을 업데이트하지 SearchTables 않고 기본값인 false를 반환하는 것으로 알려진 제한 사항이 있습니다. 를 사용하여 IsRegisteredWithLakeFormation 파라미터의 올바른 값을 GetTable API 보는 것이 좋습니다.

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

Lake Formation 작업은 스키마 등록 에서 사용할 에 가 포함된 AWS Glue 테이블SchemaReferenceStorageDescriptor을 지원하지 않습니다.