Exemplos de políticas para delegação de acesso - AWS Identity and Access Management

Exemplos de políticas para delegação de acesso

Os exemplos a seguir mostram como você pode permitir ou conceder acesso para uma Conta da AWS aos recursos em outra Conta da AWS. Para saber como criar uma política do IAM usando esses exemplos de documentos de política JSON, consulte Criar políticas usando o editor de JSON.

Uso de perfis para delegar acesso aos recursos de outra Conta da AWS

Para obter um tutorial que mostra como usar funções do IAM para conceder aos usuários em uma conta acesso a recursos da AWS que estão em outra conta, consulte Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM.

Importante

Você pode incluir o ARN de uma função ou usuário específico no elemento Principal de uma política de confiança de função. Quando você salva a política, o AWS transforma o ARN em um ID principal exclusivo. Isso ajuda a reduzir o risco de alguém elevar seus privilégios ao remover e recriar a função ou usuário. Normalmente, você não vê esse ID no console, porque há também uma transformação reversa de volta para o ARN quando a política de confiança é exibida. No entanto, se você excluir a função ou usuário, o relacionamento é interrompido. A política não se aplica mais, mesmo se você recriar o usuário ou a função, pois ela não corresponde ao ID principal armazenado na política de confiança. Quando isso acontece, o ID principal é exibido no console, pois a AWS não pode mais mapeá-lo de volta para um ARN. O resultado é que, se você excluir e recriar um usuário ou uma função referenciados no elemento Principal de uma política de confiança, você deverá editar a função para substituir o nome de recurso da Amazon (ARN). Ele é transformado no novo ID principal quando você salva a política.

Uso de uma política para delegar acesso a serviços

O exemplo a seguir mostra uma política que pode ser anexada a uma função. A política permite que dois serviços, Amazon EMR e AWS Data Pipeline, assumam a função. Os serviços podem então realizar qualquer tarefa concedida pela política de permissões atribuída à função (não exibida). Para especificar vários principais de serviço, você não especifica dois elementos Service; pode ter apenas um. Em vez disso, você usa uma variedade de principais de serviços múltiplas como o valor de um único elemento Service.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "elasticmapreduce.amazonaws.com", "datapipeline.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Uso de uma política baseada em recurso para delegar acesso a um bucket do Amazon S3 em outra conta

Neste exemplo, a conta A usa uma política baseada em recurso (uma política de bucket do Amazon S3) para conceder à conta B o acesso total ao bucket do S3 da conta A. Em seguida, a conta B cria uma política de usuário do IAM para delegar esse acesso ao bucket da conta A a um dos usuários na conta B.

A política de bucket do S3 na conta A pode se parecer com a seguinte política. Neste exemplo, o bucket do S3 da conta A chama-se mybucket, e o número de conta da conta B é 111122223333. Ele não especifica quaisquer usuários individuais ou grupos na conta B, apenas a conta em si.

