Amazon EMR과 함께 Amazon S3 Access Grants 사용 - Amazon EMR

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

Amazon EMR과 함께 Amazon S3 Access Grants 사용

Amazon EMR에 대한 S3 Access Grants 개요

Amazon EMR 릴리스 6.15.0 이상을 사용하면 Amazon S3 Access Grants에서 Amazon EMR의 Amazon S3 데이터에 대한 액세스를 강화하기 위해 사용 가능한 확장 가능한 액세스 제어 솔루션이 제공됩니다. S3 데이터에 대한 권한 구성이 복잡하거나 대규모인 경우 Access Grants를 사용하여 클러스터의 사용자, 역할 및 애플리케이션을 위한 S3 데이터 권한 규모를 조정할 수 있습니다.

S3 Access Grants를 사용하여 Amazon S3 데이터에 대한 액세스를 EMR 클러스터에 액세스할 수 있는 자격 증명에 연결된 런타임 역할 또는 IAM 역할에 의해 부여된 권한 이상으로 강화할 수 있습니다. 자세한 내용은 Amazon S3 사용 설명서에서 Amazon S3 Access Grants로 액세스 관리를 참조하세요.

기타 Amazon EMR 배포를 이용하여 S3 Access Grants을 사용하는 단계를 확인하려면 다음 설명서를 참조하세요.

Amazon EMR이 S3 Access Grants에서 작동하는 방법

Amazon EMR 릴리스 6.15.0 이상은 S3 Access Grants와의 네이티브 통합을 제공합니다. Amazon EMR에서 S3 Access Grants를 활성화하고 Spark 작업을 실행할 수 있습니다. Spark 작업에서 S3 데이터에 대한 요청이 발생할 경우 Amazon S3에서는 특정 버킷, 접두사 또는 객체로 범위가 지정된 임시 보안 인증을 제공합니다.

다음은 Amazon EMR이 S3 Access Grants로 보호되는 데이터에 액세스하는 방법에 대한 높은 수준의 개요입니다.

Amazon EMR이 S3 Access Grants에서 작동하는 방법
  1. 사용자는 Amazon S3에 저장된 데이터를 사용하는 Amazon EMR Spark 작업을 제출합니다.

  2. Amazon EMR에서는 S3 Access Grants에 해당 사용자를 대신하여 버킷, 접두사 또는 객체에 대한 액세스를 허용하도록 요청합니다.

  3. Amazon S3는 사용자의 AWS Security Token Service (STS) 토큰 형태로 임시 자격 증명을 반환합니다. 토큰의 범위는 S3 버킷, 접두사 또는 객체에 액세스할 수 있도록 지정됩니다.

  4. Amazon EMR은 STS 토큰을 사용하여 S3에서 데이터를 검색합니다.

  5. Amazon EMR은 S3로부터 데이터를 수신하고 사용자에게 결과를 반환합니다.

Amazon EMR에서의 S3 Access Grants 고려 사항

Amazon EMR과 함께 S3 Access Grants를 사용하는 경우에는 다음 동작 및 제한 사항을 참고하세요.

기능 지원

  • S3 Access Grants는 Amazon EMR 릴리스 6.15.0 이상에서 지원됩니다.

  • Spark는 Amazon EMR과 함께 S3 Access Grants를 사용하는 경우에 지원되는 유일한 쿼리 엔진입니다.

  • Delta Lake 및 Hudi는 Amazon EMR에서 S3 Access Grants를 사용하는 경우에 지원되는 유일한 오픈 테이블 형식입니다.

  • 다음 Amazon EMR 기능은 S3 Access Grants와 함께 사용할 수 없습니다.

    • Apache Iceberg 테이블

    • LDAP 네이티브 인증

    • Apache Ranger 네이티브 인증

    • AWS CLI IAM 역할을 사용하는 Amazon S3에 대한 요청

    • 오픈 소스 S3A 프로토콜을 통한 S3 액세스

  • IAM Identity Center를 통한 신뢰할 수 있는 자격 증명 전파를 사용하는 EMR 클러스터에서는 fallbackToIAM 옵션이 지원되지 않습니다.

  • AWS Lake Formation가 포함된 S3 Access Grants는 Amazon EC2에서 실행되는 Amazon EMR 클러스터에서만 지원됩니다.

동작 고려 사항

  • Amazon EMR과 Apache Ranger의 기본 통합에는 EMRFS S3 Apache Ranger 플러그인의 일부인 S3 Access Grants와 일치하는 기능이 포함되어 있습니다. 세분화된 액세스 제어(FGAC)에 Apache Ranger를 사용하는 경우 S3 Access Grants 대신 해당 플러그인을 사용하는 것을 권장합니다.

  • Amazon EMR은 EMRFS에 보안 인증 캐시를 제공하여 사용자가 Spark 작업 내에서 동일한 보안 인증을 반복적으로 요청할 필요가 없도록 합니다. 따라서 Amazon EMR은 보안 인증을 요청할 때 항상 기본 수준 권한을 요청합니다. 자세한 정보는 Amazon S3 사용 설명서S3 데이터에 대한 액세스 요청을 참조하세요.

  • 사용자가 S3 Access Grants에서 지원하지 않는 작업을 수행하는 경우 Amazon EMR은 작업 실행을 위해 지정된 IAM 역할을 사용하도록 설정됩니다. 자세한 내용은 IAM 역할로 폴백 단원을 참조하십시오.

