特定のバケットに対する Amazon S3 コンソールのアクセス許可をユーザーに付与するにはどうすればよいですか?

最終更新日: 2020 年 8 月 6 日

バケットもしくはフォルダー(プレフィックス)における、Amazon Simple Storage Service (Amazon S3) のコンソールアクセス許可を、ユーザーに付与したいと思います。ただし、アカウント内の他のバケットや、バケット内の他のフォルダを、そのユーザーが表示できないようにしたいと考えています。ユーザーのコンソールアクセス許可を、特定のバケットもしくはフォルダーのみに制限するには、どうすればよいですか?

簡単な説明

ユーザーの Amazon S3 コンソールアクセス許可を、特定のバケットもしくはフォルダー(プレフィックス)のみに制限するには、そのユーザーに関する AWS Identity and Access Management (IAM) のアクセス許可において次の点を変更します。

  1. s3:ListAllMyBuckets アクションへのアクセス許可を削除します。
  2. ユーザーにアクセスさせたいバケットもしくはフォルダーのみに、s3:ListBucket アクセス許可を追加します。
    注: ユーザーに、バケットまたはフォルダとの間でのオブジェクトのアップロードおよびダウンロードを許可するには、s3:PutObjects3:GetObject も含める必要があります。

警告: これらのアクセス許可を変更した後、ユーザーがメインの Amazon S3 コンソールにアクセスすると、アクセス拒否エラーが発生します。ユーザーは、バケットまたはフォルダへの直接コンソールリンクを使用して、バケットにアクセスする必要があります。バケットへの直接コンソールリンクは、次のようになります。

https://s3.console.aws.amazon.com/s3/buckets/AWSDOC-EXAMPLE-BUCKET/

例として、フォルダ folder2 に対する直接コンソールリンクは、次のようになります。

https://s3.console.aws.amazon.com/s3/buckets/AWSDOC-EXAMPLE-BUCKET/folder1/folder2/

注: Amazon S3 では、ファイル階層ではなくフラットなデータ構造が使用されます。コンソールでは、ファイルのグループ化や整理を行うために、フォルダの概念がサポートされています。

解決方法

特定のバケットもしくはフォルダーのみにコンソールアクセスが可能なように、ユーザーの IAM アクセス許可を更新するためには、以下の手順に従ってください。

1.    IAM コンソールを開きます。

2.    コンソールから、特定のバケットにのみアクセスさせる IAM ユーザーまたはロールを開きます。

3.    IAM ユーザーまたはロールの [アクセス許可] タブで各ポリシーを展開し、その JSON ポリシードキュメントを表示します。

4.    JSON ポリシードキュメント内で、s3:ListAllMyBuckets アクション、または、s3:* アクション(すべての S3 アクション)に対する許可をユーザーに付与しているポリシーを探します。

5.    ポリシーを変更し、s3:ListAllMyBuckets アクションに対する許可を削除します。

6.    次に、ユーザーにコンソールからアクセスさせたいバケットもしくはフォルダーのみに、s3:ListBucket のアクセス許可を追加します。

次に、バケットのアクセス用のポリシー例を示します。このポリシーでは、AWSDOC-EXAMPLE-BUCKET に対してのみ、ユーザーが s3:ListBucket、s3:PutObject、および s3:GetObject アクションを実行することを許可しています。

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket"
         ],
         "Resource":"arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject"
         ],
         "Resource":"arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      }
   ]
}

次のポリシー例は、フォルダへのアクセス用です。このポリシーでは、AWSDOC-EXAMPLE-BUCKET にある folder2 でのみ、s3:ListBucket、s3:PutObject、および s3:GetObject アクションの実行をユーザーに許可します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUsersToAccessFolder2Only",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject*",
                "s3:PutObject*"
            ],
            "Resource": [
                "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/folder1/folder2/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket*"
            ],
            "Resource": [
                "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "folder1/folder2/*"
                    ]
                }
            }
        }
    ]
}

7.    バケットもしくはフォルダーへの直接コンソールリンクをユーザーに提供します。バケットへの直接コンソールリンクは、次のようになります。

https://s3.console.aws.amazon.com/s3/buckets/AWSDOC-EXAMPLE-BUCKET/

フォルダへの直接コンソールリンクは、次のようになります。 

https://s3.console.aws.amazon.com/s3/buckets/AWSDOC-EXAMPLE-BUCKET/folder1/folder2/

ユーザーが、コンソールからバケットもしくはフォルダーにアクセスするためには、直接リンクを使用する必要があります。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?