Lógica de avaliação de política entre contas
Você pode permitir que um principal em uma conta acesse os recursos em uma segunda conta. Isso é chamado de acesso entre contas. Quando você permite o acesso entre contas, a conta na qual o principal existe é chamada de conta confiável. A conta na qual o recurso existe é a conta de confiança.
Para permitir o acesso entre contas, anexe uma política baseada em recursos ao recurso que deseja compartilhar. É necessário anexar uma política baseada em identidade para a identidade que atua como entidade principal na solicitação. A política baseada em recursos na conta de confiança deve especificar o principal da conta confiável que terá acesso ao recurso. Você pode especificar toda a conta ou os usuários do IAM, usuários federados, funções do IAM ou sessões de função assumida. Você também pode especificar um serviço da AWS como principal. Para ter mais informações, consulte Como especificar uma entidade principal.
A política baseada em identidade do principal deve permitir o acesso solicitado ao recurso no serviço de confiança. Você pode fazer isso ao especificar o ARN do recurso ou ao permitir acesso a todos os recursos (*
).
No IAM, você pode anexar uma política baseada em recurso a uma função do IAM para permitir que entidades de segurança em outras contas assumam essa função. A política baseada em recursos da função é chamada de política de confiança da função. Depois de assumir essa função, os principais permitidos podem usar as credenciais temporárias resultantes para acessar vários recursos na conta. Esse acesso é definido na política de permissões baseadas na identidade da função. Para saber como a ação de permitir o acesso entre contas usando as funções difere da ação de permitir o acesso entre contas usando outras políticas baseadas em recursos, consulte Acesso a recursos entre contas no IAM.
Importante
Outros serviços podem afetar a lógica de avaliação da política. Por exemplo, o AWS Organizations oferece suporte a políticas de controle de serviço que podem ser aplicadas a uma ou mais contas dos principais. O AWS Resource Access Manager oferece suporte a fragmentos de política que controlam quais ações os principais têm permissão para executar nos recursos compartilhados com eles.
Determinar se uma solicitação entre contas é permitida
Para solicitações entre contas, o solicitante na AccountA
confiável deve ter uma política baseada em identidade. Essa política deve permitir fazer uma solicitação para o recurso na AccountB
de confiança. Além disso, a política baseada em recursos na AccountB
deve permitir que o solicitante na AccountA
acesse o recurso.
Ao fazer uma solicitação entre contas, a AWS executa duas avaliações. A AWS avalia a solicitação na conta de confiança e na conta confiável. Para obter mais informações sobre como uma solicitação é avaliada dentro de uma única conta, consulte Determinar se uma solicitação é permitida ou negada em uma conta. A solicitação é permitida somente se ambas as avaliações retornarem uma decisão de Allow
.
-
Quando um principal em uma conta fazer uma solicitação para acessar um recurso em outra conta, esta é uma solicitação entre contas.
-
O principal solicitante existe na conta confiável (
AccountA
). Quando a AWS avalia essa conta, ela verifica a política baseada em identidade e as políticas que podem limitar uma política baseada em identidade. Para ter mais informações, consulte Avaliação de políticas em uma única conta. -
O recurso solicitado existe na conta de confiança (
AccountB
). Quando a AWS avalia esta conta, ela verifica a política baseada em recursos que está em anexo ao recurso solicitado e todas as políticas que podem limitar uma política baseada em recursos. Para ter mais informações, consulte Avaliação de políticas em uma única conta. -
A AWS permite a solicitação somente se ambas avaliações de política de conta permitirem a solicitação.
Exemplo de avaliação de política entre contas
O exemplo a seguir demonstra um cenário no qual um usuário em uma conta recebe permissões por meio de uma política baseada em recursos em uma segunda conta.
Suponha que Carlos seja um desenvolvedor com um usuário do IAM chamadacarlossalazar
na conta 111111111111. Ele quer salvar um arquivo no bucket amzn-s3-demo-bucket-production-logs
do Amazon S3 na conta 222222222222.
Suponha também que a política a seguir esteja anexada ao usuário do IAM carlossalazar
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3ListRead", "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Sid": "AllowS3ProductionObjectActions", "Effect": "Allow", "Action": "s3:*Object*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-production/*" }, { "Sid": "DenyS3Logs", "Effect": "Deny", "Action": "s3:*", "Resource": [ "arn:aws:s3:::*log*", "arn:aws:s3:::*log*/*" ] } ] }
A instrução AllowS3ListRead
nesta política permite que o Carlos visualize uma lista de todos os buckets no Amazon S3. A declaração AllowS3ProductionObjectActions
permite que Carlos tenha acesso total a objetos no bucket amzn-s3-demo-bucket-production
. A instrução DenyS3Logs
nega a Carlos acesso a qualquer bucket do S3 com log
em seu nome. Ela também nega o acesso a todos os objetos nesses buckets.
Além disso, a política baseada em recurso a seguir (chamada de política de bucket) está anexada ao bucket amzn-s3-demo-bucket-production
na conta 222222222222.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:PutObject*", "s3:ReplicateObject", "s3:RestoreObject" ], "Principal": { "AWS": "arn:aws:iam::111111111111:user/carlossalazar" }, "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-production/*" } ] }
Essa política permite que o usuário carlossalazar
acesse objetos no bucket de amzn-s3-demo-bucket-production
. Ele poderá criar e editar, mas não excluir os objetos no bucket. Ele não conseguirá gerir o bucket propriamente dito.
Quando Carlos faz sua solicitação para salvar um arquivo no bucket amzn-s3-demo-bucket-production-logs
, a AWS determina quais políticas são aplicáveis à solicitação. Nesse caso, a política baseada em identidade anexada ao usuário carlossalazar
é a única política aplicável à conta 111111111111
. Na conta 222222222222
, não há uma política baseada em recursos anexada ao bucket amzn-s3-demo-bucket-production-logs
. Quando a AWS avalia a conta 111111111111
, ela retorna uma decisão de Deny
. Isto ocorre porque a declaração DenyS3Logs
na política baseada em identidade explicitamente nega o acesso a quaisquer buckets de log. Para obter mais informações sobre como uma solicitação é avaliada dentro de uma única conta, consulte Determinar se uma solicitação é permitida ou negada em uma conta.
Como a solicitação é explicitamente negada dentro de uma das contas, a decisão final é negar a solicitação.
Suponha que o Carlos perceba o erro e tente salvar o arquivo no bucket Production
. A AWS primeiro verifica a conta 111111111111
para determinar se a solicitação é permitida. Somente a política baseada em identidade se aplica e permite a solicitação. A AWS verificará a conta 222222222222
. Somente a política baseada em recursos anexada ao bucket Production
é aplicável, e permite a solicitação. Como ambas as contas permitem a solicitação, a decisão final é permitir a solicitação.