Limites de permissões para entidades do IAM
A AWS oferece suporte a limites de permissões para entidades (usuários ou funções) do IAM. Um limite de permissões é um recurso avançado para usar uma política gerenciada para definir as permissões máximas que uma política baseada em identidade pode conceder a uma entidade do IAM. O limite de permissões de uma entidade permite que a entidade execute somente as ações permitidas por ambas as políticas baseadas em identidade e seus limites de permissões.
Para obter mais informações sobre tipos de política, consulte Tipos de políticas.
Importante
Não use declarações de política baseadas em recursos que incluam um elemento de política NotPrincipal
com um efeito Deny
para usuários ou perfis do IAM que tenham uma política de limite de permissões anexada. O elemento NotPrincipal
com um efeito Deny
sempre negará qualquer entidade principal do IAM que tenha uma política de limite de permissões anexada, independentemente dos valores especificados no elemento NotPrincipal
. Isso faz com que alguns usuários ou perfis do IAM que, de outra forma, teriam acesso ao recurso, percam o acesso. Recomendamos alterar suas declarações de política baseadas em recursos para usar o operador de condição ArnNotEquals com a chave de contexto aws:PrincipalArn para limitar o acesso, em vez do elemento NotPrincipal
. Para obter informações sobre o elemento NotPrincipal
, consulte Elementos da política JSON da AWS:NotPrincipal.
Você pode usar uma política gerenciada pela AWS ou uma política gerenciada pelo cliente para definir o limite para uma entidade (usuário ou função) do IAM. Essa política limita o número máximo de permissões para o usuário ou a função.
Por exemplo, suponha que o usuário do IAM chamado ShirleyRodriguez
deva ter permissão para gerenciar apenas o Amazon S3, o Amazon CloudWatch e o Amazon EC2. Para impor essa regra, você pode usar a seguinte política para definir o limite de permissões para a usuária ShirleyRodriguez
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*", "cloudwatch:*", "ec2:*" ], "Resource": "*" } ] }
Quando você usa uma política para definir o limite de permissões para um usuário, ela limita as permissões do usuário, mas não fornece permissões por conta própria. Neste exemplo, a política define as permissões máximas de ShirleyRodriguez
como todas as operações no Amazon S3, CloudWatch e Amazon EC2. Shirley nunca poderá executar operações em qualquer outro serviço, incluindo o IAM, mesmo que ela tenha uma política de permissões que permita isso. Por exemplo, você pode adicionar a política a seguir à usuária ShirleyRodriguez
:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:CreateUser", "Resource": "*" } }
Esta política permite criar um usuário no IAM. Se você anexar essa política de permissões à usuária ShirleyRodriguez
, e Shirley tentar criar um usuário, a operação falhará. A falha ocorre porque o limite de permissões não permite a operação iam:CreateUser
. Dadas essas duas políticas, Shirley não tem permissão para executar nenhuma operação na AWS. Você deve adicionar uma política de permissões diferente para permitir ações em outros serviços, como o Amazon S3. Como alternativa, você pode atualizar o limite de permissões para permitir que ela crie um usuário no IAM.
Avaliar permissões efetivas com limites
O limite de permissões para uma entidade do IAM (usuário ou função) define o número máximo de permissões que a entidade pode ter. Isso pode alterar as permissões efetivas para esse usuário ou função. As permissões efetivas para uma entidade são as permissões que são concedidas por todas as políticas que afetam o usuário ou a função. Dentro de uma conta, as permissões para uma entidade podem ser afetadas por políticas baseadas em identidade, políticas baseadas em recurso, limites de permissões, SCPs do Organizations ou políticas de sessão. Para obter mais informações sobre os diversos tipos diferentes de políticas, consulte Políticas e permissões no AWS Identity and Access Management.
Se algum desses tipos de política negar explicitamente o acesso de uma operação, a solicitação será negada. As permissões concedidas a uma entidade por vários tipos de permissões são mais complexas. Para obter mais detalhes sobre como o AWS avalia as políticas, consulte Lógica da avaliação de política.
Políticas baseadas em identidade com limites: as políticas baseadas em identidade são políticas em linha ou gerenciadas que são anexadas a um usuário, grupo de usuários ou função. As políticas baseadas em identidade concedem permissão para a entidade, e os limites de permissões limitam essas permissões. As permissões efetivas são a interseção de ambos os tipos de política. Uma negação explícita em qualquer uma dessas políticas substitui a permissão.
Políticas baseadas em recurso: as políticas baseadas em recurso controlam como a entidade de segurança pode acessar o recurso ao qual a política está anexada.
- Políticas baseadas em recursos para usuários do IAM
-
Na mesma conta, as políticas baseadas em recursos que concedem permissões a um ARN de usuário do IAM (que não é uma sessão de usuário federado) não são limitadas por uma negação implícita em uma política baseada em identidade ou limite de permissões.
- Políticas baseadas em recursos para funções do IAM
-
Função do IAM: as políticas baseadas em recursos que concedem permissões a um ARN de função do IAM são limitadas por uma negação implícita em um limite de permissões ou política de sessão.
Sessão de função do IAM: na mesma conta, as políticas baseadas em recursos que concedem permissões a um ARN de sessão de função do IAM concedem permissões diretamente à sessão de função assumida. As permissões concedidas diretamente a uma sessão não são limitadas por uma negação implícita em uma política baseada em identidade, um limite de permissões ou uma política de sessão. Quando você assume uma função e faz uma solicitação, a entidade principal que faz a solicitação é o ARN da sessão de função do IAM e não o ARN da função em si.
- Políticas baseadas em recursos para sessões de usuários federados do IAM
-
Sessões de usuário federado do IAM: uma sessão de usuário federado do IAM é uma sessão criada mediante o chamado de GetFederationToken. Quando um usuário federado faz uma solicitação, a entidade principal que faz a solicitação é o ARN do usuário federado e não o ARN do usuário do IAM que federou. Na mesma conta, as políticas baseadas em recursos que concedem permissões a um ARN de usuário federado concedem permissões diretamente para a sessão. As permissões concedidas diretamente a uma sessão não são limitadas por uma negação implícita em uma política baseada em identidade, um limite de permissões ou uma política de sessão.
No entanto, se uma política baseada em recursos conceder permissão ao ARN do usuário do IAM que se federou, as solicitações feitas pelo usuário federado durante a sessão serão limitadas por uma negação implícita em um limite de permissão ou política de sessão.
SCPs do Organizations: as SCPs são aplicadas a uma Conta da AWS inteira. Eles limitam as permissões para todas as solicitações feitas por um principal na conta. Uma entidade (usuário ou função) do IAM pode fazer uma solicitação que é afetada por uma SCP, um limite de permissões e uma política baseada em identidade. Nesse caso, a solicitação é permitida somente se todos os três tipos de política a permitem. As permissões efetivas são a interseção de todos os três tipos de política. Uma negação explícita em qualquer uma dessas políticas substitui a permissão.
Você pode saber se sua conta é membro de uma organização no AWS Organizations. Os membros da organização podem ser afetados por uma SCP. Para visualizar esses dados usando o comando da AWS CLI ou a operação da API da AWS, você deve ter permissões para a ação organizations:DescribeOrganization
da sua entidade do Organizations. Você deve ter permissões adicionais para executar a operação no console do Organizations. Para saber se uma SCP está negando acesso a uma solicitação específica ou alterar as permissões efetivas, entre em contato com o administrador do AWS Organizations.
Políticas de sessão: são políticas avançadas que você transmite como um parâmetro quando cria de forma programática uma sessão temporária para um perfil ou um usuário federado. As permissões para uma sessão vêm da entidade (usuário ou função) do IAM usada para criar a sessão e da política da sessão. As permissões de política baseada em identidade da entidade são limitadas pela política de sessão e pelo limite de permissões. As permissões efetivas para esse conjunto de tipos de política são a interseção de todos os três tipos de política. Uma negação explícita em qualquer uma dessas políticas substitui a permissão. Para obter mais informações as políticas de sessão, consulte Políticas de Sessão.
Delegar responsabilidade para outras pessoas usando limites de permissões
Você pode usar limites de permissões para delegar tarefas de gerenciamento de permissões, como a criação de usuários, aos usuários do IAM em sua conta. Isso permite que outras pessoas executem tarefas em seu nome com um limite específico de permissões.
Por exemplo, suponha que María seja a administradora da Conta da AWS da X-Company. Ela quer delegar as tarefas de criação de usuários para Zhang. No entanto, ela deve garantir que Zhang crie usuários que sigam as seguintes regras da empresa:
-
Os usuários não podem usar o IAM para criar ou gerenciar usuários, grupos, funções ou políticas.
-
Os usuários têm acesso negado ao bucket
logs
do Amazon S3 e não podem acessar a instânciai-1234567890abcdef0
do Amazon EC2. -
Os usuários não podem remover suas próprias políticas de limite.
Para impor essas regras, María executa as seguintes tarefas, para as quais os detalhes são incluídos a seguir:
-
María cria a política gerenciada
XCompanyBoundaries
para uso como um limite de permissões para todos os novos usuários na conta. -
María cria a política gerenciada
DelegatedUserBoundary
e atribui-a como o limite de permissões a Zhang. Maria anota o ARN de seu usuário do admin e o usa na política para impedir que Zhang o acesse. -
María cria a política gerenciada
DelegatedUserPermissions
e anexa-a como uma política de permissões a Zhang. -
María informa Zhang sobre suas novas responsabilidades e limitações.
Tarefa 1: María deve primeiro criar uma política gerenciada para definir o limite para os novos usuários. María permitirá que Zhang forneça aos usuários as políticas de permissões de que precisam, mas ela deseja que esses usuários sejam restringidos. Para fazer isso, ela cria a seguinte política gerenciada pelo cliente com o nome XCompanyBoundaries
. Essa política faz o seguinte:
-
Permite que os usuários tenham acesso total a vários serviços
-
Permite acesso autogerenciado limitado no console do IAM. Isso significa que eles podem alterar a senha depois de fazer login no console. Eles não podem definir a senha inicial. Para permitir isso, adicione a ação
"*LoginProfile"
à instruçãoAllowManageOwnPasswordAndAccessKeys
. -
Nega aos usuários o acesso ao bucket de logs do Amazon S3 ou à instância
i-1234567890abcdef0
do Amazon EC2
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceBoundaries", "Effect": "Allow", "Action": [ "s3:*", "cloudwatch:*", "ec2:*", "dynamodb:*" ], "Resource": "*" }, { "Sid": "AllowIAMConsoleForCredentials", "Effect": "Allow", "Action": [ "iam:ListUsers", "iam:GetAccountPasswordPolicy" ], "Resource": "*" }, { "Sid": "AllowManageOwnPasswordAndAccessKeys", "Effect": "Allow", "Action": [ "iam:*AccessKey*", "iam:ChangePassword", "iam:GetUser", "iam:*ServiceSpecificCredential*", "iam:*SigningCertificate*" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "DenyS3Logs", "Effect": "Deny", "Action": "s3:*", "Resource": [ "arn:aws:s3:::logs", "arn:aws:s3:::logs/*" ] }, { "Sid": "DenyEC2Production", "Effect": "Deny", "Action": "ec2:*", "Resource": "arn:aws:ec2:*:*:instance/i-1234567890abcdef0" } ] }
Cada instrução tem uma finalidade diferente:
-
A instrução
ServiceBoundaries
dessa política permite acesso total aos serviços especificados da AWS. Isso significa que as ações de um novo usuário nesses serviços são limitadas apenas pelas políticas de permissões que são anexadas ao usuário. -
A instrução
AllowIAMConsoleForCredentials
permite acesso para listar todos os usuários do IAM. Esse acesso é necessário para navegar na página Usuários no AWS Management Console. Ele também permite visualizar os requisitos de senha da conta, que é necessário ao alterar sua própria senha. -
A instrução
AllowManageOwnPasswordAndAccessKeys
permite que os usuários gerenciem apenas suas próprias chaves de acesso programático e a senha do console. Isso é importante se Zhang ou outro administrador atribuir a um novo usuário uma política de permissões com acesso total ao IAM. Nesse caso, esse usuário pode alterar suas próprias permissões ou as de outros usuários. Essa instrução impede que isso ocorra. -
A instrução
DenyS3Logs
nega explicitamente o acesso ao bucket delogs
. -
A instrução
DenyEC2Production
nega explicitamente o acesso à instância dei-1234567890abcdef0
.
Tarefa 2: María deseja permitir que Zhang crie todos os usuários da X-Company, mas apenas com o limite de permissões XCompanyBoundaries
. Ela cria a seguinte política gerenciada pelo cliente chamada DelegatedUserBoundary
. Essa política define o número máximo de permissões que Zhang pode ter.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateOrChangeOnlyWithBoundary", "Effect": "Allow", "Action": [ "iam:AttachUserPolicy", "iam:CreateUser", "iam:DeleteUserPolicy", "iam:DetachUserPolicy", "iam:PutUserPermissionsBoundary", "iam:PutUserPolicy" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::123456789012:policy/XCompanyBoundaries" } } }, { "Sid": "CloudWatchAndOtherIAMTasks", "Effect": "Allow", "Action": [ "cloudwatch:*", "iam:CreateAccessKey", "iam:CreateGroup", "iam:CreateLoginProfile", "iam:CreatePolicy", "iam:DeleteGroup", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:DeleteUser", "iam:GetAccountPasswordPolicy", "iam:GetGroup", "iam:GetLoginProfile", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRolePolicy", "iam:GetUser", "iam:GetUserPolicy", "iam:ListAccessKeys", "iam:ListAttachedRolePolicies", "iam:ListAttachedUserPolicies", "iam:ListEntitiesForPolicy", "iam:ListGroups", "iam:ListGroupsForUser", "iam:ListMFADevices", "iam:ListPolicies", "iam:ListPolicyVersions", "iam:ListRolePolicies", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials", "iam:ListSigningCertificates", "iam:ListUserPolicies", "iam:ListUsers", "iam:SetDefaultPolicyVersion", "iam:SimulateCustomPolicy", "iam:SimulatePrincipalPolicy", "iam:UpdateGroup", "iam:UpdateLoginProfile", "iam:UpdateUser" ], "NotResource": "arn:aws:iam::123456789012:user/Maria" }, { "Sid": "NoBoundaryPolicyEdit", "Effect": "Deny", "Action": [ "iam:CreatePolicyVersion", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": [ "arn:aws:iam::123456789012:policy/XCompanyBoundaries", "arn:aws:iam::123456789012:policy/DelegatedUserBoundary" ] }, { "Sid": "NoBoundaryUserDelete", "Effect": "Deny", "Action": "iam:DeleteUserPermissionsBoundary", "Resource": "*" } ] }
Cada instrução tem uma finalidade diferente:
-
A instrução
CreateOrChangeOnlyWithBoundary
permite que Zhang crie usuários do IAM, mas somente se ele usar a politicaXCompanyBoundaries
para definir o limite de permissões. Essa instrução também permite que ele defina o limite de permissões para os usuários existentes, mas apenas usando a mesma política. Finalmente, essa instrução permite que Zhang gerencie políticas de permissões para usuários com esse limite de permissões definido. -
A instrução
CloudWatchAndOtherIAMTasks
permite que Zhang conclua tarefas de gerenciamento de outro usuário, grupo e política. Ele tem permissões para redefinir senhas e criar chaves de acesso para qualquer usuário do IAM não listado no elementoNotResource
da política. Isso permite a ele ajudar os usuários com problemas de login. -
A instrução
NoBoundaryPolicyEdit
nega a Zhang o acesso para atualizar a políticaXCompanyBoundaries
. Ele não tem permissão para alterar nenhuma política usada para definir o limite de permissões para si mesmo ou para outros usuários. -
A instrução
NoBoundaryUserDelete
nega a Zhang o acesso para excluir o limite de permissões para si mesmo ou outros usuários.
Em seguida, María atribui a política DelegatedUserBoundary
como o limite de permissões para o usuário Zhang
.
Tarefa 3: como o limite de permissões limita o número máximo de permissões, mas não concede acesso por conta própria, Maria deve criar uma política de permissões para Zhang. Ela cria a seguinte política chamada DelegatedUserPermissions
. Esta política define as operações que Zhang pode executar, dentro do limite definido.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAM", "Effect": "Allow", "Action": "iam:*", "Resource": "*" }, { "Sid": "CloudWatchLimited", "Effect": "Allow", "Action": [ "cloudwatch:GetDashboard", "cloudwatch:GetMetricData", "cloudwatch:ListDashboards", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics" ], "Resource": "*" }, { "Sid": "S3BucketContents", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::ZhangBucket" } ] }
Cada instrução tem uma finalidade diferente:
-
A instrução
IAM
da política permite a Zhang acesso total ao IAM. No entanto, como seu limite de permissões permite apenas algumas operações do IAM, suas permissões efetivas do IAM são limitadas apenas pelo seu limite de permissões. -
A instrução
CloudWatchLimited
permite que Zhang execute cinco ações no CloudWatch. Seu limite de permissões permite todas as ações no CloudWatch, portanto, suas permissões efetivas do CloudWatch são limitadas apenas por sua política de permissões. -
A instrução
S3BucketContents
permite que Zhang liste o bucketZhangBucket
do Amazon S3. No entanto, seu limite de permissões não permite nenhuma ação do Amazon S3, portanto, ele não pode executar nenhuma operação do S3, independentemente de sua política de permissões.nota
As políticas de Zhang permitem que ele crie um usuário que acessa recursos do Amazon S3 que ele não pode acessar. Ao delegar essas ações administrativas, Maria efetivamente confia a Zhang o acesso ao Amazon S3.
Em seguida, María anexa a política DelegatedUserPermissions
como a política de permissões para o usuário Zhang
.
Tarefa 4: Ela fornece a Zhang as instruções para criar um novo usuário. Ela informa que ele pode criar novos usuários com qualquer permissão que eles precisem, mas deve atribuir a eles a política XCompanyBoundaries
como um limite de permissões.
Zhang executa as seguintes tarefas:
-
Zhang cria um usuário com o AWS Management Console. Ele digita o nome do usuário
Nikhil
e permite acesso ao console para o usuário. Ele desmarca a caixa de seleção ao lado de Requires password reset (Requer redefinição de senha), porque as políticas acima permitem que os usuários alterem a senha somente depois que fizerem login no console do IAM. -
Na página Set permissions (Definir permissões), Zhang escolhe as políticas de permissões IAMFullAccess e AmazonS3ReadOnlyAccess que permitem que Nikhil faça seu trabalho.
-
Zhang ignora a seção Set permissions boundary (Definir limite de permissões) esquecendo as instruções de María.
-
Zhang revisa os detalhes do usuário e seleciona Create user (Criar usuário).
A operação falha e o acesso é negado. O limite de permissões
DelegatedUserBoundary
de Zhang exige que qualquer usuário que ele crie tenha a políticaXCompanyBoundaries
usada como um limite de permissões. -
Zhang retorna à página anterior. Na seção Set permissions boundary (Definir limite de permissões), ele escolhe a política
XCompanyBoundaries
. -
Zhang revisa os detalhes do usuário e seleciona Create user (Criar usuário).
O usuário é criado.
Quando Nikhil faz login, ele tem acesso ao IAM e ao Amazon S3, com exceção das operações que são negadas pelo limite de permissões. Por exemplo, ele pode alterar sua própria senha no IAM, mas não pode criar outro usuário ou editar suas políticas. Nikhil tem acesso somente leitura ao Amazon S3.
Se alguém adiciona uma política baseada em recurso ao bucket do logs
que permite que Nikhil coloque um objeto no bucket, ele ainda não pode acessar o bucket. O motivo é que as ações no bucket logs
são explicitamente negadas por seu limite de permissões. Uma negação explícita em qualquer tipo de política resulta em uma solicitação negada. No entanto, se uma política baseada em recurso anexada a um segredo do Secrets Manager permitir que Nikhil execute a ação secretsmanager:GetSecretValue
, Nikhil poderá recuperar e descriptografar o segredo. O motivo é que as operações do Secrets Manager não são explicitamente negadas por seu limite de permissões, e as negações implícitas nos limites de permissões não limitam as políticas baseadas em recurso.