Usando políticas baseadas em identidade com a Amazon SNS - Amazon Simple Notification Service

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

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.

Compara uma IAM política e uma SNS política da Amazon, mostrando que ambas concedem permissões equivalentes a dois usuários, Bob e Susan, permitindo que eles se inscrevam em um SNS tópico específico da Amazon em um. Conta da AWS A principal diferença destacada é que SNS as políticas da Amazon podem conceder permissões a usuários de diferentes tipos Contas da AWS, enquanto IAM as políticas não podem.
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.

Mostra como uma IAM política e uma SNS política da Amazon se aplicam ao usuário Bob, com a IAM política permitindo que ele assine qualquer tópico no Conta da AWS, e a SNS política da Amazon concedendo a ele permissão para publicar mensagens em um tópico específico chamado “topic_xyz”. O diagrama enfatiza a distinção entre permissões gerais concedidas pela IAM política e permissões específicas concedidas pela SNS política da Amazon para um tópico específico.

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.

Ilustração de como adicionar uma IAM política que nega a ação “Publicar” para todos os tópicos pode substituir uma SNS política existente da Amazon que permitia ao usuário Bob publicar em um tópico específico, “topic_xyz”. A política de IAM negação tem precedência sobre a SNS política da Amazon, impedindo efetivamente que Bob publique em qualquer tópico, incluindo “topic_xyz”.

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ção Subscribe 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" } ] }