Amazon S3バケットの特定のフォルダーにだけアクセスを許可する


AWS Amazon S3 バケット内の特定のフォルダーにだけアクセスを許可する方法について

Amazon S3バケットの特定のフォルダーにだけアクセスを許可する

本記事では、IAM ポリシーを使用して、AWS Amazon S3 バケット内の特定のフォルダーにだけアクセスを許可する方法について書いていきます。

<IAM ユーザーの作成>
Amazon S3 バケットへアクセスする際に使用する認証情報を作成します。
AWS マネジメント コンソールで IAM ユーザーを作成し、アクセス キーとシークレット キーを発行します。

<IAM ポリシーの作成>
Amazon S3 バケットへのアクセス権限を定義する IAM ポリシーを作成します。
以下のようなインライン ポリシーを作成し、先程の IAM ユーザーに付与します。

例として、my-bucket バケット配下の、Suzuki フォルダー内のみ(サブフォルダーを含む)アクセスを許可する例を示します。

バケット名(my-bucket)、およびフォルダー名(Suzuki)は適宜置き換えてください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUserToSeeBucketListInTheConsole",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "AllowRootAndSuzukiListingOfMyBucket",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::my-bucket"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "",
                        "Suzuki/"
                    ],
                    "s3:delimiter": [
                        "/"
                    ]
                }
            }
        },
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::my-bucket"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "Suzuki/*"
                    ]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInUserFolder",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket/Suzuki/*"
            ]
        }
    ]
}


これで、AWS Amazon S3 バケット内の特定のフォルダーにだけアクセスを許可することができました。

なお、ポリシー変数 ${aws:username} を使用することで、固定のフォルダー名(Suzuki)の代わりに、任意のユーザー名を指定することも可能です。

※ StringLike のみがアスタリスク (*) をワイルドカードとして認識します。StringEquals はアスタリスク (*) をワイルドカードとして認識しませんので、ご注意ください。



Amazon S3のアクセスに必要な最低限のIAMポリシーの設定

robocopyでAmazon S3にバックアップする時のオプション指定

インターネットに接続されていない PC でもライセンス認証は可能ですか?

Google Cloud Storage(GCS)をWindowsにマウントする

新しいPCにライセンスを移行することは可能ですか?

共有リンク(Amazon S3署名付きURL)へのアクセスを禁止する

マウントしたドライブにアクセスすると「デバイスの準備ができていません」というエラーが表示される

Amazon S3バケットをマウントしたドライブに共有アクセス許可を設定する

AWS Amazon S3バケットへのアクセスにIP制限をかける

特定のAmazon S3バケットにだけアクセスを許可する

AWS Amazon S3バケットをWindowsにマウントする

Amazon S3にアクセスするためのAWSの設定方法

JPCYBER S3 Driveのインストール方法