As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Exemplos de casos de controle de SNS acesso da Amazon
Esta seção descreve alguns exemplos de casos de uso comuns para controle de acesso.
Tópicos
- Conceder Conta da AWS acesso a um tópico
- Limitar as assinaturas a HTTPS
- Publique mensagens em uma SQS fila da Amazon
- Permitir que notificações de eventos do Simple Storage Service (Amazon S3) publiquem em um tópico
- Permitir que SES a Amazon publique em um tópico que seja de propriedade de outra conta
- aws:SourceAccount versus aws:SourceOwner
- Permitir que contas em AWS Organizations uma organização publiquem em um tópico em uma conta diferente
- Permitir que qualquer CloudWatch alarme seja publicado em um tópico em uma conta diferente
- Restrinja a publicação a um SNS tópico da Amazon somente a partir de um VPC endpoint específico
Conceder Conta da AWS acesso a um tópico
Digamos que você tenha um tópico na Amazon SNS e queira permitir que um ou mais Contas da AWS
realizem uma ação específica sobre esse tópico, como publicar mensagens. Você pode fazer isso usando a SNS API ação da AmazonAddPermission
.
A AddPermission
ação permite que você especifique um tópico, uma lista de Conta da AWS IDs, uma lista de ações e um rótulo. SNSEm seguida, a Amazon gera e adiciona automaticamente uma nova declaração de política à política de controle de acesso do tópico. Você não precisa escrever a declaração de política sozinho — a Amazon SNS cuida disso para você. Se precisar remover a política posteriormente, você pode fazer isso ligando RemovePermission
e fornecendo o rótulo que você usou ao adicionar a permissão.
Por exemplo, se você chamar AddPermission
o tópico arn:aws:sns:us-east- 2:444455556666:, MyTopic especificar a ID Conta da AWS 1111-2222-3333, a ação e o rótulo, a Amazon gerará e inserirá a seguinte declaração de política na política de controle de Publish
acesso do tópico: grant-1234-publish
SNS
{ "Statement": [{ "Sid": "grant-1234-publish", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Publish"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic" }] }
Depois que essa declaração for adicionada, o Conta da AWS 1111-2222-3333 terá permissão para publicar mensagens no tópico.
Informações adicionais
-
Gerenciamento personalizado de políticas: embora
AddPermission
seja conveniente para conceder permissões, geralmente é útil gerenciar manualmente a política de controle de acesso do tópico para cenários mais complexos, como adicionar condições ou conceder permissões a IAM funções ou serviços específicos. Você pode fazer isso usando oSetTopicAttributes
API para atualizar diretamente o atributo da política. -
Melhores práticas de segurança: tenha cuidado ao conceder permissões para garantir que somente entidades Contas da AWS ou entidades confiáveis tenham acesso aos seus tópicos da Amazon. SNS Revise e audite regularmente as políticas anexadas aos seus tópicos para manter a segurança.
-
Limites da política: lembre-se de que há limites para o tamanho e a complexidade das SNS políticas da Amazon. Se você precisar adicionar muitas permissões ou condições complexas, certifique-se de que sua política permaneça dentro desses limites.
Limitar as assinaturas a HTTPS
Para restringir o protocolo de entrega de notificações para seu SNS tópico da AmazonHTTPS, você deve criar uma política personalizada. A AddPermission
ação na Amazon SNS não permite que você especifique restrições de protocolo ao conceder acesso ao seu tópico. Portanto, você precisa escrever manualmente uma política que imponha essa restrição e, em seguida, usar a SetTopicAttributes
ação para aplicar a política ao seu tópico.
Veja como você pode criar uma política que limita as assinaturas a: HTTPS
-
Escreva a política. A política deve especificar o Conta da AWS ID ao qual você deseja conceder acesso e impor a condição de que somente HTTPS assinaturas sejam permitidas. Abaixo está um exemplo de política que concede permissão ao Conta da AWS ID 1111-2222-3333 para assinar o tópico, mas somente se o protocolo usado for. 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 a política. Use a
SetTopicAttributes
ação na Amazon SNS API para aplicar essa política ao seu tópico. Defina oPolicy
atributo do tópico para a JSON política que você criou.snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:444455556666:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());
Informações adicionais
-
Personalizando o controle de acesso. Essa abordagem permite aplicar controles de acesso mais granulares, como restringir protocolos de assinatura, o que não é possível apenas com a
AddPermission
ação. As políticas personalizadas oferecem flexibilidade para cenários que exigem condições específicas, como aplicação de protocolos ou restrições de endereço IP. -
Práticas recomendadas de segurança. Limitar as assinaturas HTTPS aumenta a segurança de suas notificações, garantindo que os dados em trânsito sejam criptografados. Analise regularmente suas políticas de tópicos para garantir que elas atendam aos seus requisitos de segurança e conformidade.
-
Teste de políticas. Antes de aplicar a política em um ambiente de produção, teste-a em um ambiente de desenvolvimento para garantir que ela se comporte conforme o esperado. Isso ajuda a evitar problemas de acesso acidental ou restrições não intencionais.
Publique mensagens em uma SQS fila da Amazon
Para publicar mensagens do seu SNS tópico da Amazon em uma SQS fila da Amazon, você precisa configurar as permissões corretas na SQS fila da Amazon. Embora a Amazon SNS e a Amazon SQS usem a linguagem AWS de política de controle de acesso, você deve definir explicitamente uma política na SQS fila da Amazon para permitir que as mensagens sejam enviadas do tópico da AmazonSNS.
Você pode conseguir isso usando a SetQueueAttributes
ação para aplicar uma política personalizada à SQS fila da Amazon. Ao contrário da AmazonSNS, SQS a Amazon não apóia a AddPermission
ação de criar declarações de política com condições. Portanto, você deve escrever a política manualmente.
Veja a seguir um exemplo de uma SQS política da Amazon que concede SNS permissão à Amazon para enviar mensagens para sua fila. Observe que essa política está associada à SQS fila da Amazon, não ao SNS tópico da Amazon. As ações especificadas são SQS ações da Amazon, e o recurso é o Amazon Resource Name (ARN) da fila. Você pode recuperar as filas ARN usando a GetQueueAttributes
ação.
{ "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" } } }] }
Essa política usa a aws:SourceArn
condição para restringir o acesso à SQS fila com base na origem das mensagens enviadas. Isso garante que somente mensagens provenientes do SNS tópico especificado (nesse caso, arn:aws:sns:us-east- 2:444455556666:) possam ser entregues na fila. MyTopic
Informações adicionais
-
ARNFila. Certifique-se de recuperar a SQS fila correta ARN da Amazon usando a
GetQueueAttributes
ação. Isso ARN é essencial para definir as permissões corretas. -
Práticas recomendadas de segurança. Ao configurar políticas, sempre siga o princípio do menor privilégio. Conceda somente as permissões necessárias para que o SNS tópico da Amazon interaja com a SQS fila da Amazon e revise regularmente suas políticas para garantir que elas sejam seguras up-to-date e estejam
-
Políticas padrão na AmazonSNS. Ao contrário de alguns mal-entendidos, a Amazon SNS não concede automaticamente uma política padrão que permita que outras pessoas Serviços da AWS acessem tópicos recém-criados. Você deve definir e anexar explicitamente políticas para controlar o acesso aos seus SNS tópicos da Amazon.
-
Teste e validação. Depois de definir a política, teste a integração publicando mensagens no SNS tópico da Amazon e verificando se elas foram entregues com sucesso na SQS fila da Amazon. Isso ajuda a confirmar se a política está configurada corretamente.
Permitir que notificações de eventos do Simple Storage Service (Amazon S3) publiquem em um tópico
Para permitir que um bucket do Amazon S3 de outro Conta da AWS publique notificações de eventos em seu SNS tópico da Amazon, você precisa configurar adequadamente a política de acesso do tópico. Isso envolve escrever uma política personalizada que conceda permissão ao serviço Amazon S3 a partir do específico Conta da AWS e, em seguida, aplicar essa política ao seu tópico da AmazonSNS.
Veja como você pode configurá-lo:
-
Escreva a política. A política deve conceder o serviço Amazon S3 (s3.amazonaws.com) as permissões necessárias para publicar em seu SNS tópico da Amazon. Você usará a
SourceAccount
condição para garantir que somente o especificado Conta da AWS, que possui o bucket do Amazon S3, possa publicar notificações para o seu tópico.Veja abaixo um exemplo 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" } } }] }
-
Proprietário do tópico — 111122223333 é o ID Conta da AWS que possui o tópico da Amazon. SNS
-
Proprietário do bucket do Amazon S3 — 444455556666 é o ID que Conta da AWS possui o bucket do Amazon S3 que envia notificações.
-
-
Aplique a política. Use a
SetTopicAttributes
ação para definir essa política em seu SNS tópico da Amazon. Isso atualizará o controle de acesso do tópico para incluir as permissões especificadas em sua 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());
Informações adicionais
-
SourceAccount
Condição de uso. ASourceAccount
condição garante que somente eventos originados do especificado Conta da AWS (444455556666 neste caso) possam acionar o tópico da Amazon. SNS Essa é uma medida de segurança para impedir que contas não autorizadas enviem notificações para seu tópico. -
Outros serviços de suporte
SourceAccount
. ASourceAccount
condição é suportada pelos seguintes serviços. É fundamental usar essa condição quando você quiser restringir o acesso ao seu SNS tópico da Amazon com base na conta de origem.-
Amazon API Gateway
-
Amazon CloudWatch
-
DevOpsGuru da Amazon
-
Amazon EventBridge
-
Amazon GameLift
-
Amazon Pinpoint SMS e 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
-
-
Teste e validação. Depois de aplicar a política, teste a configuração acionando um evento no bucket do Amazon S3 e confirmando que ele foi publicado com sucesso em seu tópico da Amazon. SNS Isso ajudará a garantir que sua política seja configurada corretamente.
-
Práticas recomendadas de segurança. Revise e audite regularmente suas políticas de SNS tópicos da Amazon para garantir que estejam em conformidade com seus requisitos de segurança. Limitar o acesso somente a contas e serviços confiáveis é essencial para manter as operações seguras.
Permitir que SES a Amazon publique em um tópico que seja de propriedade de outra conta
Você pode permitir que outra pessoa AWS service (Serviço da AWS) publique em um tópico de propriedade de outra pessoa Conta da AWS. Suponha que você tenha entrado na conta 111122223333, aberto a SES Amazon e criado um e-mail. Para publicar notificações sobre esse e-mail em um SNS tópico da Amazon que a conta 444455556666 possui, você criaria uma política como a seguinte. Para fazer isso, você precisa fornecer informações sobre a entidade principal (o outro serviço) e a propriedade de cada recurso. A Resource
declaração fornece o tópicoARN, que inclui o ID da conta do proprietário do tópico, 444455556666. A instrução "aws:SourceOwner": "111122223333"
especifica que sua conta é proprietária do e-mail.
{ "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" } } } ] }
Ao publicar eventos na AmazonSNS, os seguintes serviços oferecem suporteaws:SourceOwner
:
-
Amazon API Gateway
-
Amazon CloudWatch
-
DevOpsGuru da Amazon
-
Amazon GameLift
-
Amazon Pinpoint SMS e Voice API
-
Amazon RDS
-
Amazon Redshift
-
Amazon SES
-
AWS CodeCommit
-
AWS Directory Service
-
AWS Lambda
-
AWS Systems Manager Incident Manager
aws:SourceAccount
versus aws:SourceOwner
Importante
aws:SourceOwner
está obsoleto e novos serviços podem ser integrados à Amazon SNS somente por meio de e. aws:SourceArn
aws:SourceAccount
A Amazon SNS ainda mantém a compatibilidade com versões anteriores dos serviços existentes que atualmente oferecem suporteaws:SourceOwner
.
Cada chave de aws:SourceOwner
condição aws:SourceAccount
e é definida por alguns Serviços da AWS quando eles publicam em um SNS tópico da Amazon. Quando suportado, o valor será o ID da AWS conta de 12 dígitos em nome do qual o serviço está publicando dados. Alguns serviços aceitam a primeira e alguns aceitam a segunda.
-
Veja como Permitir que notificações de eventos do Simple Storage Service (Amazon S3) publiquem em um tópico as notificações do Amazon S3 são usadas
aws:SourceAccount
e uma lista de AWS serviços que suportam essa condição. -
Veja como Permitir que SES a Amazon publique em um tópico que seja de propriedade de outra conta a Amazon SES usa
aws:SourceOwner
e uma lista de AWS serviços que suportam essa condição.
Permitir que contas em AWS Organizations uma organização publiquem em um tópico em uma conta diferente
O AWS Organizations serviço ajuda você a gerenciar centralmente o faturamento, controlar o acesso e a segurança e compartilhar recursos em todo o seu. Contas da AWS
Você pode encontrar o ID da organização no console do Organizations
Neste exemplo, qualquer organização myOrgId
pode publicar Conta da AWS na Amazon um SNS tópico MyTopic
na conta444455556666
. A política verifica o valor do ID da organização usando a chave de condição 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" } } } ] }
Permitir que qualquer CloudWatch alarme seja publicado em um tópico em uma conta diferente
Nesse caso, qualquer CloudWatch alarme na conta 111122223333
pode ser publicado em um SNS tópico da Amazon na conta444455556666
.
{ "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:*" } } } ] }
Restrinja a publicação a um SNS tópico da Amazon somente a partir de um VPC endpoint específico
Nesse caso, o tópico na conta 444455556666 só pode ser publicado a partir do endpoint com o ID. VPC vpce-1ab2c34d
{ "Statement": [{ "Effect": "Deny", "Principal": "*", "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1ab2c34d" } } }] }