

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.

# Ejemplos de lenguaje de la política de acceso de Amazon SQS personalizada
<a name="sqs-creating-custom-policies-access-policy-examples"></a>

A continuación, se muestran algunos ejemplos de políticas de acceso de Amazon SQS típicas.

## Ejemplo 1: conceder permiso a una cuenta
<a name="one-account"></a>

En el ejemplo siguiente, la política de Amazon SQS proporciona a la `queue2` 111122223333 permiso para enviar y recibir información de la cola Cuenta de AWS , que es propiedad de la Cuenta de AWS 444455556666.

------
#### [ JSON ]

****  

```
{   
   "Version":"2012-10-17",		 	 	 
   "Id": "UseCase1",
   "Statement" : [{
      "Sid": "1", 
      "Effect": "Allow",           
      "Principal": {
         "AWS": [
            "111122223333"
         ]
      },
      "Action": [
         "sqs:SendMessage",
         "sqs:ReceiveMessage"
      ], 
      "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2"  
   }]
}
```

------

## Ejemplo 2: conceder permiso a una o varias cuentas
<a name="two-accounts"></a>

El siguiente ejemplo de política de Amazon SQS proporciona uno o más Cuentas de AWS accesos a las colas que son propiedad de su cuenta durante un período de tiempo específico. Es necesario escribir esta política y cargarla en Amazon SQS mediante la acción [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html), ya que la acción [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_AddPermission.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_AddPermission.html) no permite especificar una restricción de tiempo al conceder acceso a una cola.

------
#### [ JSON ]

****  

```
{   
   "Version":"2012-10-17",		 	 	 
   "Id": "UseCase2",
   "Statement" : [{
      "Sid": "1", 
      "Effect": "Allow",           
      "Principal": {
         "AWS": [
            "111122223333",
            "444455556666"
         ]
      },
      "Action": [
         "sqs:SendMessage",
         "sqs:ReceiveMessage"
      ], 
      "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2",
      "Condition": {
         "DateLessThan": {
            "AWS:CurrentTime": "2009-06-30T12:00Z"
         }
      }   
   }]
}
```

------

## Ejemplo 3: conceder permiso a solicitudes de instancias de Amazon EC2
<a name="requests-from-ec2"></a>

La siguiente política de ejemplo de Amazon SQS concede acceso a las solicitudes que proceden de instancias de Amazon EC2. Este ejemplo se basa en el ejemplo "[Ejemplo 2: conceder permiso a una o varias cuentas](#two-accounts)": restringe el acceso antes del 30 de junio de 2009 a las 12:00 h (UTC) y al rango de direcciones IP `203.0.113.0/24`. Es necesario escribir esta política y cargarla en Amazon SQS mediante la acción [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html), porque la acción [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_AddPermission.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_AddPermission.html) no permite especificar una restricción de dirección IP al conceder acceso a una cola.

------
#### [ JSON ]

****  

```
{   
   "Version":"2012-10-17",		 	 	 
   "Id": "UseCase3",
   "Statement" : [{
      "Sid": "1", 
      "Effect": "Allow",           
      "Principal": {
         "AWS": [
            "111122223333"
         ]
      },
      "Action": [
         "sqs:SendMessage",
         "sqs:ReceiveMessage"
      ], 
      "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2",
      "Condition": {
         "DateLessThan": {
            "AWS:CurrentTime": "2009-06-30T12:00Z"
         },
         "IpAddress": {
            "AWS:SourceIp": "203.0.113.0/24"
         }
      }   
   }]
}
```

------

## Ejemplo 4: denegar acceso a una cuenta específica
<a name="deny-account"></a>

