Gestione degli accessi aAmazon S3Bucket utilizzando policy di bucket - AWS SDK for Java 1. x

La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-supportdicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare AWS SDK for Java 2.xa ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione degli accessi aAmazon S3Bucket utilizzando policy di bucket

È possibile impostare, ottenere o eliminare unpolicy di bucketper gestire l'accesso al tuoAmazon S3Bucket.

Impostare una policy di bucket

È possibile impostare una policy di bucket per un determinato bucket S3 tramite:

  • Chiamare il client AmazonS3setBucketPolicye fornendogli unSetBucketPolicyRequest

  • Impostazione diretta del criterio utilizzando ilsetBucketPolicyoverload che accetta il nome del bucket e il testo del criterio (in formato JSON)

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.policy.Policy; import com.amazonaws.auth.policy.Principal;

Codice

s3.setBucketPolicy(bucket_name, policy_text); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Utilizzare la classe di criteri per generare o convalidare un criterio

Quando fornisce una policy di bucket asetBucketPolicyè possibile effettuare le seguenti operazioni:

  • Specificare il criterio direttamente come stringa di testo formattato JSON

  • Crea il criterio utilizzando ilPolicyclasse

Usando ilPolicyclass, non devi preoccuparti della formattazione corretta della stringa di testo. Per ottenere il testo della policy JSON dalPolicyclasse, usa il suotoJsonmetodo.

Importazioni

import com.amazonaws.auth.policy.Resource; import com.amazonaws.auth.policy.Statement; import com.amazonaws.auth.policy.actions.S3Actions; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

Codice

new Statement(Statement.Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new Resource( "{region-arn}s3:::" + bucket_name + "/*"))); return bucket_policy.toJson();

LaPolicyfornisce inoltre unafromJsonmetodo che può tentare di creare un criterio utilizzando una stringa JSON passata. Il metodo lo convalida per garantire che il testo possa essere trasformato in una struttura di criteri valida e fallirà con unIllegalArgumentExceptionse il testo del criterio non è valido.

Policy bucket_policy = null; try { bucket_policy = Policy.fromJson(file_text.toString()); } catch (IllegalArgumentException e) { System.out.format("Invalid policy text in file: \"%s\"", policy_file); System.out.println(e.getMessage()); }

È possibile utilizzare questa tecnica per preconvalidare un criterio letto da un file o da altri mezzi.

Vedi l'esempio completo su GitHub.

Ottenere una policy di bucket

Per recuperare una policy per unAmazon S3bucket, chiama il client AmazonS3getBucketPolicymetodo, passando il nome del bucket da cui ottenere la polizza.

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

Codice

try { BucketPolicy bucket_policy = s3.getBucketPolicy(bucket_name); policy_text = bucket_policy.getPolicyText(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Se il bucket denominato non esiste, se non si ha accesso ad esso, o se non ha criteri di bucket,AmazonServiceExceptionviene generato.

Vedi l'esempio completo su GitHub.

Eliminare una policy del bucket

Per eliminare una politica del bucket, chiama il client AmazonS3deleteBucketPolicyfornisce il nome del bucket.

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

Codice

try { s3.deleteBucketPolicy(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Questo metodo ha esito positivo anche se il bucket non ha già una politica. Se si specifica un nome di bucket che non esiste o se non si ha accesso al bucket,AmazonServiceExceptionviene generato.

Vedi l'esempio completo su GitHub.

Ulteriori informazioni