Lógica de avaliação de política entre contas
É possível 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. É possível especificar toda a conta ou os usuários do IAM, usuários federados, perfis do IAM ou sessões de perfil assumido. 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. É possível fazer isso especificando o ARN do recurso.
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 e políticas de controle de recursos que podem ser aplicadas a entidades principais e a recursos em uma ou mais contas. O AWS Resource Access Manager oferece suporte a fragmentos de políticas que controlam quais ações as entidades principais têm permissão para executar nos recursos compartilhados com elas.
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 Como a lógica do código de imposição da AWS avalia as solicitações para permitir ou negar acesso. 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 das políticas baseadas em identidade com limites de permissões. -
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 das políticas baseadas em identidade com políticas baseadas em recurso. -
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 perfil 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 perfil do IAM de nome Demo
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 perfil do IAM Demo
.
{ "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
.
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:role/Demo" }, "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-production/*" } ] }
Essa política permite que o perfil Demo
acesse objetos no bucket amzn-s3-demo-bucket-production
. O perfil poderá criar e editar, mas não excluir os objetos no bucket. O perfil não conseguirá gerenciar 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 perfil Demo
é 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 Como a lógica do código de imposição da AWS avalia as solicitações para permitir ou negar acesso.
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.