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 casos de control de acceso con Amazon SNS
En esta sección, se ofrecen algunos ejemplos de casos de uso habituales de control de acceso.
Concesión Cuenta de AWS acceso a un tema
Supongamos que tiene un tema en Amazon SNS y desea permitir que uno o más Cuentas de AWS realicen una acción específica sobre ese tema, como publicar mensajes. Para ello, puede utilizar la acción de API de Amazon SNS AddPermission.
La acción AddPermission le permite especificar un tema, una lista de identificadores de Cuenta de AWS , una lista de acciones y una etiqueta. A continuación, Amazon SNS genera y añade automáticamente una nueva instrucción de política a la política de control de acceso del tema. No es necesario que escriba usted mismo la instrucción de política: Amazon SNS se encarga de ello por usted. Si necesita eliminar la política más adelante, puede hacerlo llamando a RemovePermission y proporcionando la etiqueta que utilizó al añadir el permiso.
Por ejemplo, si hace referencia al tema arn:aws:sns:us-east- 2:444455556666:MyTopic, especifica el Cuenta de AWS ID 1111-2222-3333, la Publish acción y la etiqueta, Amazon SNS generará e insertará la siguiente declaración de política en la política de grant-1234-publish control de acceso del tema: AddPermission
{ "Statement": [{ "Sid": "grant-1234-publish", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Publish"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic" }] }
Tras añadir esta declaración, el 1111-2222-3333 tendrá permiso para publicar mensajes sobre el tema. Cuenta de AWS
Información adicional:
-
Administración de políticas personalizada: aunque
AddPermissionresulta práctico para conceder permisos, a menudo es útil administrar manualmente la política de control de acceso del tema en escenarios más complejos, como añadir condiciones o conceder permisos a roles de IAM o servicios específicos. Para ello, puede utilizar la APISetTopicAttributespara actualizar el atributo de política directamente. -
Prácticas recomendadas de seguridad: Sea precavido a la hora de conceder permisos para asegurarse de que solo entidades de confianza Cuentas de AWS o entidades tengan acceso a sus temas de Amazon SNS. Revise y audite periódicamente las políticas adjuntas a sus temas para mantener la seguridad.
-
Límites de las políticas: tenga en cuenta que existen límites en cuanto al tamaño y la complejidad de las políticas de Amazon SNS. Si necesita añadir muchos permisos o condiciones complejas, asegúrese de que su política se mantenga dentro de estos límites.
Limitar las suscripciones a HTTPS
Para restringir el protocolo de entrega de notificaciones para su tema de Amazon SNS a HTTPS, debe crear una política personalizada. La acción AddPermission de Amazon SNS no le permite especificar restricciones de protocolo al conceder acceso a su tema. Por lo tanto, debe crear manualmente una política que imponga esta restricción y, a continuación, utilizar la acción SetTopicAttributes para aplicar la política a su tema.
A continuación, le explicamos cómo crear una política que limite las suscripciones a HTTPS:
-
Escriba la política. La política debe especificar el ID de Cuenta de AWS al que desea conceder el acceso e imponer la condición de que solo se permitan las suscripciones HTTPS. A continuación, se muestra un ejemplo de política que concede a la Cuenta de AWS con el ID 1111-2222-3333 permiso para suscribirse al tema, pero solo si el protocolo utilizado es HTTPS.
{ "Statement": [{ "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Subscribe"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "sns:Protocol": "https" } } }] } -
Aplique la política. Utilice la acción
SetTopicAttributesde la API de Amazon SNS para aplicar esta política a su tema. Establezca el atributoPolicydel tema en la política JSON que creó.snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:444455556666:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());
Información adicional:
-
Personalización del control de acceso. Este enfoque le permite aplicar controles de acceso más detallados, como restringir los protocolos de suscripción, lo que no es posible solo con una acción
AddPermission. Las políticas personalizadas ofrecen flexibilidad en situaciones que requieren condiciones específicas, como la aplicación de protocolos o las restricciones de direcciones IP. -
Prácticas recomendadas de seguridad. Limitar las suscripciones a HTTPS mejora la seguridad de las notificaciones al garantizar que los datos en tránsito estén cifrados. Revise periódicamente sus políticas temáticas para asegurarse de que cumplen sus requisitos de seguridad y cumplimiento.
-
Pruebas de la política. Antes de aplicar la política en un entorno de producción, pruébela en un entorno de desarrollo para asegurarse de que se comporta según lo esperado. Esto ayuda a evitar problemas de acceso accidental o restricciones no deseadas.
Publique en una cola de Amazon SQS.
Para publicar mensajes desde su tema de Amazon SNS en una cola de Amazon SQS, debe configurar los permisos correctos en la cola de Amazon SQS. Si bien tanto Amazon SNS como Amazon SQS utilizan el lenguaje de políticas AWS de control de acceso de Amazon, usted debe establecer explícitamente una política en la cola de Amazon SQS para permitir el envío de mensajes desde el tema de Amazon SNS.
Para ello, utilice la acción SetQueueAttributes para aplicar una política personalizada a la cola de Amazon SQS. A diferencia de Amazon SNS, Amazon SQS no admite la acción AddPermission para crear instrucciones de política con condiciones. Por lo tanto, debe escribir la política manualmente.
A continuación, se muestra un ejemplo de una política de Amazon SQS que concede permiso a Amazon SNS para enviar mensajes a la cola. Tenga en cuenta que esta política está asociada a la cola de Amazon SQS, no al tema de Amazon SNS. Las acciones especificadas son acciones de Amazon SQS y el recurso es el Nombre de recurso de Amazon (ARN) de la cola. Puede recuperar el ARN de la cola mediante la acción GetQueueAttributes.
{ "Statement": [{ "Sid": "Allow-SNS-SendMessage", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": ["sqs:SendMessage"], "Resource": "arn:aws:sqs:us-east-2:444455556666:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:444455556666:MyTopic" } } }] }
Esta política utiliza la condición aws:SourceArn para restringir el acceso a la cola de SQS en función del origen de los mensajes que se envían. Esto garantiza que solo los mensajes que se originen en el tema de SNS especificado (en este caso, arn:aws:sns:us-east- 2:444455556666:) puedan entregarse a la cola. MyTopic
Información adicional:
-
ARN de la cola. Asegúrese de recuperar el ARN correcto de su cola de Amazon SQS mediante la acción.
GetQueueAttributesEste ARN es esencial para establecer los permisos correctos. -
Prácticas recomendadas de seguridad. Al configurar políticas, siga siempre el principio de privilegios mínimos. Conceda únicamente los permisos necesarios al tema de Amazon SNS para interactuar con la cola de Amazon SQS y revise periódicamente sus políticas para asegurarse de que están actualizadas y son seguras
-
Políticas predeterminadas en Amazon SNS. Amazon SNS no otorga automáticamente una política predeterminada que permita a otras personas Servicios de AWS o a cuentas acceder a los temas recién creados. De forma predeterminada, los temas de Amazon SNS se crean sin permisos, lo que significa que son privados y solo puede acceder a ellos la cuenta que los creó. Para permitir el acceso a otras Servicios de AWS personas, cuentas o personas principales, debe definir explícitamente y adjuntar una política de acceso al tema. Esto se ajusta al principio del privilegio mínimo, que garantiza que no se conceda ningún acceso no intencionado de forma predeterminada.
-
Pruebas y validación. Tras configurar la política, pruebe la integración publicando los mensajes en el tema Amazon SNS y verificando que se hayan entregado correctamente a la cola de Amazon SQS. Esto ayuda a confirmar que la política está configurada correctamente.
Permitir que las notificaciones de eventos de Amazon S3 publiquen en un tema
Para permitir que un bucket de Amazon S3 de otro Cuenta de AWS publique notificaciones de eventos en su tema de Amazon SNS, debe configurar la política de acceso del tema en consecuencia. Esto implica escribir una política personalizada que conceda permiso al servicio Amazon S3 desde la Cuenta de AWS específica y, a continuación, aplicar esta política a su tema de Amazon SNS.
Así es como se puede configurar:
-
Escriba la política. La política debe conceder al servicio Amazon S3 (s3.amazonaws.com) los permisos necesarios para publicar en su tema de Amazon SNS. Utilizará
SourceAccountesta condición para garantizar que solo la persona especificada Cuenta de AWS, que es la propietaria del bucket de Amazon S3, pueda publicar notificaciones en su tema.A continuación se muestra un ejemplo de política:
{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:111122223333:MyTopic", "Condition": { "StringEquals": { "AWS:SourceAccount": "444455556666" } } }] }-
Propietario del tema: 111122223333 es el Cuenta de AWS ID propietario del tema de Amazon SNS.
-
Propietario del bucket de Amazon S3: 444455556666 es el Cuenta de AWS ID propietario del bucket de Amazon S3 que envía las notificaciones.
-
-
Aplique la política. Utilice la acción
SetTopicAttributespara establecer esta política en su tema de Amazon SNS. Esto actualizará el control de acceso del tema para incluir los permisos especificados en su política personalizada.snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:111122223333:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());
Información adicional:
-
Uso de la condición
SourceAccount. LaSourceAccountcondición garantiza que solo los eventos que se originen en el lugar especificado Cuenta de AWS (444455556666 en este caso) puedan activar el tema de Amazon SNS. Se trata de una medida de seguridad para evitar que cuentas no autorizadas envíen notificaciones a su tema. -
Otros servicios que admiten
SourceAccount. La condiciónSourceAccountse admite en los siguientes servicios. Es fundamental utilizar esta condición si quiere restringir el acceso a su tema de Amazon SNS en función de la cuenta de origen.-
Amazon API Gateway
-
Amazon CloudWatch
-
DevOpsGurú de Amazon
-
Amazon EventBridge
-
GameLift Servidores Amazon
-
API de SMS y voz de Amazon Pinpoint
-
Amazon RDS
-
Amazon Redshift
-
Amazon Glacier
-
Amazon SES
-
Amazon Simple Storage Service
-
AWS CodeCommit
-
Directory Service
-
AWS Lambda
-
Administrador de incidentes de AWS Systems Manager
-
-
Pruebas y validación. Tras aplicar la política, pruebe la configuración desencadenando un evento en el bucket de Amazon S3 y confirmando que se ha publicado correctamente en su tema de Amazon SNS. Esto ayudará a garantizar que la política esté correctamente configurada.
-
Prácticas recomendadas de seguridad. Revise y audite con regularidad sus políticas temáticas de Amazon SNS para asegurarse de que cumplen con sus requisitos de seguridad. Limitar el acceso únicamente a cuentas y servicios de confianza es fundamental para mantener la seguridad de las operaciones.
Permitir que Amazon SES publique en un tema propiedad de otra cuenta
Puedes permitir que otra Servicio de AWS persona publique en un tema que sea propiedad de otra persona Cuenta de AWS. Supongamos que ha iniciado sesión en la cuenta 111122223333, ha abierto Amazon SES y ha creado un correo electrónico. Para publicar notificaciones sobre este correo electrónico en un tema de Amazon SNS que posee la cuenta 444455556666, debe crear una política como la siguiente. Para ello, debe proporcionar información sobre la entidad principal (el otro servicio) y la propiedad de cada recurso. En la instrucción Resource, se proporciona el tema ARN, que incluye el ID de cuenta del propietario del tema, 444455556666. En la instrucción "aws:SourceOwner":
"111122223333", se especifica que su cuenta es propietaria del correo electrónico.
Al publicar eventos en Amazon SNS, los siguientes servicios son compatibles con aws:SourceOwner:
-
Amazon API Gateway
-
Amazon CloudWatch
-
DevOpsGurú de Amazon
-
GameLift Servidores Amazon
-
API de SMS y voz de Amazon Pinpoint
-
Amazon RDS
-
Amazon Redshift
-
Amazon SES
-
AWS CodeCommit
-
Directory Service
-
AWS Lambda
-
Administrador de incidentes de AWS Systems Manager
aws: SourceAccount versus aws: SourceOwner
importante
aws:SourceOwner está obsoleto y los nuevos servicios pueden integrarse con Amazon SNS solo a través de aws:SourceArn y aws:SourceAccount. Amazon SNS sigue manteniendo la compatibilidad con versiones anteriores para los servicios existentes que actualmente admiten aws:SourceOwner.
Cuando publican en un tema de Amazon SNS, algunos Servicios de AWS establecen las claves de condición aws:SourceAccount y aws:SourceOwner. Cuando esté admitido, el valor será el identificador de AWS cuenta de 12 dígitos en cuyo nombre el servicio publica datos. Algunos servicios admiten uno, y otros apoyan el otro.
-
Consulte Permitir que las notificaciones de eventos de Amazon S3 publiquen en un tema cómo se utilizan las notificaciones de Amazon S3
aws:SourceAccounty una lista de AWS los servicios que admiten esa condición. -
Consulte Permitir que Amazon SES publique en un tema propiedad de otra cuenta el uso que hace Amazon SES
aws:SourceOwnery una lista de AWS los servicios que cumplen con esa condición.
Permita que las cuentas de una organización estén en AWS Organizations publicar en un tema de una cuenta diferente
El AWS Organizations servicio le ayuda a gestionar la facturación de forma centralizada, controlar el acceso y la seguridad y compartir los recursos entre sus empresas Cuentas de AWS.
Puede encontrar su ID de organización en la consola de organizaciones
En este ejemplo, cualquier miembro de la organización myOrgId puede publicar Cuenta de AWS en Amazon SNS el tema MyTopic de su cuenta444455556666. La política comprueba el valor del ID de organización mediante la clave de condición global aws:PrincipalOrgID.
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "myOrgId" } } } ] }
Permita que cualquier CloudWatch alarma se publique en un tema de una cuenta diferente
Siga los pasos siguientes para invocar un tema de Amazon SNS con una CloudWatch alarma en varios. Cuentas de AWS En este ejemplo se utilizan dos cuentas:
-
La cuenta A se usa para crear la CloudWatch alarma.
-
La cuenta B se utiliza para crear un tema de SNS.
Creación de un tema de SNS en la cuenta B
Inicie sesión en la consola de Amazon SNS
. -
En el panel de navegación, elige Temas y, a continuación, seleccione Crear tema.
-
Elija Estándar para el tipo de tema y, a continuación, asigne un nombre al tema.
-
Seleccione Crear tema y, a continuación, copie el ARN del tema.
-
En el panel de navegación, seleccione Suscripciones y, a continuación, elija Crear suscripción.
-
Agregue el ARN del tema en la sección ARN del tema, elija Correo electrónico como protocolo y, a continuación, introduzca una dirección de correo electrónico.
-
Elija Crear suscripción y, a continuación, compruebe su correo electrónico para confirmar la suscripción.
Crea una CloudWatch alarma en la cuenta A
Abre la CloudWatch consola en https://console.aws.amazon.com/cloudwatch/
. -
En el panel de navegación, elija Alarmas y, a continuación, elija Crear alarmas.
-
Si aún no ha creado una alarma, cree una ahora. De lo contrario, seleccione su métrica y, a continuación, proporcione los detalles del umbral y los parámetros de comparación.
-
Desde Configurar acciones, en Notificaciones, elija Utilizar ARN del tema para notificar a otras cuentas y, a continuación, introduzca el ARN del tema de la cuenta B.
-
Introduzca un nombre para la alarma y, a continuación, elija Crear alarma.
Actualización de la política de acceso del tema de SNS en la cuenta B
Inicie sesión en la consola de Amazon SNS
. -
En el panel de navegación, elija Temas y, a continuación, seleccione el tema.
-
Seleccione Editar y, a continuación, añada lo siguiente a la política:
nota
Sustituya los valores de ejemplo en la siguiente política por los suyos.
Pruebe la alarma
Para probar la alarma, cambie el umbral de la alarma en función de los puntos de datos de la métrica o cambie manualmente el estado de la alarma. Al cambiar el umbral o el estado de la alarma, recibirá una notificación por correo electrónico.
Solución alternativa para usar un tema local de Amazon SNS y reenviar mensajes
Siga los pasos siguientes para habilitar las notificaciones multicuenta de Amazon SNS para CloudWatch las alarmas:
-
Cree un tema de Amazon SNS en la misma cuenta que la CloudWatch alarma (111122223333).
-
Suscriba una función de Lambda o una EventBridge regla de Amazon a ese tema de Amazon SNS.
-
A continuación, la función o EventBridge regla de Lambda puede publicar el mensaje en el tema de Amazon SNS de la cuenta de destino (444455556666).
Restringir las publicaciones en un tema de Amazon SNS únicamente desde un punto de enlace de la VPC específico
En este caso, el tema de la cuenta 444455556666 puede publicar únicamente desde el punto de enlace de la VPC con el ID vpce-1ab2c34d.
{ "Statement": [{ "Effect": "Deny", "Principal": "*", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1ab2c34d" } } }] }