Amazon에서 IAM 역할로 쿼리 실행 QuickSight - 아마존 QuickSight

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

Amazon에서 IAM 역할로 쿼리 실행 QuickSight

Amazon Athena, Amazon Redshift 또는 Amazon S3에 연결된 데이터 소스에 대한 광범위한 권한 대신 세분화된 액세스 정책을 사용하여 데이터 보안을 강화할 수 있습니다. 먼저 사용자 또는 API가 쿼리를 시작할 때 활성화할 권한이 있는 AWS Identity and Access Management (IAM) 역할을 생성합니다. 그런 다음 Amazon QuickSight 관리자 또는 개발자가 Athena 또는 Amazon S3 데이터 소스에 IAM 역할을 할당합니다. 역할이 지정되면 쿼리를 실행하는 모든 사용자 또는 API가 쿼리를 실행하는 데 필요한 정확한 권한을 갖게 됩니다.

다음은 데이터 보안을 강화하기 위해 run-as 역할을 구현하기 전에 고려해야 할 몇 가지 사항입니다.

  • 추가 보안이 어떻게 유리하게 작용하는지 설명합니다.

  • QuickSight 관리자와 협력하여 데이터 소스에 역할을 추가하는 것이 보안 목표 또는 요구 사항을 더 잘 충족하는 데 도움이 되는지 알아보십시오.

  • 데이터 소스의 수와 관련된 사람 및 애플리케이션의 수에 대해 팀에서 이러한 유형의 보안을 문서화하고 유지할 수 있는지 물어보십시오. 그렇지 않다면 그 부분은 누가 맡을 건가요?

  • 구조화된 조직에서는 운영, 개발 및 IT 지원 부서의 병렬 팀에 이해 관계자를 배치합니다. 경험, 조언, 계획을 지원할 의향이 있는지 물어보십시오.

  • 프로젝트를 시작하기 전에 데이터에 액세스해야 하는 사람들을 참여시키는 개념 증명을 고려해 보십시오.

Athena, Amazon Redshift 및 Amazon S3에서 실행 역할을 사용할 때는 다음과 같은 규칙이 적용됩니다.

  • 각 데이터 원본에는 연결된 데이터 원본이 하나만 있을 수 RoleArn 있습니다. 일반적으로 데이터 세트와 시각적 객체에 액세스하는 데이터 소스의 소비자는 다양한 유형의 쿼리를 생성할 수 있습니다. 역할은 작동하는 쿼리와 작동하지 않는 쿼리의 경계를 설정합니다.

  • ARN은 이를 사용하는 QuickSight 인스턴스와 AWS 계정 동일한 IAM 역할에 해당해야 합니다.

  • IAM 역할에는 역할을 QuickSight 수임할 수 있는 신뢰 관계가 있어야 합니다.

  • API를 QuickSight 호출하는 ID에 역할을 전달할 권한이 있어야 속성을 업데이트할 수 있습니다. RoleArn 역할 ARN을 생성하거나 업데이트할 때만 역할을 전달하면 됩니다. 권한은 나중에 재평가되지 않습니다. 마찬가지로 역할 ARN이 생략된 경우에는 권한이 필요하지 않습니다.

  • 역할 ARN이 생략된 경우 Athena 또는 Amazon S3 데이터 소스는 계정 전체 역할 및 범위 축소 정책을 사용합니다.

  • 역할 ARN이 있는 경우 계정 전체 역할과 범위 축소 정책이 모두 무시됩니다. Athena 데이터 소스스의 경우 Lake Formation 권한은 무시되지 않습니다.

  • Amazon S3 데이터 소스의 경우, 매니페스트 파일과 매니페스트 파일에 지정된 데이터 모두 IAM 역할을 사용하여 액세스할 수 있어야 합니다.

  • ARN 문자열은 데이터 위치 및 쿼리 위치의 기존 IAM AWS 계정 역할과 AWS 리전 일치해야 합니다.

