Uso de políticas basadas en la identidad con Amazon SNS - Amazon Simple Notification Service

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.

Uso de políticas basadas en la identidad con Amazon SNS

Amazon Simple Notification Service se integra con AWS Identity and Access Management (IAM) para que puedas especificar qué SNS acciones de Amazon Cuenta de AWS puede realizar un usuario tuyo con SNS los recursos de Amazon. Puede especificar un tema determinado de la política. Por ejemplo, podrías usar variables al crear una IAM política que conceda permiso a determinados usuarios de tu organización para usar la Publish acción con temas específicos en tu organización Cuenta de AWS. Para obtener más información, consulta las variables de política en la IAM guía de uso.

importante

Usar Amazon SNS con IAM no cambia la forma en que usas AmazonSNS. No hay cambios en las SNS acciones de Amazon ni nuevas SNS acciones de Amazon relacionadas con los usuarios y el control de acceso.

Para ver ejemplos de políticas que cubren las SNS acciones y los recursos de Amazon, consultaEjemplos de políticas para Amazon SNS.

IAMy SNS las políticas de Amazon juntas

Utilizas una IAM política para restringir el acceso de tus usuarios a SNS las acciones y los temas de Amazon. Una IAM política puede restringir el acceso solo a los usuarios de tu AWS cuenta, no a otros Cuentas de AWS.

Utilizas una SNS política de Amazon con un tema en particular para restringir quién puede trabajar con ese tema (por ejemplo, quién puede publicar mensajes en él, quién puede suscribirse a él, etc.). SNSLas políticas de Amazon pueden conceder acceso a otros Cuentas de AWS usuarios o a los propios usuarios Cuenta de AWS.

Para conceder a tus usuarios permisos para tus SNS temas de Amazon, puedes usar IAM políticas, SNS políticas de Amazon o ambas. La mayoría de las veces, puede conseguir los mismos resultados con ambas. Por ejemplo, el siguiente diagrama muestra una IAM política y una SNS política de Amazon que son equivalentes. La IAM política permite la SNS Subscribe acción de Amazon sobre el tema llamado topic_xyz en tu cuenta. AWS La IAM política está vinculada a los usuarios Bob y Susan (lo que significa que Bob y Susan tienen los permisos indicados en la política). La SNS política de Amazon también otorga a Bob y Susan permiso Subscribe para acceder a topic_xyz.

SNSPolíticas equivalentes IAM y de Amazon
nota

En el ejemplo anterior se muestran políticas sencillas sin condiciones. Puede especificar una condición determinada en cualquiera de las dos políticas y obtener el mismo resultado.

Hay una diferencia entre SNS las políticas AWS IAM y de Amazon: el sistema de SNS políticas de Amazon te permite conceder permisos a otras Cuentas de AWS personas, mientras que la IAM política no.

Basándose en sus necesidades, decida el uso que quiere hacer de ambos sistemas para administrar los permisos. Los siguientes ejemplos muestran cómo funcionan conjuntamente los dos sistemas de política.

ejemplo 1

En este ejemplo, tanto una IAM política como una SNS política de Amazon se aplican a Bob. La IAM política le otorga permiso para hablar Subscribe sobre cualquiera Cuenta de AWS de los temas, mientras que la SNS política de Amazon le otorga permiso para usarlo Publish sobre un tema específico (topic_xyz). El siguiente diagrama ilustra este concepto.

IAMy SNS las políticas de Amazon para Bob

Si Bob enviara una solicitud para suscribirse a cualquier tema de la AWS cuenta, la IAM política permitiría esa acción. Si Bob enviara una solicitud para publicar un mensaje en topic_xyz, la SNS política de Amazon permitiría la acción.

ejemplo 2

En este ejemplo, nos basamos en el ejemplo 1 (en el que se aplican dos políticas a Bob). Supongamos que Bob publica mensajes en topic_xyz que no debería haber publicado y usted decide quitarle por completo su capacidad para publicar en temas. Lo más fácil es añadir una IAM política que le niegue el acceso a la Publish acción en todos los temas. Esta tercera política anula la SNS política de Amazon que originalmente le dio permiso para publicar en topic_xyz, ya que una denegación explícita siempre anula una autorización (para obtener más información sobre la lógica de evaluación de políticas, consulta). Lógica de evaluación El siguiente diagrama ilustra este concepto.

La política de «Denegar» anula la política de Amazon SNS

Para ver ejemplos de políticas que cubren las SNS acciones y los recursos de Amazon, consultaEjemplos de políticas para Amazon SNS. Para obtener más información sobre cómo redactar SNS las políticas de Amazon, consulta la documentación técnica de Amazon SNS.

ARNFormato de SNS recursos de Amazon

SNSEn Amazon, los temas son el único tipo de recurso que puedes especificar en una política. El siguiente es el formato Amazon Resource Name (ARN) para los temas.

arn:aws:sns:region:account_ID:topic_name

Para obtener más información al respectoARNs, consulte ARNsla Guía IAM del usuario.

A continuación se incluye un ARN tema denominado MyTopic en la región us-east-2, que pertenece a 123456789012. Cuenta de AWS

arn:aws:sns:us-east-2:123456789012:MyTopic

Si tuvieras un tema nombrado MyTopic en cada una de las distintas regiones que Amazon SNS admite, puedes especificarlos de la siguiente maneraARN.

