🙆‍♀️

AWS S3 バケットポリシーを使用して VPC エンドポイントからのアクセスを制限

2024/06/18に公開

はじめに

AWS S3 (Simple Storage Service) は、スケーラブルで信頼性の高いオブジェクトストレージを提供するサービスです。セキュリティのためにS3バケットへのアクセスを特定のVPC(Virtual Private Cloud)エンドポイントに制限する方法について説明します。

解決策

S3バケットポリシーを使用して、特定のVPCエンドポイントからのアクセスのみを許可する方法を実装します。aws:SourceVpce 条件キーを使用して、許可するVPCエンドポイントを指定し、その他のアクセスを拒否します。

ポリシーの実装

以下に、複数の VPC エンドポイントを指定するためのS3バケットポリシーの例を示します。このポリシーは、指定されたVPCエンドポイントからのアクセスのみを許可し、それ以外のアクセスを拒否します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::your-bucket-name"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpce": [
                        "vpce-1234567890abcdef0",
                        "vpce-234567890abcdef12",
                        "vpce-34567890abcdef123"
                    ]
                }
            }
        }
    ]
}

ポリシーの説明

  • Effect Deny — デフォルトで全てのアクセスを拒否します。この設定により、条件に一致しない場合はアクセスが拒否されます。
  • Principal * — 全てのユーザーを対象としています。
  • Action s3:* — S3 バケットに対する全てのアクションを対象とします。
  • Resource arn:aws:s3:::your-bucket-nameのバケット名を対象とします。
  • Condition StringNotEqualsaws:SourceVpce 条件キーを使用し、指定された VPCエンドポイントID以外からのアクセスを拒否します。

実装手順

  1. S3 バケットの作成

    • AWS マネジメントコンソールにログインし、S3 サービスを選択します。
    • 「バケットの作成」をクリックし、バケットを作成します。
  2. バケットポリシーの設定

    • 作成したバケットを選択し、「アクセス許可」タブをクリックします。
    • 「バケットポリシー」の「編集」をクリックし、上記のポリシーを入力します。
    • your-bucket-name を実際のバケット名に置き換えます。
    • vpce-1234567890abcdef0などのVPCエンドポイントIDを適切なIDに置き換えます。
    • ポリシーを保存します。

まとめ

AWS S3バケットポリシーを使用して、特定の VPC エンドポイントからのアクセスのみを許可する方法について説明しました。この設定により、S3バケットへのアクセスをセキュアに制御し、ネットワークセキュリティを強化することができます。

Discussion