El siguiente ejemplo de política de Amazon SQS deniega un Cuenta de AWS acceso específico a su cola. Este ejemplo se basa en el ejemplo «[Ejemplo 1: conceder permiso a una cuenta](#one-account)»: deniega el acceso a lo especificado. Cuenta de AWS Es necesario escribir esta política y cargarla en Amazon SQS mediante la acción [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html), ya que la acción [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_AddPermission.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_AddPermission.html) no permite denegar el acceso a una cola (solo permite conceder acceso a una cola). 

------
#### [ JSON ]

****  

```
{ 
   "Version":"2012-10-17",		 	 	 
   "Id": "UseCase4",
   "Statement" : [{
      "Sid": "1", 
      "Effect": "Deny",           
      "Principal": {
         "AWS": [
            "111122223333"
         ]
      },
      "Action": [
         "sqs:SendMessage",
         "sqs:ReceiveMessage"
      ], 
      "Resource": "arn:aws:sqs:us-east-2:444455556666:queue2"   
   }]
}
```

------

## Ejemplo 5: denegar el acceso si no es desde un punto de enlace de la VPC
<a name="deny-not-from-vpc"></a>

La siguiente política de ejemplo de Amazon SQS restringe el acceso a `queue1`: 111122223333 puede realizar las acciones [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) y [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) solo desde el ID `vpce-1a2b3c4d` del punto de conexión de VPC (especificado mediante la condición `aws:sourceVpce`). Para obtener más información, consulte [Puntos de conexión de Amazon Virtual Private Cloud para Amazon SQS](sqs-internetwork-traffic-privacy.md#sqs-vpc-endpoints).

**nota**  
La condición `aws:sourceVpce` no requiere un ARN para el recurso de punto de enlace de la VPC, solo el ID de la VPC.
Puede modificar el siguiente ejemplo para restringir todas las acciones para un punto de conexión de VPC concreto mediante la denegación de todas las acciones de Amazon SQS (`sqs:*`) en la segunda instrucción. Sin embargo, una declaración de política de este tipo estipularía que todas las acciones (incluidas las acciones administrativas necesarias para modificar los permisos de cola) deben realizarse a través del punto de enlace de la VPC específico definido en la política, lo que podría impedir al usuario de la cola modificar los permisos en el futuro.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id": "UseCase5",
   "Statement": [{
      "Sid": "1",
      "Effect": "Allow",
      "Principal": {
         "AWS": [
            "111122223333"
         ]
      },
      "Action": [
         "sqs:SendMessage",
         "sqs:ReceiveMessage"
      ],
         "Resource": "arn:aws:sqs:us-east-2:111122223333:queue1"
      },
      {
         "Sid": "2",
         "Effect": "Deny",
         "Principal": "*",
         "Action": [
            "sqs:SendMessage",
            "sqs:ReceiveMessage"
         ],
         "Resource": "arn:aws:sqs:us-east-2:111122223333:queue1",
         "Condition": {
            "StringNotEquals": {
               "aws:sourceVpce": "vpce-1a2b3c4d"
            }
         }
      }
   ]
}
```

------

# Uso de credenciales de seguridad temporales con Amazon SQS
<a name="sqs-using-temporary-security-credentials"></a>

Además de crear usuarios con sus propias credenciales de seguridad, IAM también le permite conceder credenciales de seguridad temporales a cualquier usuario, lo que le permite acceder a sus AWS servicios y recursos. Puede administrar usuarios que tengan Cuentas de AWS. También puede administrar los usuarios de su sistema que no los tengan Cuentas de AWS (usuarios federados). Además, las aplicaciones que cree para acceder a sus AWS recursos también se pueden considerar «usuarios».

Puede utilizar estas credenciales de seguridad temporales para realizar solicitudes a Amazon SQS. Las bibliotecas de la API computan el valor de firma necesario con esas credenciales para autenticar su solicitud. Si envía las solicitudes con las credenciales caducadas, Amazon SQS deniega la solicitud.

**nota**  
No se puede establecer una política basada en credenciales temporales.

## Requisitos previos
<a name="temporary-security-credentials-prerequisites"></a>

1. Utilice IAM para crear credenciales de seguridad temporales:
   + Token de seguridad
   + ID de clave de acceso
   + Clave de acceso secreta

1. Prepare la cadena para firmar con el ID de clave de acceso temporal y el token de seguridad.

1. Utilice la clave de acceso secreta temporal en lugar de su propia clave de acceso secreta para firmar la solicitud de la API de consultas.

**nota**  
Al enviar la solicitud de la API de consultas firmada, utilice el ID de clave de acceso temporal en lugar de su propio ID de clave de acceso e incluya el token de seguridad. Para obtener más información sobre la compatibilidad de IAM con las credenciales de seguridad temporales, consulte Cómo [conceder acceso temporal a sus AWS recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/TokenBasedAuth.html) en la Guía del *usuario de IAM*. 

## Para llamar a una acción de la API de consultas de Amazon SQS mediante credenciales de seguridad temporales
<a name="temporary-security-credentials-query-api"></a>

1. Solicite un token de seguridad temporal utilizando. AWS Identity and Access Management Para obtener más información, consulte [Creación de credenciales de seguridad temporales para permitir el acceso a los usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/CreatingSessionTokens.html) en la *Guía del usuario de IAM*.

   IAM devuelve un token de seguridad, un ID de clave de acceso y una clave de acceso secreta.

1. Prepare la consulta con el ID de clave de acceso temporal en lugar de su propio ID de clave de acceso e incluya el token de seguridad. Firme la solicitud con la clave de acceso secreta temporal en lugar de utilizar su propia clave.

1. Envíe la cadena de consulta firmada con el ID de clave de acceso temporal y el token de seguridad.

   En el siguiente ejemplo, se muestra cómo se utilizan las credenciales de seguridad temporales para autenticar una solicitud de Amazon SQS. La estructura de *`AUTHPARAMS`* depende de la firma de la solicitud de API. Para obtener más información, consulte [Firmar solicitudes de AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) en la *Referencia general de Amazon Web Services*.

   ```
   https://sqs.us-east-2.amazonaws.com/
   ?Action=CreateQueue
   &DefaultVisibilityTimeout=40
   &QueueName=MyQueue
   &Attribute.1.Name=VisibilityTimeout
   &Attribute.1.Value=40
   &Expires=2020-12-18T22%3A52%3A43PST
   &SecurityToken=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   &AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE
   &Version=2012-11-05
   &AUTHPARAMS
   ```

   El siguiente ejemplo utiliza credenciales de seguridad temporales para enviar dos mensajes con la acción `SendMessageBatch`.

   ```
   https://sqs.us-east-2.amazonaws.com/
   ?Action=SendMessageBatch
   &SendMessageBatchRequestEntry.1.Id=test_msg_001
   &SendMessageBatchRequestEntry.1.MessageBody=test%20message%20body%201
   &SendMessageBatchRequestEntry.2.Id=test_msg_002
   &SendMessageBatchRequestEntry.2.MessageBody=test%20message%20body%202
   &SendMessageBatchRequestEntry.2.DelaySeconds=60
   &Expires=2020-12-18T22%3A52%3A43PST
   &SecurityToken=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
   &AWSAccessKeyId=AKIAI44QH8DHBEXAMPLE
   &Version=2012-11-05
   &AUTHPARAMS
   ```

# Administración de acceso para colas cifradas de Amazon SQS con políticas de privilegio mínimo
<a name="sqs-least-privilege-policy"></a>

Puede utilizar Amazon SQS para intercambiar datos confidenciales entre aplicaciones mediante el cifrado del servidor (SSE) integrado con [AWS Key Management Service (KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html). Con la integración de Amazon SQS AWS KMS, puede gestionar de forma centralizada las claves que protegen Amazon SQS, así como las claves que protegen sus demás recursos. AWS 

Varios AWS servicios pueden actuar como fuentes de eventos que envían eventos a Amazon SQS. [Para permitir que una fuente de eventos acceda a la cola cifrada de Amazon SQS, debe configurar la cola con una clave gestionada por el cliente.](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) AWS KMS A continuación, utilice la política de claves para permitir que el servicio utilice los métodos de API necesarios. AWS KMS El servicio también requiere permisos de autenticación de acceso para que la cola pueda enviar eventos. Puede conseguirlo mediante una política de Amazon SQS, que es una política basada en recursos que puede utilizar para controlar el acceso a la cola de Amazon SQS y a sus datos.

En las siguientes secciones se proporciona información sobre cómo controlar el acceso a la cola cifrada de Amazon SQS mediante la política de Amazon SQS y la política de claves. AWS KMS Las políticas de esta guía le ayudarán a conseguir el [privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).

En esta guía también se describe cómo las políticas basadas en recursos abordan el [problema del suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) mediante la utilización de las claves de contexto de condición de IAM globales [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn), [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) y [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid).

**Topics**
+ [Descripción general de](#sqs-least-privilege-overview)
+ [Política de claves de privilegio mínimo para Amazon SQS](#sqs-least-privilege-use-case)
+ [Instrucciones de política de Amazon SQS para la cola de mensajes fallidos](#sqs-policy-dlq)
+ [Prevención del problema del suplente confuso entre servicios](#sqs-confused-deputy-prevention)
+ [Uso de Analizador de acceso de IAM para revisar el acceso entre cuentas](#sqs-cross-account-findings)

## Descripción general de
<a name="sqs-least-privilege-overview"></a>

En este tema, le guiaremos a través de un caso de uso común para ilustrar cómo puede crear la política de claves y la política de colas de Amazon SQS. Este caso de uso se muestra en la siguiente imagen.

![\[Publicación de mensajes de Amazon SNS en Amazon SQS.\]](http://docs.aws.amazon.com/es_es/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/sqs-least-privilege.png)


En este ejemplo, el productor de mensajes es un tema de [Amazon Simple Notification Service (SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) que está configurado para la distribución ramificada de mensajes a su cola cifrada de Amazon SQS. El consumidor de mensajes es un servicio de computación, como una función de [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html), una instancia de [Amazon Elastic Compute Cloud (EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) o un contenedor de [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html). A continuación, la cola de Amazon SQS se configura para enviar los mensajes fallidos a una [cola de mensajes fallidos (DLQ)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html). Esto resulta útil para depurar la aplicación o el sistema de mensajería, ya que DLQs permite aislar los mensajes no consumidos y determinar por qué no se procesaron correctamente. En la solución definida en este tema, se utiliza un servicio de computación como una función de Lambda para procesar los mensajes almacenados en la cola de Amazon SQS. Si el consumidor de mensajes se encuentra en una nube privada virtual (VPC), la instrucción de política [`DenyReceivingIfNotThroughVPCE`](#sqs-restrict-message-to-endpoint) incluida en esta guía le permite restringir la recepción de mensajes a esa VPC específica.

**nota**  
Esta guía contiene solo los permisos de IAM necesarios en forma de instrucciones de política. Para crear la política, debe añadir las declaraciones a su política de Amazon SQS o a su política AWS KMS clave. Esta guía no proporciona instrucciones sobre cómo crear la cola o la clave de Amazon SQS. AWS KMS Para obtener instrucciones sobre cómo crear estos recursos, consulte [Creación de una cola de Amazon SQS](creating-sqs-standard-queues.md#step-create-standard-queue) y [Creación de claves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html).   
La política de Amazon SQS definida en esta guía no admite el redireccionamiento de mensajes directamente a la misma cola de Amazon SQS o a una cola diferente. 

## Política de claves de privilegio mínimo para Amazon SQS
<a name="sqs-least-privilege-use-case"></a>

En esta sección, describimos los permisos con privilegios mínimos necesarios AWS KMS para la clave administrada por el cliente que utiliza para cifrar la cola de Amazon SQS. Con estos permisos, puede limitar el acceso solo a las entidades previstas a la vez que implementa el privilegio mínimo. La política de claves debe constar de las siguientes instrucciones de política, que describimos detalladamente a continuación:
+ [Otorgue permisos de administrador a la clave AWS KMS](#sqs-use-case-kms-admin-permissions)
+ [Concesión de acceso de solo lectura a los metadatos de clave](#sqs-use-case-read-only-permissions)
+ [Concesión de permisos de KMS de Amazon SNS a Amazon SNS para publicar mensajes en la cola](#sqs-use-case-publish-messages-permissions)
+ [Permiso a los consumidores para descifrar mensajes de la cola](#sqs-use-case-decrypt-messages-permissions)

### Otorgue permisos de administrador a la clave AWS KMS
<a name="sqs-use-case-kms-admin-permissions"></a>

Para crear una AWS KMS clave, debe proporcionar permisos de AWS KMS administrador a la función de IAM que utilice para implementar la AWS KMS clave. Estos permisos de administrador se definen en la siguiente instrucción de política de `AllowKeyAdminPermissions`. Cuando añadas esta declaración a tu política de AWS KMS claves, asegúrate de *<admin-role ARN>* sustituirla por el nombre de recurso de Amazon (ARN) de la función de IAM utilizada para implementar la AWS KMS clave, gestionar la AWS KMS clave o ambas. Puede ser el rol de IAM de su canalización de implementación o el [rol de administrador de su organización](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_access.html) en [AWS Organizations](https://aws.amazon.com/organizations/).

```
{
  "Sid": "AllowKeyAdminPermissions",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "<admin-role ARN>"
    ]
  },
  "Action": [
    "kms:Create*",
    "kms:Describe*",
    "kms:Enable*",
    "kms:List*",
    "kms:Put*",
    "kms:Update*",
    "kms:Revoke*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Delete*",
    "kms:TagResource",
    "kms:UntagResource",
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "*"
}
```

**nota**  
En una política AWS KMS clave, el valor del `Resource` elemento debe ser`*`, lo que significa «esta AWS KMS clave». El asterisco (`*`) identifica la AWS KMS clave a la que se adjunta la política clave.

### Concesión de acceso de solo lectura a los metadatos de clave
<a name="sqs-use-case-read-only-permissions"></a>

Para conceder a otros roles de IAM acceso de solo lectura a los metadatos de clave, agregue la instrucción `AllowReadAccessToKeyMetaData` a su política de claves. Por ejemplo, la siguiente declaración le permite enumerar todas las AWS KMS claves de su cuenta con fines de auditoría. Esta declaración concede al usuario AWS raíz acceso de solo lectura a los metadatos clave. Por lo tanto, cualquier entidad principal de IAM en la cuenta puede tener acceso a los metadatos de clave cuando sus políticas basadas en identidad tengan los permisos enumerados en la siguiente instrucción: `kms:Describe*`, `kms:Get*` y `kms:List*`. Asegúrese de reemplazarlos *<account-ID>* con su propia información. 

```
{
  "Sid": "AllowReadAcesssToKeyMetaData",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::<accountID>:root"
    ]
  },
  "Action": [
    "kms:Describe*",
    "kms:Get*",
    "kms:List*"
  ],
  "Resource": "*"
}
```

### Concesión de permisos de KMS de Amazon SNS a Amazon SNS para publicar mensajes en la cola
<a name="sqs-use-case-publish-messages-permissions"></a>

Para permitir que su tema de Amazon SNS publique mensajes en su cola cifrada de Amazon SQS, agregue la instrucción de política `AllowSNSToSendToSQS` a su política de claves. Esta declaración otorga a Amazon SNS permisos para usar la AWS KMS clave para publicar en su cola de Amazon SQS. Asegúrese de sustituirla por su *<account-ID>* propia información.

**nota**  
Lo `Condition` indicado en la declaración limita el acceso únicamente al servicio Amazon SNS en la misma AWS cuenta.

```
{
  "Sid": "AllowSNSToSendToSQS",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "sns.amazonaws.com"
    ]
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:SourceAccount": "<account-id>"
    }
  }
}
```

### Permiso a los consumidores para descifrar mensajes de la cola
<a name="sqs-use-case-decrypt-messages-permissions"></a>

La siguiente instrucción `AllowConsumersToReceiveFromTheQueue` concede al consumidor de mensajes de Amazon SQS los permisos necesarios para descifrar los mensajes recibidos de la cola de Amazon SQS cifrada. Cuando adjunte la declaración de política, *<consumer's runtime role ARN>* sustitúyala por el ARN del rol de ejecución de IAM del consumidor del mensaje.

```
{
  "Sid": "AllowConsumersToReceiveFromTheQueue",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "<consumer's execution role ARN>"
    ]
  },
  "Action": [
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```

### Política de Amazon SQS de privilegio mínimo
<a name="sqs-use-case-specific-policy"></a>

Esta sección le guía a través de las políticas de colas de Amazon SQS de privilegio mínimo para el caso de uso que se trata en esta guía (por ejemplo, de Amazon SNS a Amazon SQS). La política definida está diseñada para evitar el acceso no intencionado mediante la utilización de una combinación de las instrucciones `Deny` y `Allow`. Las instrucciones `Allow` conceden acceso a la entidad o entidades previstas. Las instrucciones `Deny` impiden que otras entidades no previstas accedan a la cola de Amazon SQS, al mismo tiempo que excluyen a la entidad prevista en la condición de política.

La política de Amazon SQS incluye las siguientes instrucciones, que describimos detalladamente a continuación:
+ [Restricción de los permisos de administración de Amazon SQS](#sqs-use-case-restrict-permissions)
+ [Restricción de las acciones de la cola de Amazon SQS de la organización especificada](#sqs-use-case-restrict-permissions-from-org)
+ [Concesión de permisos de Amazon SQS a los consumidores](#sqs-use-grant-consumer-permissions)
+ [Aplicación del cifrado de los datos en tránsito](#sqs-encryption-in-transit)
+ [Restricción de la transmisión de mensajes a un tema específico de Amazon SNS](#sqs-restrict-transmission-to-topic)
+ [(Opcional) Restricción de la recepción de mensajes a un punto de conexión de VPC específico](#sqs-restrict-message-to-endpoint)

### Restricción de los permisos de administración de Amazon SQS
<a name="sqs-use-case-restrict-permissions"></a>

La siguiente instrucción de política `RestrictAdminQueueActions` restringe los permisos de administración de Amazon SQS solo al rol o a los roles de IAM que utilice para implementar la cola, administrarla o ambas cosas. Asegúrese de sustituir *<placeholder values>* con su propia información. Especifique el ARN del rol de IAM utilizado para implementar la cola de Amazon SQS, así como el de cualquier rol de administrador que deba tener permisos ARNs de administración de Amazon SQS. 

```
{
  "Sid": "RestrictAdminQueueActions",
  "Effect": "Deny",
  "Principal": {
    "AWS": "*"
  },
  "Action": [
    "sqs:AddPermission",
    "sqs:DeleteQueue",
    "sqs:RemovePermission",
    "sqs:SetQueueAttributes"
  ],
  "Resource": "<SQS Queue ARN>",
  "Condition": {
    "StringNotLike": {
      "aws:PrincipalARN": [
        "arn:aws:iam::<account-id>:role/<deployment-role-name>",
        "<admin-role ARN>"
      ]
    }
  }
}
```

### Restricción de las acciones de la cola de Amazon SQS de la organización especificada
<a name="sqs-use-case-restrict-permissions-from-org"></a>

Como ayuda para proteger sus recursos de Amazon SQS del acceso externo (acceso por parte de una entidad ajena a su [organización de AWS](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)), utilice la siguiente instrucción. Esta instrucción limita el acceso a la cola de Amazon SQS a la organización que especifique en la `Condition`. Asegúrese de *<SQS queue ARN>* sustituirlo por el ARN de la función de IAM utilizada para implementar la cola de Amazon SQS y, por el *<org-id>* ID de su organización. 

```
{
  "Sid": "DenyQueueActionsOutsideOrg",
  "Effect": "Deny",
  "Principal": {
    "AWS": "*"
  },
  "Action": [
    "sqs:AddPermission",
    "sqs:ChangeMessageVisibility",
    "sqs:DeleteQueue",
    "sqs:RemovePermission",
    "sqs:SetQueueAttributes",
    "sqs:ReceiveMessage"
  ],
  "Resource": "<SQS queue ARN>",
  "Condition": {
    "StringNotEquals": {
      "aws:PrincipalOrgID": [
        "<org-id>"
      ]
    }
  }
}
```

### Concesión de permisos de Amazon SQS a los consumidores
<a name="sqs-use-grant-consumer-permissions"></a>

Para recibir mensajes de la cola de Amazon SQS, debe proporcionar al consumidor de mensajes los permisos necesarios. La siguiente instrucción de política concede al consumidor que especifique los permisos necesarios para consumir mensajes de la cola de Amazon SQS. Al añadir la declaración a su política de Amazon SQS, asegúrese de *<consumer's IAM runtime role ARN>* sustituirla por el ARN de la función de ejecución de IAM utilizada por el consumidor y por el ARN de la función de IAM utilizada para implementar la cola de Amazon SQS. *<SQS queue ARN>*

```
{
  "Sid": "AllowConsumersToReceiveFromTheQueue",
  "Effect": "Allow",
  "Principal": {
    "AWS": "<consumer's IAM execution role ARN>"
  },
  "Action": [
    "sqs:ChangeMessageVisibility",
    "sqs:DeleteMessage",
    "sqs:GetQueueAttributes",
    "sqs:ReceiveMessage"
  ],
  "Resource": "<SQS queue ARN>"
}
```

Para impedir que otras entidades reciban mensajes de la cola de Amazon SQS, agregue la instrucción `DenyOtherConsumersFromReceiving` a la política de la cola de Amazon SQS. Esta instrucción restringe el consumo de mensajes al consumidor que usted especifique y no permite que otros consumidores tengan acceso, aunque sus permisos de identidad se lo concedan. Asegúrese de sustituir y por su propia información. *<SQS queue ARN>* *<consumer’s runtime role ARN>*

```
{
  "Sid": "DenyOtherConsumersFromReceiving",
  "Effect": "Deny",
  "Principal": {
    "AWS": "*"
  },
  "Action": [
    "sqs:ChangeMessageVisibility",
    "sqs:DeleteMessage",
    "sqs:ReceiveMessage"
  ],
  "Resource": "<SQS queue ARN>",
  "Condition": {
    "StringNotLike": {
      "aws:PrincipalARN": "<consumer's execution role ARN>"
    }
  }
}
```

### Aplicación del cifrado de los datos en tránsito
<a name="sqs-encryption-in-transit"></a>

La siguiente instrucción de política `DenyUnsecureTransport` obliga a los consumidores y productores a utilizar canales seguros (conexiones TLS) para enviar y recibir mensajes de la cola de Amazon SQS. Asegúrese de sustituirlo por *<SQS queue ARN>* el ARN de la función de IAM utilizada para implementar la cola de Amazon SQS.

```
{
  "Sid": "DenyUnsecureTransport",
  "Effect": "Deny",
  "Principal": {
    "AWS": "*"
  },
  "Action": [
    "sqs:ReceiveMessage",
    "sqs:SendMessage"
  ],
  "Resource": "<SQS queue ARN>",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false"
    }
  }
}
```

### Restricción de la transmisión de mensajes a un tema específico de Amazon SNS
<a name="sqs-restrict-transmission-to-topic"></a>

La siguiente instrucción de política `AllowSNSToSendToTheQueue` permite que el tema de Amazon SNS especificado envíe mensajes a la cola de Amazon SQS. Asegúrese de *<SQS queue ARN>* sustituirlo por el ARN de la función de IAM utilizada para implementar la cola de Amazon SQS y por el ARN *<SNS topic ARN>* del tema Amazon SNS.

```
{
  "Sid": "AllowSNSToSendToTheQueue",
  "Effect": "Allow",
  "Principal": {
    "Service": "sns.amazonaws.com"
  },
  "Action": "sqs:SendMessage",
  "Resource": "<SQS queue ARN>",
  "Condition": {
    "ArnLike": {
      "aws:SourceArn": "<SNS topic ARN>"
    }
  }
}
```

La siguiente instrucción de política `DenyAllProducersExceptSNSFromSending` impide que otros productores envíen mensajes a la cola. Sustituya *<SQS queue ARN>* y *<SNS topic ARN>* con su propia información.

```
{
  "Sid": "DenyAllProducersExceptSNSFromSending",
  "Effect": "Deny",
  "Principal": {
    "AWS": "*"
  },
  "Action": "sqs:SendMessage",
  "Resource": "<SQS queue ARN>",
  "Condition": {
    "ArnNotLike": {
      "aws:SourceArn": "<SNS topic ARN>"
    }
  }
}
```

### (Opcional) Restricción de la recepción de mensajes a un punto de conexión de VPC específico
<a name="sqs-restrict-message-to-endpoint"></a>

Para restringir la recepción de mensajes a solo un [punto de conexión de VPC](https://aws.amazon.com/about-aws/whats-new/2018/12/amazon-sqs-vpc-endpoints-aws-privatelink/) específico, agregue la siguiente instrucción de política a su política de colas de Amazon SQS. Esta instrucción impide que un consumidor de mensajes reciba mensajes de la cola a menos que los mensajes procedan del punto de conexión de VPC deseado. *<SQS queue ARN>*Sustitúyalo por el ARN de la función de IAM utilizada para implementar la cola de Amazon SQS y por el ID *<vpce\$1id>* del punto de enlace de la VPC.

```
{
  "Sid": "DenyReceivingIfNotThroughVPCE",
  "Effect": "Deny",
  "Principal": "*",
  "Action": [
    "sqs:ReceiveMessage"
  ],
  "Resource": "<SQS queue ARN>",
  "Condition": {
    "StringNotEquals": {
      "aws:sourceVpce": "<vpce id>"
    }
  }
}
```

## Instrucciones de política de Amazon SQS para la cola de mensajes fallidos
<a name="sqs-policy-dlq"></a>

Agregue las siguientes instrucciones de política, identificadas por su ID de instrucción, a su política de acceso de DLQ:
+ `RestrictAdminQueueActions`
+ `DenyQueueActionsOutsideOrg`
+ `AllowConsumersToReceiveFromTheQueue`
+ `DenyOtherConsumersFromReceiving`
+ `DenyUnsecureTransport`

Además de agregar las instrucciones de política anteriores a su política de acceso de DLQ, también debe agregar una instrucción para restringir la transmisión de mensajes a las colas de Amazon SQS, como se describe en la sección siguiente.

### Restricción de la transmisión de mensajes a las colas de Amazon SQS
<a name="sqs-dlq-restrict-permissions"></a>

Para restringir el acceso solo a las colas de Amazon SQS de la misma cuenta, agregue la siguiente instrucción de política `DenyAnyProducersExceptSQS` a la política de colas de DLQ. Esta instrucción no limita la transmisión de mensajes a una cola específica porque necesita implementar la DLQ antes de crear la cola principal, por lo que no conocerá el ARN de Amazon SQS cuando cree la DLQ. Si necesita limitar el acceso solo a una cola de Amazon SQS, modifique `aws:SourceArn` en la `Condition` con el ARN de su cola de origen de Amazon SQS cuando lo conozca.

```
{
  "Sid": "DenyAnyProducersExceptSQS",
  "Effect": "Deny",
  "Principal": {
    "AWS": "*"
  },
  "Action": "sqs:SendMessage",
  "Resource": "<SQS DLQ ARN>",
  "Condition": {
    "ArnNotLike": {
      "aws:SourceArn": "arn:aws:sqs:<region>:<account-id>:*"
    }
  }
}
```

**importante**  
Las políticas de colas de Amazon SQS definidas en esta guía no restringen la acción `sqs:PurgeQueue` a un rol o roles de IAM determinados. La acción `sqs:PurgeQueue` le permite eliminar todos los mensajes de la cola de Amazon SQS. También puede utilizar esta acción para realizar cambios en el formato de los mensajes sin reemplazar la cola de Amazon SQS. Al depurar una aplicación, puede borrar la cola de Amazon SQS para eliminar mensajes potencialmente erróneos. Cuando pruebe la aplicación, puede dirigir un elevado volumen de mensajes a través de la cola de Amazon SQS y, a continuación, purgarla para empezar de cero antes de pasar a producción. La razón de no restringir esta acción a un rol determinado se debe a que es posible que este rol no se conozca al implementar la cola de Amazon SQS. Deberá agregar este permiso a la política basada en identidades del rol para poder purgar la cola.

## Prevención del problema del suplente confuso entre servicios
<a name="sqs-confused-deputy-prevention"></a>

El [problema del suplente confuso](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) es una cuestión de seguridad en la que una entidad que no tiene permiso para realizar una acción puede obligar a una entidad con más privilegios a realizar la acción. Para evitarlo, AWS proporciona herramientas que te ayudan a proteger tu cuenta si permites que terceros (lo que se conoce como cuentas cruzadas) u otros AWS servicios (conocidos como servicios cruzados) accedan a los recursos de tu cuenta. Las instrucciones de política de esta sección pueden ayudarlo a prevenir el problema del suplente confuso entre servicios.

La suplantación entre servicios puede producirse cuando un servicio (el servicio que lleva a cabo las llamadas) llama a otro servicio (el servicio al que se llama). El servicio que lleva a cabo las llamadas se puede manipular para utilizar sus permisos a fin de actuar en función de los recursos de otro cliente de una manera en la que no debe tener permiso para acceder. Como ayuda para protegerse contra este problema, las políticas basadas en recursos definidas en esta publicación utilizan las claves de contexto de condición de IAM globales [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn), [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) y [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid). Esto limita los permisos que tiene un servicio a un recurso específico, una cuenta específica o una organización específica en AWS Organizations.

## Uso de Analizador de acceso de IAM para revisar el acceso entre cuentas
<a name="sqs-cross-account-findings"></a>

Puede utilizar [AWS IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) para revisar sus políticas de colas AWS KMS y políticas clave de Amazon SQS y avisarle cuando una cola o clave de Amazon SQS conceda acceso a AWS KMS una entidad externa. Analizador de acceso de IAM le ayuda a [identificar los recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-resources.html) de su organización y sus cuentas que se comparten con una entidad externa. Esta zona de confianza puede ser una AWS cuenta o la organización dentro de AWS Organizations que especifique al activar IAM Access Analyzer.

IAM Access Analyzer identifica los recursos compartidos con entidades externas mediante el uso de un razonamiento basado en la lógica para analizar las políticas basadas en los recursos de su entorno. AWS Para cada instancia de un recurso compartido fuera de su zona de confianza, Analizador de acceso genera un resultado. Los [resultados](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-findings.html) incluyen información sobre el acceso y la entidad principal externa a la que se le concede. Revise los resultados para determinar si el acceso es intencionado y seguro, o si el acceso es no intencionado y supone un riesgo para la seguridad. En caso de accesos no intencionados, revise la política afectada y corríjala. Consulte esta [entrada del blog](https://aws.amazon.com/blogs/aws/identify-unintended-resource-access-with-aws-identity-and-access-management-iam-access-analyzer/) para obtener más información sobre cómo AWS IAM Access Analyzer identifica el acceso no deseado a sus recursos. AWS 

[Para obtener más información sobre AWS IAM Access Analyzer, consulte la documentación de IAM Access Analyzer.AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html)

# Permisos de la API de Amazon SQS: referencia de acciones y recursos
<a name="sqs-api-permissions-reference"></a>

A la hora de configurar [Control de acceso](security_iam_service-with-iam.md#access-control) y escribir políticas de permisos que puede asociar a una identidad de IAM, puede utilizar la siguiente tabla como referencia. La lista de la tabla cada acción de Amazon Simple Queue Service, las acciones correspondientes para las que puede conceder permisos para realizar la acción y el AWS recurso para el que puede conceder los permisos.

Especifique las acciones en el campo `Action` de la política y el valor del recurso en el campo `Resource` de la política. Para especificar una acción, use el prefijo `sqs:` seguido del nombre de acción (por ejemplo, `sqs:CreateQueue`).

En la actualidad, Amazon SQS admite las [claves de contexto de condición global disponibles en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html).

Utilice las barras de desplazamiento para ver el resto de la tabla.


**API de Amazon Simple Queue Service y permisos necesarios para realizar acciones**  
<a name="sqs-api-and-required-permissions-for-actions-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-api-permissions-reference.html)