ユーザーに Amazon Simple Storage Service (Amazon S3) のコンソールアクセス権を、バケットまたはフォルダー (プレフィックス) に付与したいと考えています。ただし、アカウント内の他のバケットやバケット内の他のフォルダーをユーザーに見せたくありません。
簡潔な説明
ユーザーの AWS Identity and Access Management (IAM) 権限を変更して、ユーザーの Amazon S3 コンソールアクセスを特定のバケットまたはフォルダ (プレフィックス) に制限します。
1. [s3:ListAllMyBuckets] アクションへの権限を削除します。
2. [s3: ListBucket] に、ユーザーにアクセスさせたいバケットまたはフォルダーにのみ権限を追加します。ユーザーがバケットまたはフォルダーからオブジェクトをアップロードおよびダウンロードできるようにするには [s3:PutObject] と [s3:GetObject] も含める必要があります。
解決方法
1. IAMコンソールを開きます。
2. アクセスを制限したい IAM ユーザーまたはロールを選択します。
3. IAM ユーザーまたはロールの [権限] タブで各ポリシーを展開すると、その JSON ポリシードキュメントが表示されます。
4. JSON ポリシードキュメントで、[s3: ListAllMyBuckets] アクションまたは [** s3:\ ***] アクション (すべての S3 アクション) に対する権限をユーザーに付与するポリシーを検索します。
5. ポリシーを変更して、[s3:ListAllMyBuckets] アクションに対する権限を削除してください。
**注記:**アタッチされたユーザーポリシーで [s3:*] または「\ *」リソースによる [フル管理] アクセスが許可されている場合、ポリシーには [s3:ListAllMyBuckets] 権限が含まれます。「\ *」リソースを削除します。次に、次のサンプルポリシーのいずれかを使用してください。
6. [s3: ListBucket] には、ユーザーにコンソールからアクセスさせたいバケットまたはフォルダーにのみ権限を追加します。
次のポリシー例は、S3 バケットへのアクセスに関するものです。
{
"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] に対してのみ、[s3: ListBucket]、[s3:PutObject]、および [s3:GetObject] アクションを実行できます。
次のポリシー例では、フォルダーへのアクセス権を付与します。このポリシーにより、ユーザーは DOC-EXAMPLE-BUCKET 内のフォルダー 2 でのみ [s3:ListBucket]、[s3:ListBucketVersions]、[s3:PutObject]、[s3:GetObject]、および[s3:GetObjectVersion] アクションを実行できます。[s3:ListBucketVersions]、[s3:GetObjectVersion]、[s3: GetBucketVersioning] は、バケットにバージョニングがあり、ユーザーに以前のバージョンのオブジェクトへのアクセスを許可する場合にのみ使用してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUsersToAccessFolder2Only",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/folder1/folder2/*"
]
},
{
"Sid": "AllowListOfBucketOnlyOnPrefix",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"folder1/folder2/*"
]
}
}
},
{
"Sid": "AllowListVersionOnObjectDetails",
"Effect": "Allow",
"Action": [
"s3:GetBucketVersioning"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
]
}
]
}
7. S3 バケットまたはフォルダーへの直接のコンソールリンクをユーザーに提供します。
警告: これらの権限を変更すると、ユーザーがメインの Amazon 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/
関連情報
ユーザーポリシーの例