Ejemplos de casos de control de SNS acceso de Amazon - 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.

Ejemplos de casos de control de SNS acceso de Amazon

En esta sección, se ofrecen algunos ejemplos de casos de uso habituales de control de acceso.

Concede Cuenta de AWS acceso a un tema

Supongamos que tienes un tema en el SNS sistema Amazon. En el caso más simple, quieres permitir el Cuentas de AWS acceso de uno o más usuarios a una acción temática específica (por ejemplo, publicar).

Puedes hacerlo mediante la SNS API acción AmazonAddPermission. Toma un tema, una lista de Cuenta de AWS IDs, una lista de acciones y una etiqueta, y crea automáticamente una nueva declaración en la política de control de acceso del tema. En este caso, no redactas una política tú mismo, ya que Amazon genera SNS automáticamente la nueva declaración de política por ti. Puede eliminar la instrucción más tarde, llamando a RemovePermission con su etiqueta.

Por ejemplo, si abordaste AddPermission el tema arn:aws:sns:us-east- 2:444455556666:MyTopic, con el Cuenta de AWS identificador 1111-2222-3333, la Publish acción y la etiquetagrant-1234-publish, Amazon generaría e insertaría la siguiente declaración de política de control de acceso: SNS

{ "Statement": [{ "Sid": "grant-1234-publish", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Publish"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic" }] }

Una vez agregada esta declaración, el usuario con 1111-2222-3333 podrá publicar mensajes en el tema. Cuenta de AWS

Limite las suscripciones a HTTPS

En el siguiente ejemplo, limita el protocolo de entrega de notificaciones aHTTPS.

Necesitas saber cómo redactar tu propia política para el tema, ya que la SNS AddPermission acción de Amazon no te permite especificar una restricción de protocolo al conceder a alguien el acceso a tu tema. En este caso deberá escribir su propia política y luego utilizar la acción SetTopicAttributes para establecer el atributo Policy del tema en su nueva política.

El siguiente ejemplo de política completa otorga al Cuenta de AWS identificador 1111-2222-3333 la posibilidad de suscribirse a las notificaciones de un tema.

{ "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" } } }] }

Publicar mensajes en una SQS cola de Amazon

En este caso de uso, quieres publicar mensajes de tu tema en tu SQS cola de Amazon. Al igual que AmazonSNS, Amazon SQS utiliza el lenguaje de la política de control de acceso de Amazon. Para permitir que Amazon SNS envíe mensajes, tendrás que usar la SQS acción de Amazon SetQueueAttributes para establecer una política de espera.

Una vez más, tendrás que saber cómo redactar tu propia política porque la SQS AddPermission acción de Amazon no crea declaraciones de política con condiciones.

nota

El ejemplo que se presenta a continuación es una SQS política de Amazon (que controla el acceso a tu cola), no una SNS política de Amazon (que controla el acceso a tu tema). Las acciones son SQS acciones de Amazon y el recurso es el nombre del recurso de Amazon (ARN) de la cola. Puede determinar la cola ARN recuperando el QueueArn atributo de la cola con 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 en función del origen del mensaje que se envíe a esta. Puedes usar este tipo de política para permitir que Amazon SNS envíe mensajes a tu cola solo si los mensajes provienen de uno de tus propios temas. En este caso, especificas uno de tus temas en particular, que ARN es arn:aws:sns:us-east- 2:444455556666:. MyTopic

La política anterior es un ejemplo de la SQS política de Amazon que podrías escribir y añadir a una cola específica. Concedería acceso a Amazon SNS y a otros AWS servicios. Amazon SNS otorga una política predeterminada a todos los temas recién creados. La política predeterminada permite el acceso a tu tema a todos los demás AWS servicios. Esta política predeterminada utiliza una aws:SourceArn condición para garantizar que AWS los servicios accedan a tu tema solo en nombre de AWS los recursos de tu propiedad.

Permitir que las notificaciones de eventos de Amazon S3 publiquen en un tema

En este caso, querrá configurar la política de un tema para que el bucket Cuenta de AWS de Amazon S3 de otra persona pueda publicar en su tema. Para obtener más información sobre la publicación de notificaciones desde Amazon S3, vaya a Configuración de notificaciones de eventos de buckets.