arn:aws:sns:*:123456789012:MyTopic

Puede utilizar los caracteres comodín * e ? en el nombre del tema. Por ejemplo, el ejemplo siguiente podría hacer referencia a todos los temas creados por Bob a los que ha puesto el prefijo bob_.

arn:aws:sns:*:123456789012:bob_*

Para tu comodidad, cuando creas un tema, Amazon SNS devuelve el tema ARN en la respuesta.

SNSAPIAcciones de Amazon

En una IAM política, puedes especificar cualquier acción que Amazon SNS ofrezca. Sin embargo, las Unsubscribe acciones ConfirmSubscription y no requieren autenticación, lo que significa que, aunque especifiques esas acciones en una política, IAM no restringirán el acceso de los usuarios a esas acciones.

Cada acción que especifique en una política debe ir prefijada con la cadena en minúsculas sns:. Para especificar todas SNS las acciones de Amazon, por ejemplo, utilizaríasns:*. Para ver una lista de las acciones, consulta la APIreferencia del Amazon Simple Notification Service.

Claves SNS de la política de Amazon

Amazon SNS implementa las siguientes claves de política AWS amplias, además de algunas claves específicas del servicio.

Para ver una lista de las claves de condición compatibles con cada una de ellas Servicio de AWS, consulta las acciones, los recursos y las claves de condición de la Servicios de AWS Guía del IAMusuario. Para obtener una lista de las claves de condición que se pueden utilizar en varias Servicios de AWS, consulte las claves de contexto de condición AWS globales en la Guía del IAM usuario.

Amazon SNS utiliza las siguientes claves específicas del servicio. Utilice estas claves en políticas que restringen el acceso a solicitudes Subscribe.

  • sns:endpoint: la dirección de URL correo electrónico o la que ARN proviene de una Subscribe solicitud o suscripción previamente confirmada. Utilícela con las condiciones de la cadena (consulte Ejemplos de políticas para Amazon SNS) para restringir el acceso a puntos de enlace específicos (por ejemplo, *@yourcompany.com).

  • sns:Protocol: el valor protocol de una solicitud Subscribe o de una suscripción confirmada anteriormente. Utilícela con las condiciones de la cadena (consulte Ejemplos de políticas para Amazon SNS) para restringir la publicación en protocolos de entrega (por ejemplo, https).

Ejemplos de políticas para Amazon SNS

En esta sección se muestran varias políticas sencillas para controlar el acceso de los usuarios a AmazonSNS.

nota

En el futuro, Amazon SNS podría añadir nuevas acciones que, lógicamente, deberían incluirse en una de las siguientes políticas, en función de los objetivos declarados de la política.

ejemplo 1: Permitir a un grupo crear y administrar temas

En este ejemplo, creamos una política que concede acceso a CreateTopic, ListTopics, SetTopicAttributes y DeleteTopic.

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:CreateTopic", "sns:ListTopics", "sns:SetTopicAttributes", "sns:DeleteTopic"], "Resource": "*" }] }
ejemplo 2: Permitir que el grupo de TI publique mensajes en un tema determinado

En este ejemplo, creamos un grupo de TI y asignamos una política que concede acceso a Publish en el tema de interés específico.

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }
ejemplo 3: Ofrezca a los usuarios la Cuenta de AWS posibilidad de suscribirse a los temas

En este ejemplo, creamos una política que concede acceso a la acción Subscribe, con condiciones de coincidencia de la cadena para las claves de política sns:Protocol y sns:Endpoint.

{ "Statement": [{ "Effect": "Allow", "Action": ["sns:Subscribe"], "Resource": "*", "Condition": { "StringLike": { "SNS:Endpoint": "*@example.com" }, "StringEquals": { "sns:Protocol": "email" } } }] }
ejemplo 4: Permitir a un socio publicar mensajes en un tema determinado

Puedes usar una SNS política de Amazon o una IAM política que permita a un socio publicar sobre un tema específico. Si tu socio tiene una Cuenta de AWS, podría ser más fácil usar una SNS política de Amazon. Sin embargo, cualquier miembro de la empresa del socio que posea las credenciales de AWS seguridad podría publicar mensajes sobre el tema. En este ejemplo se presupone que quiere limitar el acceso a una determinada persona (o aplicación). Para ello, debes tratar al socio como un usuario de tu propia empresa y utilizar una IAM política en lugar de una SNS política de Amazon.

Para este ejemplo, creamos un grupo denominado WidgetCo que representa a la empresa asociada; creamos un usuario para la persona (o aplicación) específica de la empresa asociada que necesita acceso y, a continuación, incluimos al usuario en el grupo.

A continuación, adjuntamos una política que concede al grupo Publish acceso al tema específico mencionado WidgetPartnerTopic.

También queremos evitar que el WidgetCo grupo haga cualquier otra cosa con los temas, por lo que añadimos una declaración que deniega el permiso a cualquier SNS acción de Amazon que no sea Publish sobre cualquier tema que no sea WidgetPartnerTopic. Esto solo es necesario si existe una política amplia en otras partes del sistema que conceda a los usuarios un amplio acceso a AmazonSNS.

{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" }, { "Effect": "Deny", "NotAction": "sns:Publish", "NotResource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" } ] }