ユーザ用ツール

サイト用ツール


aws:s3:endpoint

Amazon S3のVPCエンドポイント(Gateway型)で、VPC内からプライベートアクセス

Amazon S3のエンドポイント(Gateway型)とは

VPC内のEC2などから、S3へのアクセスは、インターネット経由になりますが、
S3のGateway型VPCエンドポイントを作成しますと、インターネット経由ではなく、プライベートサブネット内からアクスセスできるようになります。

aws:s3:s3-vpcendpoint-gateway.png

注意事項

  • Gateway型のS3 VPC Endpoint経由でのアクセスは、同じリージョンのみ可能です。


実現方法

  • VPC内に特別なエンドポイントを作成します。
  • ルートテーブルでS3へアクセスする場合、VPCエンドポイントへ向けるようにします。


VPCエンドポイントの作成手順

  • VPCダッシュボードを開く
  • 「エンドポイント」を選択
  • 「エンドポイントの作成」を選択
サービス S3(com.amazonaws.ap-northeast-1.s3)Gateway
VPC エンドポイントを作成するVPCを選択
Route tables S3エンドポイントのルーティングを追加するルートテーブルを撰択。
Policy Full access


アクセス方法

AWS CLI

Gateway型のS3 VPC Endpoint経由でアクセスする場合「–region リージョン」指定が必要です。

aws s3 ls --region ap-northeast-1 s3://<バケット名>/ 




アクセス制御

S3バケットポリシーによる制御

VPC エンドポイントからのみに制限。管理コンソールも許可しない例
{
  "Id": "VPCe",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VPCe",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::<<S3-BUCKET-NAME>>",
        "arn:aws:s3:::<<S3-BUCKET-NAME>>/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": [
            "<<VPC-ENDPOINT-ID>>"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}
【おすすめ】VPC エンドポイントからのみに制限。管理コンソールを許可する例
{
  "Id": "VPCe",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VPCe",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::<<S3-BUCKET-NAME>>",
        "arn:aws:s3:::<<S3-BUCKET-NAME>>/*"
      ],
      "NotAction": [
        "s3:ListBucket",
        "s3:ListAllMyBuckets"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": [
            "<<MY-ENDPOINT-ID>>"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}




S3 VPCエンドポイントのPolicyによる制御

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": [
                "arn:aws:s3:::Bucket-AAAA/*",
                "arn:aws:s3:::Bucket-AAAA"
            ]
        }
    ]
}
S3 VPCE ポリシーで 特定のAWSアカウントの S3のみアクセスを許可

https://yohei-a.hatenablog.jp/entry/20201222/1608602963

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:ResourceAccount": [
                        "012345678901",
                        "123456789012"
                    ]
                }
            }
        }
    ]
}
【おすすめ】S3 VPCE ポリシーで 特定のAWSアカウントの S3のみアクセスを許可しつつ、Amazon Linux レポジトリも許可

インターネットにアクセスせずに自分の AL1 または AL2 EC2 インスタンスで yum を更新する

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:ResourceAccount": [
                        "012345678901",
                        "123456789012"
                    ]
                }
            }
        },
        {
          "Principal": "*",
          "Action": [
            "s3:GetObject"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:s3:::amazonlinux.*.amazonaws.com/*",
            "arn:aws:s3:::amazonlinux-2-repos-*/*"
          ]
        }
    ]
}




IAMユーザのポリシーによる制限

【重要】IAMユーザに適用するポリシーで、IP制限だけではなく、VPC Endpointからのアクセスも許可

https://iret.media/62629

以下のみに限定する設定

  • アカウントAのVPCエンドポイントを経由している
  • 特定のパブリックIP
  • AWSのサービス
{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "StringNotEquals": {
                "aws:SourceVpce": [
                    "vpce-xxxxxxx"
                ]
            },
            "NotIpAddress": {
                "aws:SourceIp": [
                    "x.x.x.x/32"
                ]
            },
            "Bool": {
                "aws:ViaAWSService": "false"
            }
        }
    }
}




参考

aws/s3/endpoint.txt · 最終更新: 2023/12/11 00:44 by kurihara

ページ用ツール