

La AWS SDK para Java 1.x se alcanzó end-of-support el 31 de diciembre de 2025. Le recomendamos que migre a [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) para seguir recibiendo nuevas características, mejoras de disponibilidad y actualizaciones de seguridad.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Política de control de acceso
<a name="java-dg-access-control"></a>

 AWS *las políticas de control de acceso* le permiten especificar controles de acceso detallados en sus recursos. AWS Una política de control de acceso se compone de un conjunto de *instrucciones*, con el siguiente formato:

 La *cuenta A* tiene permiso para realizar la *acción B* en el *recurso C* donde se aplica la *condición D*.

Donde:
+  *A* es el *principal*: el Cuenta de AWS que solicita el acceso o la modificación de uno de sus recursos. AWS 
+  *B* es la *acción*: la forma en que se accede a un AWS recurso o se lo modifica, por ejemplo, enviando un mensaje a una Amazon SQS cola o almacenando un objeto en un Amazon S3 depósito.
+  *C* es el *recurso*: la AWS entidad a la que el principal quiere acceder, como una Amazon SQS cola o un objeto almacenado. Amazon S3
+  *D* es un *conjunto de condiciones*: las limitaciones opcionales que se especifican para permitir o denegar el acceso al recurso de la entidad principal. Hay muchas condiciones expresivas disponibles, algunas específicas de cada servicio. Por ejemplo, puede utilizar condiciones de fecha para permitir el acceso a los recursos únicamente después o antes de un momento específico.

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

En el siguiente ejemplo, se muestra una política que permite a cualquier persona acceder a todos los objetos de un depósito, pero restringe el acceso a la carga de objetos a ese depósito a dos tipos Cuenta de AWS específicos (además de la cuenta del propietario del depósito).

```
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 Ejemplo
<a name="sqs-example"></a>

Un uso común de las políticas es autorizar una Amazon SQS cola para recibir mensajes de un tema de 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));
```

## Ejemplo de Amazon SNS
<a name="sns-example"></a>

Algunos servicios ofrecen condiciones adicionales que pueden utilizarse en las políticas. Amazon SNS establece condiciones para permitir o denegar suscripciones a temas de SNS según el protocolo (por ejemplo, correo electrónico, HTTP, HTTPS Amazon SQS) y el punto final (por ejemplo, dirección de correo electrónico, URL, Amazon SQS ARN) de la solicitud de suscripción a un tema.

```
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()));
```