

La AWS SDK per Java 1.x è stata raggiunta end-of-support il 31 dicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)a 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à.

# Policy di controllo degli accessi
<a name="java-dg-access-control"></a>

 AWS *le politiche di controllo degli accessi* consentono di specificare controlli di accesso dettagliati sulle risorse. AWS Una politica di controllo degli accessi consiste in una raccolta di *dichiarazioni*, che assumono la forma:

 L'*account A* è autorizzato a eseguire *l'azione B* sulla *risorsa C* laddove si applica la *condizione D.*

Dove:
+  *A* è il *principale*, Account AWS ovvero la richiesta di accesso o modifica di una delle tue AWS risorse.
+  *B* è l'*azione*: il modo in cui si accede o si modifica la AWS risorsa, ad esempio l'invio di un messaggio a una Amazon SQS coda o la memorizzazione di un oggetto in un Amazon S3 bucket.
+  *C* è la *risorsa*: l' AWS entità a cui il principale desidera accedere, ad esempio una Amazon SQS coda o un oggetto in cui è memorizzato. Amazon S3
+  *D* è un *insieme di condizioni*: i vincoli opzionali che specificano quando consentire o negare l'accesso al principale per accedere alla risorsa. Sono disponibili molte condizioni espressive, alcune specifiche per ogni servizio. Ad esempio, è possibile utilizzare le condizioni relative alla data per consentire l'accesso alle risorse solo dopo o prima di un orario specifico.

## Amazon S3 Esempio
<a name="s3-example"></a>

L'esempio seguente dimostra una politica che consente a chiunque di accedere alla lettura di tutti gli oggetti in un bucket, ma limita l'accesso al caricamento di oggetti in quel bucket a due Account AWS s specifici (oltre all'account del proprietario del bucket).

```
Statement allowPublicReadStatement = new Statement(Effect.Allow)
    .withPrincipals(Principal.AllUsers)
    .withActions(S3Actions.GetObject)
    .withResources(new S3ObjectResource(myBucketName, "*"));
Statement allowRestrictedWriteStatement = new Statement(Effect.Allow)
    .withPrincipals(new Principal("123456789"), new Principal("876543210"))
    .withActions(S3Actions.PutObject)
    .withResources(new S3ObjectResource(myBucketName, "*"));

Policy policy = new Policy()
    .withStatements(allowPublicReadStatement, allowRestrictedWriteStatement);

AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();
s3.setBucketPolicy(myBucketName, policy.toJson());
```

## Amazon SQS Esempio
<a name="sqs-example"></a>

Un uso comune delle policy consiste nell'autorizzare una Amazon SQS coda a ricevere messaggi da un argomento di Amazon SNS.

```
Policy policy = new Policy().withStatements(
    new Statement(Effect.Allow)
        .withPrincipals(Principal.AllUsers)
        .withActions(SQSActions.SendMessage)
        .withConditions(ConditionFactory.newSourceArnCondition(myTopicArn)));

Map queueAttributes = new HashMap();
queueAttributes.put(QueueAttributeName.Policy.toString(), policy.toJson());

AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient();
sqs.setQueueAttributes(new SetQueueAttributesRequest(myQueueUrl, queueAttributes));
```

## Esempio di Amazon SNS
<a name="sns-example"></a>

Alcuni servizi offrono condizioni aggiuntive che possono essere utilizzate nelle politiche. Amazon SNS fornisce le condizioni per consentire o negare le sottoscrizioni agli argomenti SNS in base al protocollo (ad esempio e-mail, HTTP, HTTPS Amazon SQS) e all'endpoint (ad es. indirizzo e-mail, URL, Amazon SQS ARN) della richiesta di sottoscrizione a un argomento.

```
Condition endpointCondition =
    SNSConditionFactory.newEndpointCondition("*@mycompany.com");

Policy policy = new Policy().withStatements(
    new Statement(Effect.Allow)
        .withPrincipals(Principal.AllUsers)
        .withActions(SNSActions.Subscribe)
        .withConditions(endpointCondition));

AmazonSNS sns = AmazonSNSClientBuilder.defaultClient();
sns.setTopicAttributes(
    new SetTopicAttributesRequest(myTopicArn, "Policy", policy.toJson()));
```