ECS: Alleen-lezen bucket ACL voor niet-eigenaar objectgebruiker kan geüploade objecten niet downloaden
摘要: In deze knowledge base wordt het concept van buckets Access Control Lists (ACL's) voor de niet-eigenaar uitgelegd vanuit een alleen-lezen perspectief in S3 Browser.
症狀
Objectgebruiker zonder eigenaar is toegevoegd als alleen-lezen aan de bucket met behulp van een bucket-ACL.
Een niet-bucket-eigenaar, objectgebruiker kan geen objecten downloaden die zijn geüpload door de gebruiker van de objectbucket-eigenaar, voordat de bucket-ACL werd gemaakt.
De probleemstroom is als volgt:
- Bucket is gemaakt waaraan de gebruiker van de objecteigenaar is toegewezen.
- Sommige bestanden zijn geüpload naar de bucket door de gebruiker van de objecteigenaar.
- Objectgebruiker zonder eigenaar is toegevoegd als alleen-lezen aan de bucket met behulp van een bucket-ACL.
- Bij een poging om toegang te krijgen tot de bucket, kan de gebruiker van het niet-eigenaarsobject nieuw geüploade objecten vermelden en downloaden, maar geen objecten downloaden die vóór de alleen-lezen bucket ACL zijn geüpload. We kunnen zien dat de gebruikersrechten op de objecten niet zijn ingesteld via S3-browser volgens de configuratie in de ECS-gebruikersinterface.
De fout wanneer de niet-eigenaar van het object op een object klikt met behulp van S3 Browser is als volgt: (Toegang geweigerd: Toegang geweigerd):
Hieronder volgt de bucket-ACL-instelling voor de objecteigenaargebruiker (a_s3user) en de niet-eigenaar objectgebruiker (a_s3test):
原因
S3-machtigingen kunnen worden ingesteld op bucket- of objectniveau. ECS hanteert dezelfde principes als AWS S3, afhankelijk van het type beleid dat wordt toegepast. Het bepaalt het type bewerkingen dat is toegestaan op bucketniveau of objectniveau.
- Wanneer READ en READ ACL worden toegekend op ECS bucket-niveau, mag de niet-bucket-eigenaar alleen de objecten in de bucket weergeven. De niet-bucket-eigenaar kan geen data uit de bucket downloaden
- Bij het schrijven van een object naar een bucket heeft alleen de gebruiker die het object schrijft leesmachtiging. Om ervoor te zorgen dat andere gebruikers de objecten kunnen lezen, moet de eigenaar expliciet toestemming geven aan de gebruikers.
- Om toestemming te verlenen aan niet-bucket-eigenaren, moeten we S3-bucket-beleidsregels gebruiken
De ACL-machtigingen die kunnen worden toegewezen, vindt u in de volgende tabel. De machtigingen die van toepassing zijn, zijn afhankelijk van het type bucket.
| ACL | Toestemming | ||
|---|---|---|---|
| Lezen | Hiermee kan de gebruiker de objecten in de bucket vermelden | ||
| ACL lezen | Hiermee kan de gebruiker de bucket ACL lezen | ||
| Schrijven | Hiermee kan de gebruiker elk object in de bucket maken of bijwerken | ||
| Schrijf ACL. | Hiermee kan de gebruiker de ACL voor de bucket schrijven | ||
| Executeren | Hiermee stelt u de uitvoeringsmachtiging in bij toegang als bestandssysteem: deze machtiging heeft geen effect wanneer het object wordt benaderd met behulp van de ECS-objectprotocollen. | ||
| Volledige controle | Hiermee kan de gebruiker de ACL lezen, schrijven, lezen en ACL schrijven.
|
||
| Bevoorrecht schrijven | Hiermee kan de gebruiker schrijfbewerkingen uitvoeren naar een bucket of object wanneer de gebruiker geen normale schrijfmachtiging heeft - vereist voor CAS-buckets | ||
| Verwijderen | Hiermee kan de gebruiker buckets en objecten verwijderen - vereist voor CAS-buckets | ||
| Geen | De gebruiker heeft geen rechten op de bucket. |
AWS ondersteunt meerdere beleidstypen.
- Toegangscontrolelijsten (Access Control Lists of ACL's)
- Op identiteit gebaseerd beleid
- Grenzen voor machtigingen
- Op resources gebaseerd beleid
De volgende tabel bevat de set machtigingen die Amazon S3 ondersteunt in een ACL. De set ACL-machtigingen is hetzelfde voor een object-ACL en een bucket-ACL. Afhankelijk van de context (bucket-ACL of object-ACL) verlenen deze ACL-machtigingen echter machtigingen voor specifieke buckets of objectbewerkingen. De tabel bevat de machtigingen en beschrijft wat ze betekenen in de context van objecten en buckets.
| Toestemming | Indien toegekend op een bucket | Indien toegekend op een object |
|---|---|---|
READ |
Hiermee kan de begunstigde de objecten in de bucket vermelden | Hiermee kan de begunstigde de objectdata en de metadata lezen |
WRITE |
Hiermee kan de begunstigde elk object in de bucket maken, overschrijven en verwijderen | Niet van toepassing |
READ_ACP |
Hiermee kan de begunstigde de bucket ACL lezen | Hiermee kan de begunstigde het object ACL lezen |
WRITE_ACP |
Hiermee kan de begunstigde de ACL voor de toepasselijke bucket schrijven | Hiermee kan de begunstigde de ACL voor het betreffende object schrijven |
FULL_CONTROL |
Hiermee krijgt de begunstigde de machtigingen LEZEN, SCHRIJVEN, READ_ACP en WRITE_ACP op de bucket | Hiermee krijgt de begunstigde de machtigingen READ, READ_ACP en WRITE_ACP voor het object |
Amazon S3-documentatie
In de volgende tabel ziet u hoe elke ACL-machtiging wordt toegewezen aan de bijbehorende toegangsbeleidsmachtigingen. Zoals u kunt zien, staat het toegangsbeleid meer machtigingen toe dan een ACL. U gebruikt ACL's voornamelijk om basismachtigingen voor lezen/schrijven toe te kennen, vergelijkbaar met machtigingen voor het bestandssysteem. Zie Richtlijnen voor het gebruik van de beschikbare opties voor toegangsbeleid voor meer informatie over het gebruik van een ACL.
| ACL-toestemming | Corresponderende toegangsbeleidsmachtigingen wanneer de ACL-machtiging wordt verleend op een bucket | Corresponderende toegangsbeleidsmachtigingen wanneer de ACL-machtiging wordt verleend voor een object |
|---|---|---|
READ |
s3:ListBucket, s3:ListBucketVersionsen s3:ListBucketMultipartUploads |
s3:GetObject, s3:GetObjectVersionen s3:GetObjectTorrent |
WRITE |
Bovendien, wanneer de begunstigde de eigenaar van de bucket is, |
Niet van toepassing |
READ_ACP |
s3:GetBucketAcl |
s3:GetObjectAcl als s3:GetObjectVersionAcl |
WRITE_ACP |
s3:PutBucketAcl |
s3:PutObjectAcl als s3:PutObjectVersionAcl |
FULL_CONTROL |
Komt overeen met het verlenen van READ, WRITE, READ_ACPen WRITE_ACP ACL-machtigingen - Deze ACL-machtiging wordt dus toegewezen aan een combinatie van overeenkomstige toegangsbeleidsmachtigingen. |
Komt overeen met het verlenen van READ, READ_ACPen WRITE_ACP ACL-machtigingen. Deze ACL-machtiging is dus gekoppeld aan een combinatie van overeenkomstige toegangsbeleidsmachtigingen. |
解析度
Optie 1:
Raadpleeg de ECS Data Access Guide, het gebruik van bucketbeleid. In tegenstelling tot ACL's, die alle of geen acties toestaan, biedt het toegangsbeleid specifieke gebruikers of alle gebruikers voorwaardelijke en gedetailleerde machtigingen voor specifieke acties. Beleidsvoorwaarden kunnen worden gebruikt om machtigingen toe te wijzen voor een reeks objecten die overeenkomen met de voorwaarde. Dit kan worden gebruikt om automatisch machtigingen toe te wijzen aan nieuw geüploade objecten.
Referentie 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.htmlVan UI-> Manage-Bucket>-> Edit bucket policy, plaats iets soortgelijks als dit in de beleidseditor:
{
"Version": "2012-10-17",
"Id": "Policy1593674317613",
"Statement": [
{
"Action": [
"s3:GetObject"
],
"Resource": "bucket_name/*",
"Effect": "Allow",
"Principal": "read-only_user",
"Sid": "Stmt1593673962638"
}
]
}Waar Actie: "S3:GetObject" is de actie om objecten te mogen downloaden.
Waar Effect: "Toestaan"
waar Resource": "bucket_name/*", is de naam van de bucket.
Waar Opdrachtgever": "read-only_user", is een gebruiker zonder bucket-eigenaar.
Optie 2:
Gebruik S3 Browser met de objecteigenaar en wijzig de machtiging voor geverifieerde gebruikers voor objecten die zijn geüpload vóór de alleen-lezen bucket ACL om ervoor te zorgen dat de niet-eigenaar het object kan downloaden:
其他資訊
Als u problemen ondervindt bij het uploaden van een object via de objecteigenaar en de machtigingen niet worden toegepast op geverifieerde gebruikers die schrijftoegang hebben, lees dan het Knowledge Base-artikel 520711