En este ejemplo se presupone que ha escrito su propia política y luego ha utilizado la acción SetTopicAttributes para establecer el atributo Policy del tema en su nueva política.

En la instrucción del siguiente ejemplo, se utiliza la condición SourceAccount para asegurarse de que solo la cuenta del propietario de Amazon S3 pueda tener acceso al tema. En este ejemplo, el propietario del tema es 111122223333 y el propietario de Amazon S3 es 444455556666. En el ejemplo se indica que se permite publicar en cualquier bucket de Amazon S3 propiedad de 444455556666. MyTopic

{ "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" } } }] }

Al publicar eventos en AmazonSNS, se admiten los siguientes serviciosaws:SourceAccount:

  • Amazon API Gateway

  • Amazon CloudWatch

  • El DevOps gurú de Amazon

  • Amazon ElastiCache

  • Amazon EventBridge

  • Amazon GameLift

  • Amazon Pinpoint SMS y Voice API

  • Amazon RDS

  • Amazon Redshift

  • Amazon S3 Glacier

  • Amazon SES

  • Amazon Simple Storage Service

  • AWS CodeCommit

  • AWS Directory Service

  • AWS Lambda

  • AWS Systems Manager Incident Manager

Permitir SES que Amazon publique en un tema que sea propiedad de otra cuenta

Puedes permitir que otro AWS servicio publique en un tema que sea propiedad de otra persona Cuenta de AWS. Supongamos que has iniciado sesión en la cuenta 111122223333, has abierto Amazon SES y has creado un correo electrónico. Para publicar notificaciones sobre este correo electrónico en un SNS tema de Amazon que sea propiedad de la cuenta 444455556666, debes 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. La Resource declaración proporciona el temaARN, 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.

{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "aws:SourceOwner": "111122223333" } } } ] }

Al publicar eventos en AmazonSNS, se admiten los siguientes serviciosaws:SourceOwner:

  • Amazon API Gateway

  • Amazon CloudWatch

  • El DevOps gurú de Amazon

  • Amazon ElastiCache

  • Amazon GameLift

  • Amazon Pinpoint SMS y Voice API

  • Amazon RDS

  • Amazon Redshift

  • Amazon SES

  • AWS CodeCommit

  • AWS Directory Service

  • AWS Lambda

  • AWS Systems Manager Incident Manager

aws:SourceAccount frente a aws:SourceOwner

importante

aws:SourceOwnerestá en desuso y los nuevos servicios SNS solo se pueden integrar con Amazon a través de aws:SourceArn yaws:SourceAccount. Amazon SNS sigue manteniendo la compatibilidad con versiones anteriores de los servicios existentes que actualmente son compatiblesaws:SourceOwner.

Algunas personas configuran cada una de las claves de aws:SourceOwner condición aws:SourceAccount y Servicios de AWS cuando se publican en un SNS tema de Amazon. Si se admite, el valor será el ID de AWS cuenta de 12 dígitos en cuyo nombre el servicio publica los datos. Algunos servicios admiten uno, y otros apoyan el otro.

Permita que las cuentas de una organización AWS Organizations publiquen en un tema de otra cuenta

El AWS Organizations servicio le ayuda a gestionar de forma centralizada la facturación, controlar el acceso y la seguridad y compartir los recursos entre sus miembros Cuentas de AWS.

Puede encontrar su ID de organización en la consola de organizaciones. Para obtener más información, consulte Ver detalles de una organización desde la cuenta de administración.

En este ejemplo, cualquier miembro de la organización myOrgId puede publicar Cuenta de AWS en Amazon el SNS tema de MyTopic la 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" } } } ] }

Permite que cualquier CloudWatch alarma se publique en un tema de otra cuenta

En este caso, cualquier CloudWatch alarma de la cuenta 111122223333 puede publicarse en un SNS tema de Amazon de la cuenta444455556666.

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*" } } } ] }

Restringir la publicación a un SNS tema de Amazon solo desde un VPC punto de enlace específico

En este caso, el tema de la cuenta 444455556666 solo puede publicarse desde el VPC punto de enlace 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" } } }] }