Amazon S3 バケット内の特定のフォルダへのユーザーアクセス権限をユーザーに付与するには、どうすればよいですか?

最終更新日: 2019 年 4 月 17 日

Amazon Simple Storage Service (Amazon S3) バケット内の特定のフォルダへのアクセス権限を AWS Identity and Access Management (IAM) ユーザーに付与したいのですが、どうすればできますか? 

解決方法

IAM ポリシーを使用して、フォルダへのユーザーアクセス権限を許可し、ユーザーが当該フォルダに対してどの Amazon S3 アクションを実行できるか指定します。たとえば、以下の IAM ポリシーにより、ユーザーは Amazon S3 コンソールを 使用して、awsexamplebucket/media フォルダからオブジェクトをダウンロードできるようになります。このポリシーには以下のステートメントが含まれています。

  • AllowStatement1 により、ユーザーは自分の AWS アカウントに属するバケットを一覧表示できます。ユーザーがコンソールを使用して、バケットに移動できるようにするには、この権限が必要です。
  • AllowStatement2A により、ユーザーは awsexamplebucket 内のフォルダを一覧表示できますが、コンソールを使用してフォルダに移動できるようになっている必要があります。このステートメントは、コンソールを使用して、プレフィックス media/ を検索することもできます。
  • AllowStatement3 により、ユーザーは awsexamplebucket/media 内のコンテンツを一覧表示できます。
  • AllowStatement4A により、ユーザーはオブジェクト (s3:GetObject) をフォルダ awsexamplebucket/media からダウンロードできます。
{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Sid": "AllowStatement1",
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
  {
     "Sid": "AllowStatement2A",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringEquals":{"s3:prefix":["","media"]}}
    },
  {
     "Sid": "AllowStatement3",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringLike":{"s3:prefix":["media/*"]}}
    },    
   {
     "Sid": "AllowStatement4A",
     "Effect": "Allow",
     "Action": ["s3:GetObject"],
     "Resource": ["arn:aws:s3:::awsexamplebucket/media/*"]
   }
 ]
}

別の例として、以下の IAM ポリシーでは、フォルダawsexamplebucket/media 内のすべての Amazon S3 アクションへのアクセス権限をユーザーに付与しますが、その方法はちょうど AWS コマンドラインインターフェイス (AWS CLI) か Amazon S3 API を選ぶように、コンソールを使用するか、プログラムによる方法を使用するかのいずれかになります。前の IAM ポリシーとの違いは次のとおりです。

  • AllowStatement2B に含まれている "s3:delimiter":["/"] は、オブジェクトへのパス内のフォルダの区切り記号としてフォワードスラッシュ (/) を指定しています。ユーザーが AWS CLI または Amazon S3 API を使用してリクエストする場合は、区切り文字を指定するのがベストプラクティスです。
  • AllowStatement4B により、ユーザーは awsexamplebucket/media フォルダでオブジェクトレベルのアクションを実行できます。
{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Sid": "AllowStatement1",
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
  {
     "Sid": "AllowStatement2B",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringEquals":{"s3:prefix":["","media"],"s3:delimiter":["/"]}}
    },
  {
     "Sid": "AllowStatement3",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringLike":{"s3:prefix":["media/*"]}}
    },
   {
     "Sid": "AllowStatement4B",
     "Effect": "Allow",
     "Action": ["s3:*"],
     "Resource": ["arn:aws:s3:::awsexamplebucket/media/*"]
   }
 ]
}

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

改善できることはありますか?


さらにサポートが必要な場合