Saya mengikuti instruksi dari jawaban ini untuk menghasilkan kebijakan bucket S3 berikut:
{
"Id": "Policy1495981680273",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1495981517155",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::surplace-audio",
"Principal": "*"
}
]
}
Saya mendapatkan kembali kesalahan berikut:
Tindakan tidak berlaku untuk sumber daya apa pun dalam pernyataan
Apa yang saya lewatkan dari polis saya?
amazon-web-services
amazon-s3
Philip Kirkbride
sumber
sumber
Jawaban:
Dari dokumen IAM, http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action
Beberapa layanan tidak mengizinkan Anda menentukan tindakan untuk sumber daya individu; sebagai gantinya, tindakan apa pun yang Anda cantumkan di elemen Action atau NotAction berlaku untuk semua sumber daya di layanan itu. Dalam kasus ini, Anda menggunakan wildcard * di elemen Resource.
Dengan informasi ini, resource seharusnya memiliki nilai seperti di bawah ini:
sumber
Hanya menghapus
s3:ListBucket
izin bukanlah solusi yang cukup baik bagi saya, dan mungkin tidak bagi banyak orang lain.Jika Anda menginginkan
s3:ListBucket
izin, Anda hanya perlu memiliki arn polos dari keranjang (tanpa/*
di akhir) karena izin ini berlaku untuk keranjang itu sendiri dan bukan item di dalam keranjang.Seperti yang ditunjukkan di bawah ini, Anda harus memiliki
s3:ListBucket
izin sebagai pernyataan terpisah dari izin yang berkaitan dengan item dalam keranjang sepertis3:GetObject
dans3:PutObject
:sumber
Tindakan Kesalahan tidak berlaku untuk sumber daya apa pun dalam pernyataan
Artinya, tindakan (yang Anda tulis di kebijakan) tidak berlaku untuk sumber daya. Saya mencoba untuk mempublikasikan keranjang saya sehingga siapa pun dapat mengunduh dari keranjang saya. Saya mendapatkan kesalahan sampai saya menghapus ("s3: ListBucket") dari pernyataan saya.
Karena keranjang daftar tidak berlaku di dalam keranjang, sehingga dengan menghapus kebijakan tindakan ini berfungsi dengan baik.
sumber
Baru saja mengalami masalah ini dan menemukan solusi yang lebih singkat bagi mereka yang ingin memiliki ListBucket dan GetObject dalam kebijakan yang sama.
sumber
Principal
diperbolehkan untuk tata bahasa Kebijakan S3.Saya juga menghadapi masalah serupa saat membuat bucket
Saya telah mengubah kode di atas menjadi
tambahkan / * ke nama keranjang Anda, ini akan menyelesaikan masalah
Di sini nama keranjang saya adalah mrt9949
sumber
Dalam kasus saya, solusi untuk kesalahan ini mencoba menghapus beberapa Tindakan yang saya terapkan. Beberapa di antaranya tidak relevan, atau tidak dapat berfungsi dengan sumber daya ini. Dalam hal ini, saya tidak mengizinkannya memasukkan ini:
GetBucketAcl ListBucket ListBucketMultipartUploads
sumber
Anda harus memeriksa pola arn yang ditentukan di bawah tag Resource untuk Policy-
"Resource": "arn: aws: s3 ::: s3mybucketname / *"
Dengan penambahan "/ *" di akhir akan membantu menyelesaikan masalah jika Anda menghadapinya bahkan setelah Kebijakan Akses Publik Anda Dibebaskan untuk Bucket Anda.
sumber
sumber
Anda juga dapat mengkonfigurasi ListBuckets untuk setiap folder, seperti itu
Aturan ini digunakan bersama dengan SES untuk menerima email, tetapi memungkinkan pengguna eksternal untuk melihat file yang dimasukkan ke dalam keranjang oleh SES. Saya mengikuti instruksi dari sini: https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/
Selain itu, Anda harus menentukan awalan sebagai
domain.co/user/
WITH slash di bagian akhir saat menggunakan SDK, jika tidak, akses Anda akan ditolak. semoga bisa membantu siapa sajasumber