LoginSignup
0
0

More than 1 year has passed since last update.

GlueジョブがS3バケットをread/writeするときのポリシー

Posted at

Glueジョブのアクセス制御について

Glueジョブは定義時にIAMロールを指定するのでジョブ実行時はIAMロールのポリシーに従ってアクセス制御が行われます。
IAMではAWS管理のAWSGlueServiceRoleというポリシーがあります。このポリシーはGlueジョブ実行に必要となる一連のアクションを許可しているため、基本的にはこのポリシーをGlueジョブで使用するIAMロールにアタッチすることが多いかと思います。
ただし、Glueジョブでよく行われる処理であるS3バケットのデータを読み込み、加工を行ってS3バケットに書き込みを行うというケースを考えた場合にAWSGlueServiceRoleポリシーだけでは不十分で、入出力データがあるS3バケットに対する権限が別途必要になってきます。
図示すると以下のような構成の時にGlueジョブのIAMロールに追加するポリシーを整理してみました。

スクリーンショット 2023-03-08 9.37.54.png

S3バケットにアクセスするときのポリシー

GlueジョブはApache Sparkが内部的には動作しており、S3へのアクセスはS3Aが使用されます。
Apache HadoopのドキュメントにS3AでRead/Writeするときに必要なアクションが記載されているので、これらのアクションを許可すれば良いことがわかります。
以下にGlueジョブのIAMロールに追加するポリシー例を記載します。

{    
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:Get*",
                "s3:Delete*",
                "s3:Put*",
                "s3:AbortMultipartUpload"
            ],
            "Resource": [
                "arn:aws:s3:::input-000011112222-bucket",
                "arn:aws:s3:::input-000011112222-bucket/*",
                "arn:aws:s3:::output-000011112222-bucket",
                "arn:aws:s3:::output-000011112222-bucket/*",
                "arn:aws:s3:::aws-glue-assets-000011112222-us-west-2",
                "arn:aws:s3:::aws-glue-assets-000011112222-us-west-2/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:GetDataAccess"
            ],
            "Resource": "*"
        }
    ]
}

ポリシー内容の補足をすると

  • Apache Hadoopのドキュメントに記載のread/writeアクションをそのまま記載
  • S3がKMS暗号化を行なっている場合はKMSのアクションも別途必要になってくると思います
  • Resourceに関しては入出力対象のバケットとGlueのアセットを管理するバケットを記載
  • Lake Formationを使用している環境に合わせてLake Formationのアクションを記載

お使いの環境に合わせて上記ポリシーを変更して利用いただけると良いかと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0