S3 Access Grants를 사용하여 Amazon EMR 클러스터 시작

이 섹션에서는 Amazon EC2에서 실행되는 EMR 클러스터를 시작하고 S3 Access Grants를 사용하여 Amazon S3의 데이터에 대한 액세스를 관리하는 방법을 설명합니다. 기타 Amazon EMR 배포를 이용하여 S3 Access Grants을 사용하는 단계를 확인하려면 다음 설명서를 참조하세요.

다음 단계를 사용하여 Amazon EC2에서 실행되는 EMR 클러스터를 시작하고 S3 Access Grants를 사용하여 Amazon S3의 데이터에 대한 액세스를 관리합니다.

  1. EMR 클러스터의 작업 실행 역할을 설정합니다. Spark 작업 s3:GetDataAccesss3:GetAccessGrantsInstanceForPrefix를 실행하는 데 필요한 필수 IAM 권한을 포함합니다.

    { "Effect": "Allow", "Action": [ "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": [ //LIST ALL INSTANCE ARNS THAT THE ROLE IS ALLOWED TO QUERY "arn:aws_partition:s3:Region:account-id1:access-grants/default", "arn:aws_partition:s3:Region:account-id2:access-grants/default" ] }
    참고

    Amazon EMR을 사용하면 S3 Access Grants가 IAM 역할에 설정된 권한을 보강합니다. 작업 실행을 위해 지정하는 IAM 역할에 S3에 직접 액세스할 수 있는 권한이 포함되어 있는 경우 사용자는 S3 Access Grants에서 정의한 데이터보다 더 많은 데이터에 액세스할 수 있습니다.

  2. 그런 다음 AWS CLI 를 사용하여 Amazon EMR 6.15 이상의 클러스터를 생성하고 분류emrfs-site를 사용하여 다음 예제와 같이 S3 Access Grants를 활성화합니다.

    aws emr create-cluster --release-label emr-6.15.0 \ --instance-count 3 \ --instance-type m5.xlarge \ --configurations '[{"Classification":"emrfs-site", "Properties":{"fs.s3.s3AccessGrants.enabled":"true", "fs.s3.s3AccessGrants.fallbackToIAM":"false"}}]'

를 사용한 S3 액세스 권한 부여 AWS Lake Formation

Amazon EMR을 AWS Lake Formation 통합과 함께 사용하는 경우 Amazon S3 Access Grants를 사용하여 Amazon S3의 데이터에 직접 또는 표 형식으로 액세스할 수 있습니다.

참고

를 사용한 S3 Access Grants AWS Lake Formation 는 Amazon EC2에서 실행되는 Amazon EMR 클러스터에서만 지원됩니다.

직접 액세스

직접 액세스에는 Lake Formation이 Amazon EMR의 메타스토어로 사용하는 AWS Glue 서비스에 대한 API를 호출하지 않는 S3 데이터에 대한 모든 호출이 포함됩니다. 예를 들어를 호출하는 경우spark.read:

spark.read.csv("s3://...")

Amazon EMR AWS Lake Formation 에서와 함께 S3 Access Grants를 사용하는 경우 모든 직접 액세스 패턴은 S3 Access Grants를 통해 임시 S3 자격 증명을 가져옵니다.

테이블 형식 액세스

테이블 형식 액세스는 Lake Formation이 메타스토어 API를 호출하여 S3 위치(예: 테이블 데이터 쿼리)에 액세스할 때 발생합니다.

spark.sql("select * from test_tbl")

Amazon EMR AWS Lake Formation 에서와 함께 S3 Access Grants를 사용하면 모든 테이블 형식의 액세스 패턴이 Lake Formation을 통과합니다.

IAM 역할로 폴백

사용자가 S3 Access Grants에서 지원하지 않는 작업을 수행하려고 시도하는 경우 Amazon EMR은 fallbackToIAM 구성이 true일 때 작업 실행을 위해 지정된 IAM 역할을 기본값으로 사용합니다. 이를 통해 사용자는 S3 Access Grants에서 다루지 않는 시나리오에서 작업 실행 역할을 대신하여 S3 액세스에 대한 보안 인증을 제공할 수 있습니다.

fallbackToIAM이 활성화된 상태에서 사용자는 Access Grant가 허용하는 데이터에 액세스할 수 있습니다. 대상 데이터에 대한 S3 Access Grants 토큰이 없는 경우, Amazon EMR은 해당 작업 실행 역할에 대한 권한을 확인합니다.

참고

프로덕션 워크로드에 대한 옵션을 비활성화하려는 경우에도 fallbackToIAM 구성을 활성화한 상태에서 액세스 권한을 테스트하는 것이 좋습니다. Spark 작업을 사용하면 사용자가 IAM 보안 인증으로 모든 권한 집합에 액세스할 수 있는 다른 방법이 있습니다. EMR 클러스터에서 활성화된 경우 S3의 권한 부여는 Spark 작업에 S3 위치에 대한 액세스 권한을 부여합니다. EMRFS 외부의 액세스로부터 이러한 S3 위치를 보호해야 합니다. 예를 들어 노트북에 사용되는 S3 클라이언트 또는 Hive 또는 Presto와 같이 S3 Access Grants가 지원하지 않는 애플리케이션의 액세스로부터 S3 위치를 보호해야 합니다.