ECS: Seznam ACL kbelíku jen pro čtení pro uživatele objektu, který není vlastníkem, nemůže stáhnout nahrané objekty
摘要: Tato znalostní báze vysvětluje koncept seznamů řízení přístupu (ACL) kontejnerů pro uživatele objektu, který není vlastníkem, z pohledu jen pro čtení v prohlížeči S3.
症狀
Uživatel objektu, který není vlastníkem, byl do kbelíku přidán jen pro čtení pomocí seznamu ACL kbelíku.
Uživatel objektu, který není vlastníkem kbelíku, nemůže stáhnout objekty, které byly nahrány uživatelem vlastníka kbelíku objektu před vytvořením seznamu ACL kbelíku.
Problémový tok je následující:
- Kbelík byl vytvořen s přiřazeným vlastníkem objektu.
- Některé soubory byly nahrány do kbelíku uživatelem, který je vlastníkem objektu.
- Uživatel objektu, který není vlastníkem, byl do kbelíku přidán jen pro čtení pomocí seznamu ACL kbelíku.
- Při pokusu o přístup ke kbelíku může uživatel objektu, který není vlastníkem, vypsat a stáhnout nově nahrané objekty, ale nemůže stáhnout objekty nahrané před seznamem ACL kbelíku jen pro čtení. Vidíme, že uživatelská práva u objektů nejsou nastavena v prohlížeči S3 podle konfigurace v uživatelském rozhraní ECS.
Chyba, když uživatel objektu, který není vlastníkem, klikne na objekt pomocí prohlížeče S3, je následující: (Přístup zamítnut: Přístup zakázán):
Následuje nastavení seznamu ACL kbelíku pro uživatele vlastníka objektu (a_s3user) a uživatele objektu, který není vlastníkem (a_s3test):
原因
Oprávnění S3 lze nastavit na úrovni kbelíku nebo objektu. ECS dodržuje stejné principy jako AWS S3 – v závislosti na typu použité zásady. Určuje typ operací, které budou povoleny na úrovni kbelíku nebo objektu.
- Je-li na úrovni kbelíku ECS udělen seznam READ a READ ACL, vlastník bez kbelíku bude pouze uvádět objekty v kbelíku. Vlastník bez kbelíku nebude moci stahovat data z kbelíku
- Při zápisu objektu do kbelíku má oprávnění ke čtení pouze uživatel, který objekt zapisuje. Aby ostatní uživatelé mohli objekty číst, musí vlastník uživatelům explicitně udělit oprávnění.
- Pokud chcete udělit oprávnění vlastníkům, kteří nejsou vlastníky kbelíku, musíme použít zásady kbelíku S3
Oprávnění ACL, která lze přiřadit, jsou uvedena v následující tabulce. Oprávnění, která se použijí, závisí na typu kbelíku.
| ACL | Permission | ||
|---|---|---|---|
| Čtení | Umožňuje uživateli vypsat objekty v kbelíku | ||
| Čtení ACL | Umožňuje uživateli přečíst seznam ACL kbelíku. | ||
| Zápis | Umožňuje uživateli vytvořit nebo aktualizovat libovolný objekt v kbelíku. | ||
| Napište seznam ACL. | Umožňuje uživateli zapsat seznam ACL pro kbelík. | ||
| Spuštění | Nastavení oprávnění ke spuštění při přístupu jako systém souborů – toto oprávnění nemá žádný vliv, pokud je k objektu přistupováno pomocí objektových protokolů ECS. | ||
| Úplné řízení | Umožňuje uživateli číst, zapisovat, číst seznamy ACL a zapisovat seznamy ACL.
|
||
| Privilegovaný zápis | Umožňuje uživateli provádět zápisy do kbelíku nebo objektu, když uživatel nemá normální oprávnění k zápisu – nutné pro kontejnery CAS. | ||
| Odstranění | Umožňuje uživateli odstraňovat kbelíky a objekty – nutné pro kbelíky CAS. | ||
| Žádné | Uživatel nemá v kbelíku žádná oprávnění. |
AWS podporuje více typů zásad.
- Seznamy řízení přístupu (ACL)
- Zásady založené na identitách
- Hranice oprávnění
- Zásady založené na prostředcích
Referenční seznam ACL kbelíku AWS
Následující tabulka uvádí sadu oprávnění, která Amazon S3 podporuje v seznamu ACL. Sada oprávnění ACL je stejná pro seznam ACL objektu a seznam ACL kbelíku. V závislosti na kontextu (seznam ACL kbelíku nebo seznam ACL objektu) ale tato oprávnění seznamu ACL udělují oprávnění pro konkrétní kbelíky nebo operace s objekty. V tabulce jsou uvedena oprávnění a popsáno, co znamenají v kontextu objektů a kbelíků.
| Permission | Když je udělen na kbelíku | Při udělení objektu |
|---|---|---|
READ |
Umožňuje příjemci grantu vypsat objekty v kbelíku | Umožňuje příjemci grantu číst objektová data a jejich metadata |
WRITE |
Umožňuje příjemci grantu vytvořit, přepsat a odstranit libovolný objekt v kbelíku | Není k dispozici |
READ_ACP |
Umožňuje příjemci grantu přečíst seznam ACL kbelíku. | Umožňuje příjemci grantu číst ACL objektu |
WRITE_ACP |
Umožňuje příjemci grantu zapsat seznam ACL pro příslušný kbelík. | Umožňuje příjemci grantu zapsat seznam ACL pro příslušný objekt. |
FULL_CONTROL |
Uděluje oprávnění READ, WRITE, READ_ACP a WRITE_ACP pro kbelík. | Umožňuje udělené osobě oprávnění READ, READ_ACP a WRITE_ACP objektu |
Dokumentace k Amazon S3
Následující tabulka ukazuje, jak se jednotlivá oprávnění seznamu ACL mapují na odpovídající oprávnění zásad přístupu. Jak vidíte, zásady přístupu umožňují více oprávnění než seznam ACL. ACL se používají především k udělení základních oprávnění pro čtení a zápis, podobně jako oprávnění systému souborů. Další informace o tom, kdy použít seznam ACL, najdete v tématu Pokyny pro použití dostupných možností zásad přístupu.
| Oprávnění ACL | Odpovídající oprávnění zásad přístupu, když je v kbelíku uděleno oprávnění ACL | Odpovídající oprávnění zásad přístupu, když je objektu uděleno oprávnění seznamu ACL |
|---|---|---|
READ |
s3:ListBucket, s3:ListBucketVersionsa s3:ListBucketMultipartUploads |
s3:GetObject, s3:GetObjectVersiona s3:GetObjectTorrent |
WRITE |
Kromě toho, je-li příjemce grantu vlastníkem kbelíku, |
Není k dispozici |
READ_ACP |
s3:GetBucketAcl |
s3:GetObjectAcl a s3:GetObjectVersionAcl |
WRITE_ACP |
s3:PutBucketAcl |
s3:PutObjectAcl a s3:PutObjectVersionAcl |
FULL_CONTROL |
Ekvivalent udělení READ, WRITE, READ_ACPa WRITE_ACP Oprávnění ACL – Toto oprávnění seznamu ACL se mapuje na kombinaci odpovídajících oprávnění zásad přístupu. |
Ekvivalent udělení READ, READ_ACPa WRITE_ACP Oprávnění ACL. Toto oprávnění seznamu ACL se tedy mapuje na kombinaci odpovídajících oprávnění zásad přístupu. |
解析度
Možnost 1:
Informace o používání zásad kbelíku naleznete v příručce přístupu k datům ECS. Na rozdíl od seznamů ACL, které povolují všechny akce nebo žádné, zásady přístupu poskytují konkrétním uživatelům nebo všem uživatelům podmíněná a podrobná oprávnění pro konkrétní akce. Podmínky zásad lze použít k přiřazení oprávnění pro rozsah objektů, které odpovídají podmínce. To lze použít k automatickému přiřazení oprávnění nově nahraným objektům.
Reference AWS S3:
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.htmlV uživatelském rozhraní –> Manage-Bucket> –> Edit bucket policy vložte do editoru zásad něco podobného:
{
"Version": "2012-10-17",
"Id": "Policy1593674317613",
"Statement": [
{
"Action": [
"s3:GetObject"
],
"Resource": "bucket_name/*",
"Effect": "Allow",
"Principal": "read-only_user",
"Sid": "Stmt1593673962638"
}
]
}Kde akce: "S3:GetObject" je akce, která umožňuje stahovat objekty.
Kde je účinek: "Povolit",
kde je zdroj: "bucket_name/*" je název bucketu.
Kde je hlavní": "read-only_user" je uživatel bez kbelíku.
Možnost 2:
Pomocí prohlížeče S3 s vlastníkem objektu změňte oprávnění pro ověřené uživatele pro objekty nahrané před seznamem ACL kbelíku jen pro čtení, aby bylo zajištěno, že uživatel objektu, který není vlastníkem, může objekt stáhnout:
其他資訊
Pokud dochází k problémům s nahráním objektu prostřednictvím vlastníka objektu a oprávnění se nevztahují na ověřené uživatele, kteří mají přístup k zápisu, přečtěte si článek znalostní báze 520711