IAM을 사용하여 Athena 리소스에 대한 액세스를 제한하려면 어떻게 해야 합니까?

3분 분량
0

AWS Identity and Access Management(IAM)를 사용하여 Amazon Athena 쿼리 및 리소스에 대한 액세스를 제한하려고 합니다.

간략한 설명

IAM 정책엔터티(사용자 또는 역할)를 사용하여 쿼리 및 AWS 서비스와 같은 Athena 리소스에 대한 액세스를 제한하거나 허용할 수 있습니다.

참고: IAM의 보안 모범 사례를 따라야 합니다.

해결 방법

다음 지침에 따라 사용 사례에 맞는 Athena 권한을 확인하거나 제공하십시오.

Amazon S3 버킷 위치 액세스

Athena 쿼리는 Amazon Simple Storage Service(Amazon S3) 소스 데이터 버킷과 쿼리 결과 버킷 위치에 액세스할 수 있어야 합니다.

S3 버킷 위치에 대한 액세스를 제공하는 IAM 정책의 예:

 {
            "Sid": "BaseQueryResultsPermissions",
            "Effect": "Allow",
            "Action": [
               "s3:GetBucketLocation",
               "s3:GetObject",
               "s3:ListBucket",
               "s3:ListBucketMultipartUploads",
               "s3:ListMultipartUploadParts",
               "s3:AbortMultipartUpload",
               "s3:CreateBucket",
               "s3:PutObject",
               "s3:PutBucketPublicAccessBlock"
            ],
            "Resource": [
               "arn:aws:s3:::Query-Result-Bucket-Name",
               "arn:aws:s3:::Query-Result-Bucket-Name/"
            ]
        }

참고: Query-Result-Bucket-Name을 버킷 이름으로 바꾸십시오.

쿼리에 S3 소스 및 쿼리 결과 버킷에 대한 액세스 권한이 없는 경우, Access Denied 오류가 발생할 수 있습니다. 자세한 내용은 Amazon Athena에서 쿼리를 실행할 때 “Access Denied” 오류가 발생하는 이유는 무엇입니까?를 참조하십시오.

Amazon S3 버킷에 대한 권한

Athena 쿼리에는 Amazon S3 버킷에 대한 권한도 있어야 합니다.

S3 버킷에 대한 권한을 부여하는 IAM 정책의 예:

{
            "Sid": "BaseAthenaExamplesPermissions",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::Glue-Database-Warehouse-Location",
                "arn:aws:s3:::Glue-Database-Warehouse-Location/",
                "arn:aws:s3:::Glue-Table-Location",
                "arn:aws:s3:::Glue-Table-Location/"
            ]
        },
        {
            "Sid": "BaseS3BucketPermissions",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:ListAllMyBuckets"
            ],
            "Resource": [
                ""
            ]
        }

참고: Glue-Database-Warehouse-LocationGlue-Table-Location을 원하는 변수로 바꾸십시오.

AWS Key Management Service(AWS KMS) 키를 사용하여 암호화를 제공하는 경우, 지원되는 Amazon S3 암호화 옵션을 참조하십시오.

Athena 작업 그룹 액세스

작업 그룹을 사용하여 쿼리 액세스 및 비용을 제어할 수 있습니다. Athena 쿼리의 작업 그룹에 액세스를 제공하는 데 사용할 수 있는 IAM 정책의 예를 확인하십시오.

Glue 데이터 카탈로그 데이터베이스 및 테이블 액세스

AWS Glue 데이터 카탈로그의 데이터베이스 및 테이블에 대한 세분화된 액세스 제어를 사용할 수 있습니다.

데이터 카탈로그 테이블에 대한 액세스를 제공하는 정책의 예:

{
               "Effect": "Allow",
               "Action": [
                  "glue:GetDatabase",
                  "glue:GetDatabases",
                  "glue:GetTable",
                  "glue:DeleteTable",
                  "glue:GetPartitions",
                  "glue:GetPartition",
                  "glue:DeletePartition",
                  "glue:BatchCreatePartition"
               ],
               "Resource": [
                 "arn:aws:glue:us-east-1:123456789012:catalog",
                 "arn:aws:glue:us-east-1:123456789012:database/example_db",
                 "arn:aws:glue:us-east-1:123456789012:table/example_db/test"
               ]
             },
             {
                "Effect": "Deny",
                "Action": "glue:*",
                "NotResource": [
                  "arn:aws:glue:us-east-1:123456789012:database/example_db",
                  "arn:aws:glue:us-east-1:123456789012:table/example_db/test"
                ]
             }

참고: example_dbexample_db/test를 원하는 변수로 바꾸십시오.

데이터 카탈로그가 암호화된 경우 다음 작업을 추가해야 합니다.

{
"Version": "2012-10-17",
 "Statement": {
"Effect": "Allow",
     "Action": [
           "kms:GenerateDataKey",
           "kms:Decrypt",  
           "kms:Encrypt"
      ],
     "Resource": "arn of the key used to encrypt the catalog"
   }
}

자세한 내용은 테이블 및 데이터베이스에 대한 세분화된 권한의 예를 참조하십시오.

관련 정보

Athena의 자격 증명 및 액세스 관리

Athena에서 Amazon S3 버킷에 대한 교차 계정 액세스

AWS 공식
AWS 공식업데이트됨 일 년 전