에서 다른 서비스에 QuickSight 연결할 때는 IAM AWS역할을 사용합니다. 기본적으로 이 덜 세분화된 버전의 역할은 사용하는 각 서비스에 QuickSight 대해 생성되며 관리자는 역할을 관리합니다. AWS 계정 사용자 지정 권한 정책을 사용하여 IAM 역할 ARN을 추가하면 추가 보호가 필요한 데이터 소스의 더 광범위한 역할을 재정의합니다. 정책에 대한 자세한 내용은 IAM 사용 설명서의 고객 관리형 정책 생성을 참조하십시오.

Athena 데이터 소스를 사용하여 쿼리 실행

API를 사용하여 ARN을 Athena 데이터 소스에 연결합니다. 이렇게 하려면 의 RoleArn속성에 역할 ARN을 추가합니다. AthenaParameters 확인을 위해 Athena 데이터 소스 편집 대화 상자에서 역할 ARN을 볼 수 있습니다. 하지만 역할 ARN은 읽기 전용 필드입니다.

역할 ARN을 표시하는 Athena 데이터 소스 편집 팝업입니다.

시작하려면 사용자 지정 IAM 역할이 필요합니다. 이 역할은 다음 예제에서 설명합니다.

다음 코드 예제는 학습 목적으로만 사용된다는 점에 유의하십시오 이 예제는 임시 개발 및 테스트 환경에서만 사용하고 프로덕션 환경에서는 사용하지 마십시오. 이 예제의 정책은 배포 가능한 정책에 포함되어야 하는 특정 리소스를 보호하지 않습니다. 또한 개발 시에도 자체 AWS 계정 정보를 추가해야 합니다.

다음 명령은 간단한 새 역할을 만들고 권한을 부여하는 몇 가지 정책을 연결합니다 QuickSight.

aws iam create-role \ --role-name TestAthenaRoleForQuickSight \ --description "Test Athena Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

각 데이터 소스에 사용할 IAM 역할을 식별하거나 생성한 후에는 를 사용하여 정책을 연결합니다. attach-role-policy

aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::222222222222:policy/service-role/AWSQuickSightS3Policy1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSQuicksightAthenaAccess1 aws iam attach-role-policy \ --role-name TestAthenaRoleForQuickSight \ --policy-arn arn:aws:iam::aws:policy/AmazonS3Access1

권한을 확인한 후에는 새 역할을 만들거나 기존 역할을 업데이트하여 QuickSight 데이터 소스에서 역할을 사용할 수 있습니다. 이러한 명령을 사용할 때는 AWS 계정 ID를 업데이트하여 사용자 AWS 리전 이름과 일치하도록 하십시오.

이 예제 코드 스니펫은 프로덕션 환경에서는 사용할 수 없다는 점을 기억하세요. AWS 프로덕션 사례에 대한 최소 권한 정책 세트를 식별하여 사용하는 것이 좋습니다.

aws quicksight create-data-source --aws-account-id 222222222222 \ --region us-east-1 \ --data-source-id "athena-with-custom-role" \ --cli-input-json '{ "Name": "Athena with a custom Role", "Type": "ATHENA", "data sourceParameters": { "AthenaParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestAthenaRoleForQuickSight" } } }'

Amazon Redshift 데이터 소스를 사용하여 쿼리 실행

Amazon Redshift 데이터를 실행 역할과 연결하여 세분화된 액세스 정책으로 데이터 보안을 강화합니다. 퍼블릭 네트워크 또는 VPC 연결을 사용하는 Amazon Redshift 데이터 소스에 대한 실행 역할을 생성할 수 있습니다. Amazon Redshift 데이터 소스 편집 대화 상자에서 사용하려는 연결 유형을 지정합니다. Amazon Redshift 서버리스 데이터 소스에는 실행 역할이 지원되지 않습니다.

아래 이미지는 퍼블릭 네트워크 연결 유형을 사용하는 Amazon Redshift 데이터 소스를 보여줍니다.

연결 유형을 표시하는 Amazon S3 데이터 소스 편집 팝업입니다.

시작하려면 사용자 지정 IAM 역할이 필요합니다. 이 역할은 다음 예제에서 설명합니다. 다음 명령은 샘플 새 역할을 생성하고 권한을 부여하는 정책을 연결합니다. QuickSight

aws iam create-role \ --role-name TestRedshiftRoleForQuickSight \ --description "Test Redshift Role For QuickSight" \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "quicksight.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

