2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

S3でアクセス元を制限する

Last updated at Posted at 2019-06-09

はじめに

まずS3のバケットに対して、指定したIPからのみアクセス許可するIAMポリシーを紹介します。VPCプライベートサブネットからのアクセスを許可する場合は、NATゲートウェイのグローバルIPを指定するのではなく、「VPCエンドポイント」を指定する方が良いため、こちらの設定を紹介します。

設定方法

IPアドレスによるアクセス制限

グローバルIPを指定したアクセス制限のIAMポリシーの例です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "XXXXXXXXXX",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::<バケット名>",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "<IPアドレス>/32"
                }
            }
        },
        {
            "Sid": "XXXXXXXXXX",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::<バケット名>/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "<IPアドレス>/32"
                }
            }
        }
    ]
}

VPCエンドポイントによるアクセス制限

VPCプライベートサブネットからS3のバケットにアクセスする場合でも、NATゲートウェイを使用して、上記の設定でNATのグローバルIPを指定することも可能です。
しかしVPCプライベートサブネットからのアクセス制限をする場合、NATゲートウェイ経由とするのではなく、VPCエンドポイントを使用することをおすすめします。

メリットとして、インターネット経由でのアクセスからではなくなるためセキュアとなります。さらにNATを通過しないため、NATのネットワーク負荷が軽減させることができます。
またインターネット経由で接続するよりも料金も安く、デメリットは特にないです。
注意点としては、VPCエンドポイントを経由したアクセスにする場合、S3のバケットとVPCが同じリージョンである必要があるため気をつけてください。

  1. VPCエンドポイントを、プライベートサブネット上に作成します。
    作成はVPCのメニューから可能です。

  2. IAMポリシーの設定
    IPアドレスを指定するのでなく、VPCエンドポイントIDを指定して、アクセス制限をすることが可能です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "xxxxxxxxxx",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::<バケット名>",
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpce": "<VPCエンドポイントID>"
                }
            }
        },
        {
            "Sid": "xxxxxxxxxx",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::<バケット名>/*",
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpce": "<VPCエンドポイントID>"
                }
            }
        }
    ]
}

参考

https://qiita.com/flat-8-kiki/items/5392d931d8e34a4e2ae4
https://dev.classmethod.jp/cloud/vpc-endpoint-for-s3/
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/example-bucket-policies-vpc-endpoint.html

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?