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.
Temas
- Concede Cuenta de AWS acceso a un tema
- Limite las suscripciones a HTTPS
- Publicar mensajes en una SQS cola de Amazon
- Permitir que las notificaciones de eventos de Amazon S3 publiquen en un tema
- Permitir SES que Amazon publique en un tema que sea propiedad de otra cuenta
- aws:SourceAccount frente a aws:SourceOwner
- Permita que las cuentas de una organización AWS Organizations publiquen en un tema de otra cuenta
- Permite que cualquier CloudWatch alarma se publique en un tema de otra cuenta
- Restringir la publicación a un SNS tema de Amazon solo desde un VPC punto de enlace específico
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:SourceOwner
está 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.
-
Permitir que las notificaciones de eventos de Amazon S3 publiquen en un temaConsulte cómo se utilizan las notificaciones de Amazon S3
aws:SourceAccount
y una lista de AWS los servicios que admiten esa condición. -
Consulta Permitir SES que Amazon publique en un tema que sea propiedad de otra cuenta cómo SES usa Amazon
aws:SourceOwner
y una lista de los AWS servicios que cumplen con esa condición.
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
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" } } }] }