Amazon QuickSight에서 다른 계정의 Amazon S3 버킷으로 교차 계정 액세스를 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 5월 24일

다른 계정의 Amazon Simple Storage Service(Amazon S3) 버킷의 데이터를 사용하여 Amazon QuickSight에서 데이터 집합을 만들려고 합니다. 어떻게 해야 합니까?

간략한 설명

계정 A가 Amazon QuickSight 인스턴스가 있는 위치이고 계정 B는 Amazon S3 버킷이 있는 위치라고 가정합니다. 다음 단계를 사용하여 Amazon QuickSight에서 다른 계정의 암호화된 Amazon S3 버킷에 대한 교차 계정 액세스를 생성할 수 있습니다.

1.    계정 B(S3 버킷이 있는 위치)에서 Amazon S3 버킷 정책을 업데이트합니다.

2.    Amazon S3 버킷(계정 B)을 Amazon QuickSight 서비스 역할(계정 A)이 액세스할 수 있는 리소스로 추가합니다.

3.    Amazon QuickSight 서비스 역할(계정 A)이 Amazon S3 버킷(계정 B)의 KMS 키에 액세스할 수 있도록 허용합니다.

참고: 이 문서에서는 Amazon S3 버킷이 암호화되었다고 가정합니다. 또한 KMS 키를 사용하여 Amazon S3 버킷을 암호화하는 것이 좋습니다. S3에 대한 기본 암호화를 활성화하는 방법에 대한 자세한 내용은 Amazon S3 기본 버킷 암호화 활성화를 참조하세요.

해결 방법

계정 B(S3 버킷이 있는 위치)에서 Amazon S3 버킷 정책 업데이트

Amazon QuickSight에서 Amazon S3로의 교차 계정 액세스를 설정하려면 다음 단계를 수행하세요.

1.    다음과 예와 같이 Amazon S3 버킷(계정 B)의 버킷 정책을 업데이트합니다.

{
    "Version": "2012-10-17",
    "Id": "BucketPolicy",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<Account A>:role/service-role/aws-quicksight-service-role-v0"
            },
            "Action": ["s3:ListBucket", "s3:GetObject", "s3:GetObjectVersion" ], 
            "Resource": [
                "arn:aws:s3:::cross-account-qstest-bucket",
                "arn:aws:s3:::cross-account-qstest-bucket/*"
            ]
        }
    ]
}

참고: 계정 A에 aws-quicksight-consumers-role-v0 역할이 있는 경우 대신 이 역할을 사용해야 합니다. aws-quicksight-service-role-v0Aaws-quicksight-s3-consumers-role-v0로 대체하여 Amazon S3와의 연결 문제를 방지합니다.

2.    Amazon S3 버킷의 KMS 키에 액세스할 수 있는 사용자 목록에 Amazon QuickSight 서비스 역할(계정 A)을 추가합니다.

aws kms create-grant --key-id <KMS key ARN> --grantee-principal <Amazon QuickSight Role ARN> --operations Decrypt

참고: KMS 키 ARN을 얻으려면 Amazon S3 콘솔을 엽니다. 데이터 파일이 들어 있는 Amazon S3 버킷으로 이동하여 [속성(Properties)] 탭을 선택합니다. 키 ARN은 [기본 암호화(Default encryption)] 아래에 있습니다.

Amazon QuickSight 서비스 역할 ARN을 얻으려면 Amazon QuickSight 구독이 있는 계정 A에서 AWS Identity Access Management(IAM) 콘솔을 엽니다. 왼쪽 탐색 창에서 [역할(Roles)]을 선택합니다. aws-quicksight-service-role을 검색하고 Amazon QuickSight 서비스 역할을 선택합니다. 서비스 역할 ARN을 복사합니다.

참고: 계정 A에 aws-quicksight-s3-consumers-role-v0 역할이 있는 경우 이 역할을 대신 사용해야 합니다. 그렇지 않으면 Amazon S3에 연결하려고 할 때 오류가 발생할 수 있습니다.

Amazon S3 버킷(계정 B)을 Amazon QuickSight 서비스 역할(계정 A)이 액세스할 수 있는 리소스로 추가

Amazon QuickSight 서비스 역할이 다른 계정의 Amazon S3 버킷에 액세스할 수 있도록 허용하려면 다음 단계를 수행하세요.

1.    Amazon QuickSight 콘솔을 엽니다.

2.    [QuickSight 관리(Manage QuickSight)]를 선택합니다.

3.    [보안 및 권한(Security & permissions)]을 선택합니다.

4.    [추가(Add)] 또는 [제거(remove)]를 선택합니다.

5.    [세부 정보(Details)]를 선택합니다.

6.    [S3 buckets(S3 버킷)]을 선택합니다.

7.    AWS 탭에서 액세스할 수 있는 S3 버킷을 선택하여 해당 S3 버킷이 Amazon QuickSight 액세스를 위해 나열되어 있는지 확인합니다.

8.    (선택 사항) Amazon S3 버킷이 목록에 없는 경우 [다른 버킷 사용(Use a different bucket)] 아래에 버킷을 추가합니다.

9.    [마침(Finish)]을 선택합니다.

Amazon S3 버킷(계정 B)의 KMS 키에 대한 Amazon QuickSight 서비스 역할(계정 A) 액세스 허용

계정 A의 Amazon QuickSight 서비스 역할에 다음과 같은 인라인 IAM 정책을 추가합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ExampleStmt3",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": ""arn:aws:kms:us-east-1:<account ID of your S3 bucket>:key/<KEYID>"
        }
    ]
}

이 업데이트된 정책을 통해 Amazon QuickSight 서비스 역할은 Amazon S3 버킷이 위치하는 계정 B의 KMS 키에 액세스할 수 있습니다. 정책을 인라인으로 추가하고 ExampleStmt3을 자체 명령문 ID로 바꾸어야 합니다.

참고: 계정 A에 aws-quicksight-s3-consumers-role-v0 역할이 있는 경우 이 KMS 정책을 역할에 연결해야 합니다. KMS 정책은 Amazon S3 버킷의 데이터를 복호화합니다.

업데이트된 역할 정책을 Amazon QuickSight 서비스 역할에 연결하는 경우 권한 오류가 발생할 수 있습니다. 이 권한 오류를 해결하는 방법에 대한 자세한 내용은 Amazon QuickSight에서 AWS 리소스 권한 오류를 해결하려면 어떻게 해야 합니까?를 참조하세요.

추가 고려 사항

다음은 추가적으로 고려해야 할 몇 가지 사항입니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?