Configurazione delle policy IAM per l'utilizzo degli access point
I punti di accesso Amazon S3 supportano le policy di risorse AWS Identity and Access Management (IAM) che consentono di controllare l'utilizzo del punto di accesso per risorsa, utente o altre condizioni. Affinché un'applicazione o un utente possa accedere agli oggetti tramite un access point, sia l'access point che il bucket sottostante devono consentire la richiesta.
L'aggiunta di un access point S3 a un bucket non modifica il comportamento del bucket quando si accede tramite il nome bucket o l'ARN. Tutte le operazioni esistenti inerenti il bucket continueranno a funzionare come prima. Le limitazioni incluse in una policy di access point si applicano solo alle richieste effettuate tramite quell'access point.
Esempi di policy degli access point
Negli esempi seguenti viene illustrato come creare le policy IAM per controllare le richieste effettuate tramite un access point.
Le autorizzazioni concesse in una policy dell'access point sono valide solo se il bucket sottostante consente anche lo stesso accesso. Puoi farlo in due modi:
-
(Consigliato) Delegare il controllo di accesso dal bucket all'access point come descritto in Delegazione del controllo di accesso agli access point.
-
Aggiungere le stesse autorizzazioni contenute nella policy del punto di accesso alla policy del bucket sottostante. Nel primo esempio di policy dell'access point viene illustrato come modificare la policy del bucket sottostante per consentire l'accesso necessario.
Esempio Concessione della policy di access point
La policy di access point seguente concede all'utente IAM Alice
dell'account 123456789012
le autorizzazioni per gli oggetti GET
e PUT
con il prefisso Alice/
tramite l'access point my-access-point
nell'account 123456789012
.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/Alice/*" }] }
Affinché la policy di access point conceda effettivamente l'accesso ad Alice
, anche il bucket sottostante deve consentire lo stesso accesso ad Alice
. È possibile delegare il controllo di accesso dal bucket all'access point come descritto in Delegazione del controllo di accesso agli access point. In alternativa, è possibile aggiungere la policy seguente al bucket sottostante per concedere le autorizzazioni necessarie ad Alice. Si noti che la voce Resource
differisce tra le policy dell'access point e del bucket.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:::
awsexamplebucket1
/Alice/*" }] }
Esempio Policy di access point con condizione di tag
La policy di access point riportata di seguito concede all'utente IAM Bob
dell'account 123456789012
le autorizzazioni per gli oggetti GET
tramite l'access point my-access-point
nell'account 123456789012
con la chiave di tag data
impostata su un valore pari a finance
.
{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Principal" : { "AWS": "arn:aws:iam::123456789012:user/Bob" }, "Action":"s3:GetObject", "Resource" : "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/*", "Condition" : { "StringEquals": { "s3:ExistingObjectTag/
data
": "finance
" } } }] }
Esempio Policy dell'access point che consente l'elenco dei bucket
La policy dell'access point riportata di seguito consente all'utente IAM Charles
in account 123456789012
di visualizzare gli oggetti contenuti nel bucket sottostante punto di accesso my-access-point
nell'account 123456789012
.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Charles" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point" }] }
Esempio Policy di controllo dei servizi
La seguente policy di controllo dei servizi richiede la creazione di tutti i nuovi access point con un'origine di rete VPC. Con questa policy, gli utenti dell'organizzazione non possono creare nuovi access point accessibili da Internet.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:CreateAccessPoint", "Resource": "*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } }] }
Esempio Policy di bucket per limitare le operazioni S3 alle origini di rete VPC
La policy di bucket seguente limita l'accesso a tutte le operazioni degli oggetti S3 per il bucket examplebucket
agli access point con un'origine di rete VPC.
Prima di utilizzare un'istruzione come nell'esempio, assicurati di non utilizzare funzionalità che non sono supportate dagli access point, come la replica tra regioni.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": [ "s3:AbortMultipartUpload", "s3:BypassGovernanceRetention", "s3:DeleteObject", "s3:DeleteObjectTagging", "s3:DeleteObjectVersion", "s3:DeleteObjectVersionTagging", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectLegalHold", "s3:GetObjectRetention", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectLegalHold", "s3:PutObjectRetention", "s3:PutObjectTagging", "s3:PutObjectVersionAcl", "s3:PutObjectVersionTagging", "s3:RestoreObject" ], "Resource": "arn:aws:s3:::examplebucket/*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } } ] }
Chiavi di condizione
I punti di accesso S3 utilizzano chiavi di condizione che possono essere utilizzate nelle policy IAM per controllare l'accesso alle risorse: Queste chiavi di condizione fanno parte di una policy IAM, per un esempio completo di policy. Consulta Esempi di policy degli access point.
- s3:DataAccessPointArn
-
Questa è una stringa che è possibile utilizzare per la corrispondenza dell'ARN di un access point. L'esempio seguente restituisce tutti i punti di accesso per l'Account AWS
123456789012
nella regioneus-west-2
:"Condition" : { "StringLike": { "s3:DataAccessPointArn": "arn:aws:s3:us-west-2:123456789012:accesspoint/*" } }
- s3:DataAccessPointAccount
-
È un operatore stringa che è possibile utilizzare per la corrispondenza dell'ID account del proprietario di un access point. L'esempio seguente restituisce tutti i punti di accesso di proprietà dell'Account AWS
123456789012
."Condition" : { "StringEquals": { "s3:DataAccessPointAccount": "123456789012" } }
- s3:AccessPointNetworkOrigin
-
È un operatore stringa che è possibile utilizzare per la corrispondenza dell'origine di rete,
Internet
oVPC
. L'esempio seguente esegue la corrispondenza solo degli access point con un'origine VPC."Condition" : { "StringEquals": { "s3:AccessPointNetworkOrigin": "VPC" } }
Per ulteriori informazioni sull'uso delle chiavi di condizione con Amazon S3, consulta Operazioni, risorse e chiavi di condizione per Amazon S3.
Delegazione del controllo di accesso agli access point
È possibile delegare il controllo degli accessi per un bucket agli access point del bucket. La policy del bucket di esempio seguente consente l'accesso completo a tutti gli access point dell'account del proprietario del bucket. Pertanto, tutto l'accesso a questo bucket è controllato dalle policy associate agli access point. Si consiglia di configurare i bucket in questo modo per tutti i casi d'uso che non richiedono l'accesso diretto al bucket.
Esempio Policy del bucket che delega il controllo degli accessi agli access point
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "*", "Resource" : [ "
Bucket ARN
", "Bucket ARN
/*"], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID
" } } }] }