スキップしてコンテンツを表示

IAM を使用して Athena リソースへのアクセスを制限する方法を教えてください。

所要時間2分
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 でクエリを実行すると、アクセス拒否エラーが発生する理由を教えてください」を参照してください。

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-Location および Glue-Table-Location は、実際の変数に置き換えてください。

AWS Key Management Service (AWS KMS) キーを使用して暗号化を行う場合は、「サポートされている Amazon S3 暗号化オプション」を参照してください。

Athena ワークグループへのアクセス

ワークグループを使用して、クエリのアクセスとコストを制御できます。Athena クエリのワークグループへのアクセスを許可するために使用できる IAM ポリシーの例をご覧ください。

Glue Data Catalog データベースとテーブルへのアクセス

AWS Glue データカタログ内のデータベースとテーブルに、詳細なアクセス制御を使用できます。

Data Catalog テーブルへのアクセスを許可するポリシーの例を次に示します。

{
               "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_db および example_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 における ID およびアクセス管理

Athena の Amazon S3 バケットへのクロスアカウントアクセス

AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