각 데이터 소스에 사용할 IAM 역할을 식별하거나 생성한 후에는 attach-role-policy을(를) 사용하여 정책을 연결합니다. 사용하려는 역할에 redshift:GetClusterCredentialsWithIAM 권한이 첨부된 경우 DatabaseUser 및 값은 선택 DatabaseGroups 사항입니다.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/service-role/AWSQuickSightRedshiftPolicy aws iam create-policy --policy-name RedshiftGetClusterCredentialsPolicy1 \ --policy-document file://redshift-get-cluster-credentials-policy.json aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "*" ] } ] }

위 예시에서는RoleARN,DatabaseUser, DatabaseGroups IAM 매개변수를 사용하는 데이터 소스를 생성합니다. IAM RoleARN 파라미터를 통해서만 연결을 설정하려면 아래 예와 같이 redshift:GetClusterCredentialsWithIAM 권한을 역할에 연결하십시오.

aws iam attach-role-policy \ --role-name TestRedshiftRoleForQuickSight \ --policy-arn arn:aws:iam:111122223333:policy/RedshiftGetClusterCredentialsPolicy1 // redshift-get-cluster-credentials-policy.json { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftGetClusterCredentialsPolicy", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentialsWithIAM" ], "Resource": [ "*" ] } ] }"

권한을 확인한 후에는 새 역할을 만들거나 기존 역할을 업데이트하여 QuickSight 데이터 소스에서 역할을 사용할 수 있습니다. 이 명령을 사용할 때는 AWS 계정 ID와 AWS 지역을 자신의 것과 일치하도록 업데이트하십시오.

aws quicksight create-data-source \ --region us-west-2 \ --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --cli-input-json file://redshift-data-source-iam.json \ redshift-data-source-iam.json is shown as below { "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "integ", "Host": "redshiftdemocluster.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "redshiftdemocluster", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "DatabaseGroups": ["admin_group", "guest_group", "guest_group_1"] } } }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:AWSACCOUNTID:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

데이터 소스가 VPC 연결 유형을 사용하는 경우 다음 VPC 구성을 사용하십시오.

{ "AwsAccountId": "AWSACCOUNTID", "DataSourceId": "DATSOURCEID", "Name": "Test redshift demo iam vpc", "Type": "REDSHIFT", "DataSourceParameters": { "RedshiftParameters": { "Database": "mydb", "Host": "vpcdemo.us-west-2.redshift.amazonaws.com", "Port": 8192, "ClusterId": "vpcdemo", "IAMParameters": { "RoleArn": "arn:aws:iam::222222222222:role/TestRedshiftRoleForQuickSight", "DatabaseUser": "user", "AutoCreateDatabaseUser": true } } }, "VpcConnectionProperties": { "VpcConnectionArn": "arn:aws:quicksight:us-west-2:222222222222:vpcConnection/VPC Name" }, "Permissions": [ { "Principal": "arn:aws:quicksight:us-east-1:222222222222:user/default/demoname", "Actions": [ "quicksight:DescribeDataSource", "quicksight:DescribeDataSourcePermissions", "quicksight:PassDataSource", "quicksight:UpdateDataSource", "quicksight:DeleteDataSource", "quicksight:UpdateDataSourcePermissions" ] } ] }

데이터 원본이 redshift:GetClusterCredentialsWithIAM 권한을 사용하고 DatabaseUser 또는 DatabaseGroups 매개 변수를 사용하지 않는 경우 스키마의 일부 또는 모든 테이블에 대한 액세스 권한을 역할에 부여하십시오. 역할에 특정 테이블에 SELECT 대한 권한이 부여되었는지 확인하려면 Amazon Redshift 쿼리 편집기에 다음 명령을 입력합니다.

SELECT u.usename, t.schemaname||'.'||t.tablename, has_table_privilege(u.usename,t.tablename,'select') AS user_has_select_permission FROM pg_user u CROSS JOIN pg_tables t WHERE u.usename = 'IAMR:RoleName' AND t.tablename = tableName

Amazon Redshift 쿼리 편집기에서의 SELECT 작업에 대한 자세한 내용은 SELECT를 참조하십시오.

역할에 SELECT 권한을 부여하려면 Amazon Redshift 쿼리 편집기에 다음 명령을 입력합니다.