{ "Version": "2012-10-17", "Statement": { "Sid": "AccountBAccess1", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": "s3:*", "Resource": [ "arn:aws:s3:::mybucket", "arn:aws:s3:::mybucket/*" ] } }

Como alternativa, a conta A pode usar as Listas de controle de acesso (ACLs) do Amazon S3 para conceder à conta B acesso ao bucket do S3 ou a um único objeto de um bucket. Nesse caso, a única coisa que muda é como a conta A concede acesso à conta B. A conta B ainda usa uma política para delegar acesso a um grupo do IAM na conta B, conforme descrito na próxima parte deste exemplo. Para mais informações sobre como controlar o acesso em objetos e buckets do S3, acesse Controle de acesso no Guia do usuário do Amazon Simple Storage Service.

O administrador da conta B pode criar a seguinte política de exemplo. A política concede acesso de leitura a um grupo ou usuário na conta B. A política anterior concede acesso à conta B. No entanto, grupos e usuários individuais na conta B não podem acessar o recurso até que uma política de grupo ou usuário explicitamente conceda permissões ao recurso. As permissões nesta política podem ser apenas um subconjunto das permissões anteriores de políticas entre contas. A conta B não pode conceder mais permissões para seus grupos e usuários do que a conta A concedeu para a conta B na primeira política. Nesta política, o elemento Action é explicitamente definido para permitir apenas ações List e o elemento Resource desta política corresponde ao Resource para a política de bucket implantada pela conta A.

Para implementar essa política, a conta B usa o IAM para anexá-la ao usuário (ou grupo) apropriado na conta B.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:List*", "Resource": [ "arn:aws:s3:::mybucket", "arn:aws:s3:::mybucket/*" ] } }

Uso de uma política baseada em recurso para delegar acesso a uma fila do Amazon SQS em outra conta

No exemplo a seguir, a conta A tem uma fila do Amazon SQS que usa uma política baseada em recurso anexada à fila para conceder acesso à fila para a conta B. Em seguida, a conta B usa uma política de grupo do IAM para delegar acesso a um grupo na conta B.

O seguinte exemplo de política de fila concede à conta B permissão para realizar as ações SendMessage e ReceiveMessage na fila da conta A chamada queue1, mas apenas entre o meio-dia e 15:00 em 30 de novembro de 2014. O número de conta da conta B é 1111-2222-3333. A conta A usa o Amazon SQS para implementar esta política.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "sqs:SendMessage", "sqs:ReceiveMessage" ], "Resource": ["arn:aws:sqs:*:123456789012:queue1"], "Condition": { "DateGreaterThan": {"aws:CurrentTime": "2014-11-30T12:00Z"}, "DateLessThan": {"aws:CurrentTime": "2014-11-30T15:00Z"} } } }

A política da conta B para delegar acesso a um grupo na conta B pode se parecer com o exemplo a seguir. A conta B usa o IAM para anexar essa política a um grupo (ou usuário).

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sqs:*", "Resource": "arn:aws:sqs:*:123456789012:queue1" } }

No exemplo de política de usuário do IAM anterior, a conta B usa um caractere curinga para conceder a seu usuário acesso a todas as ações do Amazon SQS na fila da conta A. No entanto, a conta B pode delegar acesso somente na medida em que o acesso foi concedido a ela. O grupo da conta B que tem a segunda política pode acessar a fila apenas entre meio-dia e 15:00 em 30 de novembro de 2014. O usuário só pode executar as ações SendMessage e ReceiveMessage, conforme definido na política de fila do Amazon SQS da conta A.

Não é possível delegar acesso quando o acesso à conta é negado

Uma Conta da AWS não pode delegar acesso aos recursos de outra conta se a outra conta tiver explicitamente negado o acesso à conta pai do usuário. A negação se propaga para os usuários daquela conta, independentemente de terem ou não políticas existentes que concedam acesso a eles.

Por exemplo, a conta A grava uma política de bucket no bucket do S3 da conta A que explicitamente nega o acesso da conta B ao bucket da conta A. Mas a conta B escreve uma política de usuário do IAM que concede a um usuário na conta B acesso ao bucket da conta A. A negação explícita aplicada ao bucket do S3 da conta A se propaga para os usuários da conta B e substitui a política de usuário do IAM que concede acesso ao usuário da conta B. (Para obter informações detalhadas sobre como as permissões são avaliadas, consulte Lógica da avaliação de política.)

A política de bucket da conta A pode se parecer com a seguinte política. Neste exemplo, o bucket do S3 da conta A é chamado de mybucket, e o número da conta B é 1111-2222-3333. A conta A usa o Amazon S3 para implementar esta política.

{ "Version": "2012-10-17", "Statement": { "Sid": "AccountBDeny", "Effect": "Deny", "Principal": {"AWS": "111122223333"}, "Action": "s3:*", "Resource": "arn:aws:s3:::mybucket/*" } }

Esta negação explícita substitui todas as políticas na conta B que concedem permissão para acessar o bucket do S3 na conta A.