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á.
Usando políticas baseadas em identidade com a Amazon SNS
Tópicos
O Amazon Simple Notification Service se integra com AWS Identity and Access Management (IAM) para que você possa especificar quais SNS ações da Amazon um usuário Conta da AWS pode realizar com SNS os recursos da Amazon. Você pode especificar um tópico específico na política. Por exemplo, você pode usar variáveis ao criar uma IAM política que conceda a determinados usuários da sua organização permissão para usar a Publish
ação com tópicos específicos em sua Conta da AWS. Para obter mais informações, consulte Variáveis de política no IAM guia de uso.
Importante
Usar a Amazon SNS com IAM não muda a forma como você usa a AmazonSNS. Não há alterações nas SNS ações da Amazon nem novas SNS ações da Amazon relacionadas a usuários e controle de acesso.
Para exemplos de políticas que abrangem SNS ações e recursos da Amazon, consulteExemplos de políticas para a Amazon SNS.
IAMe SNS as políticas da Amazon juntas
Você usa uma IAM política para restringir o acesso dos seus usuários às SNS ações e tópicos da Amazon. Uma IAM política pode restringir o acesso somente aos usuários da sua AWS conta, não a outros Contas da AWS.
Você usa uma SNS política da Amazon com um tópico específico para restringir quem pode trabalhar com esse tópico (por exemplo, quem pode publicar mensagens nele, quem pode se inscrever nele etc.). SNSAs políticas da Amazon podem conceder acesso a outras Contas da AWS pessoas ou a usuários dentro da sua Conta da AWS.
Para conceder aos seus usuários permissões para seus SNS tópicos da Amazon, você pode usar IAM políticas, SNS políticas da Amazon ou ambas. Na maior parte das vezes, você obtém os mesmos resultados com qualquer uma delas. Por exemplo, o diagrama a seguir mostra uma IAM política e uma SNS política da Amazon que são equivalentes. A IAM política permite a SNS Subscribe
ação da Amazon para o tópico chamado topic_xyz em sua conta. AWS A IAM política é anexada aos usuários Bob e Susan (o que significa que Bob e Susan têm as permissões declaradas na política). A SNS política da Amazon também concede permissão para Bob e Susan acessarem Subscribe
topic_xyz.
nota
O exemplo anterior mostra políticas simples, sem condições. Você pode especificar determinada condição na política e obter o mesmo resultado.
Há uma diferença entre AWS IAM SNS as políticas da Amazon: o sistema de SNS políticas da Amazon permite que você conceda permissão a outras pessoas Contas da AWS, enquanto a IAM política não.
Você decide como usar ambos os sistemas juntos para gerenciar suas permissões, de acordo com suas necessidades. Os exemplos a seguir mostram como os dois sistemas de política funcionam em conjunto.
exemplo 1
Neste exemplo, tanto uma IAM política quanto uma SNS política da Amazon se aplicam a Bob. A IAM política concede a ele permissão para Subscribe
qualquer um dos tópicos, enquanto a SNS política Conta da AWS da Amazon concede a ele permissão para usar Publish
em um tópico específico (topic_xyz). O seguinte diagrama ilustra o conceito.
Se Bob enviasse uma solicitação para se inscrever em qualquer tópico da AWS conta, a IAM política permitiria a ação. Se Bob enviasse uma solicitação para publicar uma mensagem para topic_xyz, a SNS política da Amazon permitiria a ação.
exemplo 2
Neste exemplo, nós nos baseamos no exemplo 1 (onde há duas políticas que se aplicam a Pedro). Digamos que Pedro publique mensagens no tópico topic_xyz que não deveria ter publicado. Por isso, você deseja remover totalmente a capacidade dele de publicar nos tópicos. A coisa mais fácil de fazer é adicionar uma IAM política que negue a ele o acesso à Publish
ação em todos os tópicos. Essa terceira política substitui a política da Amazon que originalmente lhe deu permissão para publicar em topic_xyz, porque uma negação explícita sempre substitui uma permissão (para obter mais informações sobre a lógica de avaliação de SNS políticas, consulte). Lógica de avaliação O seguinte diagrama ilustra o conceito.
Para exemplos de políticas que abrangem SNS ações e recursos da Amazon, consulteExemplos de políticas para a Amazon SNS. Para obter mais informações sobre como escrever SNS políticas da Amazon, acesse a documentação técnica da Amazon SNS
ARNFormato SNS de recursos da Amazon
Para a AmazonSNS, os tópicos são o único tipo de recurso que você pode especificar em uma política. A seguir está o formato Amazon Resource Name (ARN) para tópicos.
arn:aws:sns:region
:account_ID
:topic_name
Para obter mais informações sobreARNs, acesse o ARNsGuia IAM do Usuário.
O texto a seguir é ARN de um tópico nomeado MyTopic na região us-east-2, pertencente a 123456789012. Conta da AWS
arn:aws:sns:us-east-2:123456789012:MyTopic
Se você tivesse um tópico nomeado MyTopic em cada uma das diferentes regiões suportadas pela AmazonSNS, você poderia especificar os tópicos com o seguinteARN.
arn:aws:sns:*:123456789012:MyTopic
Você pode usar os caracteres curinga * e ? no nome do tópico. Por exemplo, o seguinte poderia fazer referência a todos os tópicos criados por Pedro nos quais ele inseriu o prefixo bob_
.
arn:aws:sns:*:123456789012:bob_*
Para sua conveniência, ao criar um tópico, a Amazon SNS retorna os tópicos ARN na resposta.
SNSAPIAções da Amazon
Em uma IAM política, você pode especificar qualquer ação SNS oferecida pela Amazon. No entanto, as Unsubscribe
ações ConfirmSubscription
e não exigem autenticação, o que significa que, mesmo que você especifique essas ações em uma política, IAM não restringirá o acesso dos usuários a essas ações.
Cada ação que você especificar em uma política deve ser prefixada com a string sns:
em letras minúsculas. Para especificar todas as SNS ações da Amazon, por exemplo, você usariasns:*
. Para obter uma lista das ações, acesse a APIReferência do Amazon Simple Notification Service.
Chaves SNS de política da Amazon
A Amazon SNS implementa as seguintes chaves AWS de política amplas, além de algumas chaves específicas do serviço.
Para obter uma lista das chaves de condição suportadas por cada uma delas AWS service (Serviço da AWS), consulte Ações, recursos e chaves de condição Serviços da AWS no Guia IAM do usuário. Para obter uma lista de chaves de condição que podem ser usadas em várias Serviços da AWS, consulte chaves de contexto de condição AWS global no Guia IAM do usuário.
A Amazon SNS usa as seguintes chaves específicas do serviço. Use essas chaves em políticas que restringem o acesso a solicitações de Subscribe
.
-
sns:endpoint— O URL endereço de e-mail ou de uma
Subscribe
solicitação ou ARN de uma assinatura previamente confirmada. Use com condições de string (consulte Exemplos de políticas para a Amazon SNS) para restringir o acesso a endpoints específicos (por exemplo, *@yourcompany.com). -
sns:protocol: o valor
protocol
de uma solicitaçãoSubscribe
ou de uma assinatura confirmada anteriormente. Use com condições de string (consulte Exemplos de políticas para a Amazon SNS) para restringir a publicação a protocolos de entrega específicos (por exemplo, https).
Exemplos de políticas para a Amazon SNS
Esta seção mostra várias políticas simples para controlar o acesso do usuário à AmazonSNS.
nota
No futuro, a Amazon SNS poderá adicionar novas ações que, logicamente, deveriam ser incluídas em uma das políticas a seguir, com base nas metas estabelecidas pela política.
exemplo 1: Permitir que um grupo crie e gerencie tópicos
Neste exemplo, criamos uma política que concede acesso a CreateTopic
, ListTopics
, SetTopicAttributes
e DeleteTopic
.
{ "Statement": [{ "Effect": "Allow", "Action": ["sns:CreateTopic", "sns:ListTopics", "sns:SetTopicAttributes", "sns:DeleteTopic"], "Resource": "*" }] }
exemplo 2: Permitir que o grupo de TI publique mensagens em determinado tópico
Neste exemplo, criamos um grupo de TI e atribuímos uma política que concede acesso a Publish
no tópico de interesse específico.
{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:MyTopic" }] }
exemplo 3: Permita que os Conta da AWS usuários se inscrevam em tópicos
Neste exemplo, criamos uma política que concede acesso à ação Subscribe
, com as condições de correspondência de string para as chaves de política sns:Protocol
e sns:Endpoint
.
{ "Statement": [{ "Effect": "Allow", "Action": ["sns:Subscribe"], "Resource": "*", "Condition": { "StringLike": { "SNS:Endpoint": "*@example.com" }, "StringEquals": { "sns:Protocol": "email" } } }] }
exemplo 4: Permitir que um parceiro publique mensagens em determinado tópico
Você pode usar uma SNS política da Amazon ou uma IAM política para permitir que um parceiro publique sobre um tópico específico. Se seu parceiro tiver uma Conta da AWS, talvez seja mais fácil usar uma SNS política da Amazon. No entanto, qualquer pessoa da empresa do parceiro que possua as credenciais AWS de segurança pode publicar mensagens sobre o tópico. Este exemplo pressupõe que você deseje limitar o acesso a determinada pessoa (ou aplicação). Para fazer isso, você precisa tratar o parceiro como um usuário dentro de sua própria empresa e usar uma IAM política em vez de uma SNS política da Amazon.
Neste exemplo, criamos um grupo chamado WidgetCo que representa a empresa parceira; criamos um usuário para a pessoa específica (ou aplicativo) na empresa parceira que precisa de acesso; e então colocamos o usuário no grupo.
Em seguida, anexamos uma política que concede ao grupo Publish
acesso ao tópico específico nomeado WidgetPartnerTopic.
Também queremos evitar que o WidgetCo grupo faça qualquer outra coisa com tópicos, então adicionamos uma declaração que nega permissão para qualquer SNS ação da Amazon, exceto Publish
em qualquer outro tópico que não WidgetPartnerTopic seja. Isso só é necessário se houver uma política ampla em outras partes do sistema que conceda aos usuários amplo acesso à AmazonSNS.
{ "Statement": [{ "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" }, { "Effect": "Deny", "NotAction": "sns:Publish", "NotResource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic" } ] }