GRANT SELECT ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO "IAMR:Rolename";

Amazon Redshift 쿼리 편집기에서의 GRANT 작업에 대한 자세한 내용은 GRANT를 참조하십시오.

Amazon S3 데이터 소스를 사용하여 쿼리 실행

Amazon S3 데이터 소스에는 데이터를 찾고 분석하는 데 QuickSight 사용되는 매니페스트 파일이 포함되어 있습니다. QuickSight 콘솔을 통해 JSON 매니페스트 파일을 업로드하거나 S3 버킷의 JSON 파일을 가리키는 URL을 제공할 수 있습니다. URL을 제공하기로 선택한 경우 Amazon S3에 있는 파일에 액세스할 수 있는 권한을 QuickSight 부여받아야 합니다. QuickSight 관리 콘솔을 사용하여 매니페스트 파일 및 매니페스트 파일이 참조하는 데이터에 대한 액세스를 제어할 수 있습니다.

RoleArn속성을 사용하면 계정 전체 역할을 재정의하는 사용자 지정 IAM 역할을 통해 매니페스트 파일과 해당 파일이 참조하는 데이터에 대한 액세스 권한을 부여할 수 있습니다. API를 사용하여 Amazon S3 데이터 소스의 매니페스트 파일에 ARN을 연결합니다. 이렇게 하려면 S3Parameters의 RoleArn속성에 역할 ARN을 포함시키십시오. 확인을 위해 S3 데이터 소스 편집 대화 상자에서 역할 ARN을 볼 수 있습니다. 하지만 Role ARN은 다음 스크린샷과 같이 읽기 전용 필드입니다.

역할 ARN을 표시하는 Amazon S3 데이터 소스 편집 팝업입니다.

시작하려면 Amazon S3 매니페스트 파일을 생성하십시오. 그런 다음 새 Amazon S3 데이터 세트를 생성할 QuickSight 때 Amazon에 업로드하거나 데이터 파일이 포함된 Amazon S3 버킷에 파일을 배치할 수 있습니다. 다음 예제를 보고 매니페스트 파일이 어떤 모습일지 확인해 보십시오.

{ "fileLocations": [ { "URIPrefixes": [ "s3://quicksightUser-run-as-role/data/" ] } ], "globalUploadSettings": { "format": "CSV", "delimiter": ",", "textqualifier": "'", "containsHeader": "true" } }

매니페스트 파일을 만드는 방법에 대한 설명은 Amazon S3 매니페스트 파일에 지원되는 형식을(를) 참조하십시오.

매니페스트 파일을 생성하여 Amazon S3 버킷에 추가하거나 업로드한 후에는 액세스 권한을 부여하는 s3:GetObject IAM의 기존 역할을 생성하거나 업데이트하십시오. QuickSight 다음 예는 API를 사용하여 기존 IAM 역할을 업데이트하는 방법을 보여줍니다. AWS

aws iam put-role-policy \ --role-name QuickSightAccessToS3RunAsRoleBucket \ --policy-name GrantS3RunAsRoleAccess \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::s3-bucket-name" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/manifest.json" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::s3-bucket-name/*" } ] }'

정책에서 s3:GetObject 액세스 권한을 부여한 후에는 Amazon S3 데이터 소스의 매니페스트 파일에 업데이트된 put-role-policy을(를) 적용하는 데이터 소스 생성을 시작할 수 있습니다.

aws quicksight create-data-source --aws-account-id 111222333444 --region us-west-2 --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \ --data-source-id "s3-run-as-role-demo-source" \ --cli-input-json '{ "Name": "S3 with a custom Role", "Type": "S3", "DataSourceParameters": { "S3Parameters": { "RoleArn": "arn:aws:iam::111222333444:role/QuickSightAccessRunAsRoleBucket", "ManifestFileLocation": { "Bucket": "s3-bucket-name", "Key": "manifest.json" } } } }'

권한을 확인한 후에는 새 역할을 생성하거나 기존 역할을 업데이트하여 QuickSight 데이터 소스에서 역할을 사용할 수 있습니다. 이러한 명령을 사용할 때는 AWS 계정 ID를 업데이트하고 사용자 ID와 AWS 리전 일치하도록 해야 합니다.