ECS: Sahip olmayan nesne kullanıcısı için yüklenen nesneleri indiremeyen salt okunur Kova ACL
摘要: Bu Knowledge Base makalesinde, nesne sahibi olmayan kullanıcılar için klasör Erişim Denetimi Listeleri (ACL'ler) kavramı S3 Tarayıcıda salt okunur bir perspektiften açıklanmaktadır.
症狀
Sahibi olmayan nesne kullanıcısı, kova ACL'si kullanılarak kovaya salt okunur olarak eklendi.
Kova sahibi olmayan bir nesne kullanıcısı, kova ACL'si oluşturulmadan önce nesne kovası sahibi kullanıcı tarafından yüklenen nesneleri indiremez.
Sorun akışı aşağıdaki gibidir:
- Kova, nesne sahibi kullanıcısı atanmış olarak oluşturuldu.
- Bazı dosyalar, nesne sahibi kullanıcı tarafından kovaya yüklendi.
- Sahibi olmayan nesne kullanıcısı, kova ACL'si kullanılarak kovaya salt okunur olarak eklendi.
- Sahibi olmayan nesne kullanıcısı, kovaya erişmeye çalışırken yeni yüklenen nesneleri listeleyebilir ve indirebilir ancak salt okunur kova ACL'sinden önce yüklenen nesneleri indiremez. Nesneler üzerindeki kullanıcı haklarının, ECS kullanıcı arayüzündeki yapılandırmaya göre S3 Browser üzerinden ayarlanmadığını görebiliriz.
Nesnenin sahibi olmayan kullanıcı S3 Browser kullanarak bir nesneye tıkladığında oluşan hata aşağıdaki gibidir: (AccessDenied: Erişim Reddedildi):
Aşağıda nesne sahibi kullanıcısı (a_s3user) ve sahibi olmayan nesne kullanıcısı (a_s3test) için kova ACL kurulumu verilmiştir:
原因
S3 izinleri, kova veya nesne düzeyinde ayarlanabilir. ECS, uygulanan politikanın türüne bağlı olarak AWS S3 ile aynı ilkelere bağlıdır. Kova seviyesinde veya Nesne seviyesinde izin verilen işlem tiplerini belirler.
- ECS kova düzeyinde READ ve READ ACL verildiğinde kova sahibi olmayan kişi yalnızca kovadaki nesneleri listeleyecektir, kova sahibi olmayan kişi kovadan veri indiremez
- Bir kovaya nesne yazarken, yalnızca nesneyi yazan kullanıcı okuma iznine sahiptir. Diğer kullanıcıların nesneleri okuyabilmesi için, sahibin kullanıcılara açıkça izin vermesi gerekir.
- Bucket sahibi olmayanlara izin vermek için S3 kova politikalarını kullanmamız gerekir
Atanabilen ACL izinleri aşağıdaki tabloda verilmiştir. Geçerli izinler kovanın türüne bağlıdır.
| ACL | Permission (İzin) | ||
|---|---|---|---|
| Read | Kullanıcının kovadaki nesneleri listelemesini sağlar | ||
| Read ACL | Kullanıcının grup ACL'sini okumasına olanak sağlar | ||
| Şunu: | Kullanıcının kovadaki herhangi bir nesneyi oluşturmasına veya güncellemesine izin verir | ||
| ACL yazın. | Kullanıcının grup için ACL yazmasına olanak sağlar | ||
| Execute | Dosya sistemi olarak erişildiğinde yürütme iznini ayarlar: Nesneye ECS nesne protokolleri kullanılarak erişildiğinde bu iznin bir etkisi yoktur. | ||
| Full Control | Kullanıcının Read, Write, Read ACL ve Write ACL işlemlerini yapmasına olanak sağlar.
|
||
| Privileged Write | Kullanıcının normal yazma izni olmadığında kullanıcının bir kovaya veya nesneye yazma işlemi gerçekleştirmesine olanak sağlar - CAS kovaları için gereklidir | ||
| Delete | Kullanıcının kovaları ve nesneleri silmesine izin verir - CAS kovaları için gereklidir | ||
| None | Kullanıcının bucket üzerinde ayrıcalığı yoktur. |
AWS , birden fazla Politika Türünü destekler.
- Erişim denetim listeleri (ACL'ler)
- Kimlik tabanlı politikalar
- İzin sınırları
- Kaynak tabanlı politikalar
Aşağıdaki tabloda Amazon S3'ün ACL'de desteklediği izin kümeleri listelenmektedir. ACL izinleri kümesi, nesne ACL'si ve grup ACL'si için aynıdır. Ancak bağlama bağlı olarak (kova ACL'si veya nesne ACL'si) bu ACL izinleri belirli kovalar veya nesne işlemleri için izinler verir. Tablo, izinler listeler ve nesneler ve kovalar bağlamında ne anlama geldiklerini açıklar.
| Permission (İzin) | Bir kovaya izin verildiğinde | Bir nesneye verildiğinde |
|---|---|---|
READ |
İzin verilenin kovadaki nesneleri listelemesini sağlar | İzin verilenin nesne verilerini ve meta verilerini okumasını sağlar |
WRITE |
İzin verilene kovadaki herhangi bir nesneyi oluşturma, üzerine yazma ve silme izni verir | Geçerli değil |
READ_ACP |
İzin alanın grup ACL'sini okumasını sağlar | İzin verilenin nesne ACL'sini okumasına izin verir |
WRITE_ACP |
İzin verilenin geçerli kova için ACL'yi yazmasına izin verir | İzin verilenin ilgili nesne için ACL yazmasına izin verir |
FULL_CONTROL |
Verilen tarafa kovada OKUMA, YAZMA, READ_ACP ve WRITE_ACP izinlerini verir | Verilen tarafa nesne üzerinde OKUMA, READ_ACP ve WRITE_ACP izinlerini verir |
Amazon S3 Belgeleri
Aşağıdaki tabloda, her ACL izninin ilgili erişim politikası izinleriyle nasıl eşlendiği gösterilmektedir. Gördüğünüz gibi erişim politikası, ACL'den daha fazla izne izin veriyor. ACL'leri öncelikle dosya sistemi izinlerine benzer şekilde temel okuma/yazma izinleri vermek için kullanırsınız. ACL'nin ne zaman kullanılacağı hakkında daha fazla bilgi için Kullanılabilir erişim politikası seçeneklerini kullanma yönergeleri başlıklı makaleye bakın.
| ACL izni | Bir kovada ACL izni verildiğinde karşılık gelen erişim politikası izinleri | Bir nesnede ACL izni verildiğinde karşılık gelen erişim politikası izinleri |
|---|---|---|
READ |
s3:ListBucket, s3:ListBucketVersionsve s3:ListBucketMultipartUploads |
s3:GetObject, s3:GetObjectVersionve s3:GetObjectTorrent |
WRITE |
Ayrıca, izin alan kova sahibi olduğunda, izin veren |
Geçerli değil |
READ_ACP |
s3:GetBucketAcl |
s3:GetObjectAcl ve s3:GetObjectVersionAcl |
WRITE_ACP |
s3:PutBucketAcl |
s3:PutObjectAcl ve s3:PutObjectVersionAcl |
FULL_CONTROL |
Vermeye eşdeğer READ, WRITE, READ_ACPve WRITE_ACP ACL izinleri - Bu ACL izni, karşılık gelen erişim politikası izinlerinin bir bileşimiyle eşlenir. |
Vermeye eşdeğer READ, READ_ACPve WRITE_ACP ACL izinleri. Bu nedenle, bu ACL izni karşılık gelen erişim ilkesi izinlerinin bir birleşimiyle eşlenir. |
解析度
Seçenek 1:
Kova İlkelerini kullanma başlıklı makaleye ECS Veri Erişim Rehberi. Tüm eylemlere izin veren veya hiç izin vermeyen ACL'lerin aksine, erişim ilkeleri belirli kullanıcılara veya tüm kullanıcılara belirli eylemler için koşullu ve parçalı izinler sağlar. Politika koşulları, koşulla eşleşen çeşitli nesnelere izin atamak için kullanılabilir. Bu, yeni yüklenen nesnelere otomatik olarak izinler atamak için kullanılabilir.
AWS S3'e başvurun:
https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html
https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.htmlUI-> Manage-Bucket>-> Edit bucket policy kısmından politika düzenleyicisine şuna benzer bir şey koyun:
{
"Version": "2012-10-17",
"Id": "Policy1593674317613",
"Statement": [
{
"Action": [
"s3:GetObject"
],
"Resource": "bucket_name/*",
"Effect": "Allow",
"Principal": "read-only_user",
"Sid": "Stmt1593673962638"
}
]
} Eylemin Gerçekleştiği: "S3:GetObject", nesneleri indirebilmesine izin verilen eylemdir.
Nerede Etkisi: allow"
where resource": bucket_name/*", grup adıdır.
Nerede Müdür": "read-only_user", Bucket Owner olmayan bir kullanıcıdır.
Seçenek 2:
Nesne sahibiyle birlikte S3 Browser'ı kullanarak, nesne sahibi olmayan kullanıcının nesneyi indirebilmesini sağlamak için salt okunur kova ACL'den önce yüklenen nesneler için Authenticated Users iznini değiştirin:
其他資訊
Nesne sahibi aracılığıyla bir nesneyi yüklerken sorunlarla karşılaşıyorsanız ve izinler yazma erişimi olan Kimliği Doğrulanmış Kullanıcılara uygulanmıyorsa lütfen 520711 Bilgi Bankası makalesini inceleyin