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

最終更新日: 2020 年 12 月 23 日

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

簡単な説明

ユーザーの Amazon S3 コンソールのアクセス権を、特定のバケットまたはフォルダ (プレフィックス) に制限するには、そのユーザーの AWS Identity and Access Management (IAM) のアクセス許可を変更します。IAM のアクセス許可を変更するには、以下の手順を実行します。

1.    s3:ListAllMyBuckets アクションへのアクセス許可を削除します。

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

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

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

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

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

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

解決方法

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

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

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

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

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

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

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

以下のサンプルポリシーは、S3 バケットへのアクセス権についてのものです。このポリシーでは、ユーザーが、DOC-EXAMPLE-BUCKET に対してのみ、s3:ListBucket、s3:PutObject、および s3:GetObject アクションを実行することを許可しています。

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

次のサンプルポリシーは、フォルダへのアクセス権を付与するものです。このポリシーでは、ユーザーが、DOC-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:::DOC-EXAMPLE-BUCKET/folder1/folder2/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket*"
            ],
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "folder1/folder2/*"
                    ]
                }
            }
        }
    ]
}

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

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

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

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

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


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


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