Como a lógica do código de imposição da AWS avalia as solicitações para permitir ou negar acesso - AWS Identity and Access Management

Como a lógica do código de imposição da AWS avalia as solicitações para permitir ou negar acesso

O código de imposição da AWS decide se a solicitação enviada a AWS deve ser permitida ou negada. A AWS avalia todas as políticas que são aplicáveis ao contexto da solicitação. A seguir há um resumo sobre a lógica de avaliação de políticas da AWS.

  • Por padrão, todas as solicitações são implicitamente negadas, com exceção do Usuário raiz da conta da AWS, que tem acesso total.

  • As solicitações devem ser explicitamente permitidas por uma política ou conjunto de políticas seguindo a lógica de avaliação abaixo para serem permitidas.

  • Uma negação explícita se sobrepõe a uma permissão explícita.

A avaliação da política pode diferir dependendo se a solicitação está dentro de uma única conta ou é uma solicitação entre contas. Para obter detalhes de como uma decisão de avaliação de política é tomada para um perfil ou usuário do IAM em uma única conta, consulte Avaliação de políticas para solicitações em uma única conta. Para obter detalhes de como uma decisão de avaliação de política é tomada para solicitações entre contas, consulte Lógica de avaliação de política entre contas.

  • Avaliação de negação: por padrão, todas as solicitações são negadas. Isso é chamado de negação implícita. O código de imposição do AWS avalia todas as políticas na conta que se aplicam à solicitação. Isso inclui SCPs e RCPs do AWS Organizations, políticas baseadas em recurso, políticas baseadas em identidade, limites de permissões do IAM e políticas de sessão. Em todas essas políticas, o código de imposição procura uma instrução Deny que se aplica à solicitação. Esse processo é chamado de negação explícita. Se o código de imposição encontrar uma única negação explícita aplicável, ele retornará uma decisão final de Negar. Se não houver uma negação explícita, a avaliação do código de imposição continuará.

  • RCPs do Organizations: o código de imposição avalia as políticas de controle de recursos (RCPs) do AWS Organizations que se aplicam à solicitação. As RCPs se aplicam aos recursos da conta à qual as RCPs estão vinculadas. Se o código de imposição não encontrar nenhuma instrução Allow aplicável nas RCPs, ele retornará uma decisão final de Negar. Observe que uma política gerenciada pela AWS chamada RCPFullAWSAccess é criada e anexada automaticamente a cada entidade em sua organização, incluindo a raiz, cada OU e Conta da AWS quando as RCPs estão habilitadas. A RCPFullAWSAccess não pode ser separada, então sempre haverá uma instrução Allow. Se não houver uma RCP ou se a RCP permitir a ação solicitada, a avaliação do código de imposição continuará.

  • SCPs do Organizations: o código de imposição avalia as políticas de controle de serviços (SCPs) do AWS Organizations que se aplicam à solicitação. As SCP aplicam-se às entidades principais da conta em que as SCP estão associadas. Se o código de imposição não encontrar nenhuma instrução Allow aplicável nas SCPs, ele retornará uma decisão final de Negar. Se não houver uma SCP ou se a SCP permitir a ação solicitada, a avaliação do código de imposição continuará.

  • Políticas baseadas em recursos: na mesma conta, as políticas baseadas em recursos afetam a avaliação de política de maneira diferente, dependendo do tipo de entidade principal que está acessando o recurso e a entidade principal que é permitida na política baseada em recursos. Dependendo do tipo de entidade principal, um Allow em uma política baseada em recursos pode resultar em uma decisão final de Allow, mesmo se houver uma negação implícita em uma política baseada em identidade, limite de permissões ou política de sessão.

    Para a maioria dos recursos, você só precisa de um Allow explícito para a entidade principal em uma política baseada em identidade ou em recurso para conceder acesso. Políticas de confiança de perfil do IAM e políticas de chave do KMS são exceções a essa lógica, porque devem permitir explicitamente o acesso para entidades principais. As políticas baseadas em recursos para serviços diferentes do IAM e do AWS KMS também podem exigir uma declaração Allow explícita na mesma conta para conceder o acesso. Para obter mais informações, consulte a documentação do serviço específico com o qual está trabalhando.

    Para solicitações de avaliação de política em uma única conta, a lógica de política baseada em recurso difere de outros tipos de política se a entidade principal especificada for um usuário do IAM, um perfil do IAM ou uma entidade principal de sessão. As entidades principais de sessão incluem as sessões de função do IAM ou uma sessão de usuário federado do IAM. Se uma política baseada em recursos conceder permissão diretamente ao usuário do IAM ou à entidade principal de sessão que está fazendo a solicitação, uma negação implícita em uma política baseada em identidade, um limite de permissões ou uma política de sessão não afetará a decisão final.

    • 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. É possível especificar o ARN do perfil no elemento da entidade principal ou a chave de condição aws:PrincipalArn. Em ambos os casos, a entidade principal que faz a solicitação é a sessão de perfil do IAM.

      Limites de permissões ou políticas de sessão não limitam as permissões concedidas usando a chave de condição aws:PrincipalArn com um curinga (*) no elemento de entidade principal, a menos que as políticas baseadas em identidade contenham uma negação explícita. Para ter mais informações, consulte Entidades de segurança de função do IAM.

      Exemplo de ARN de função

      arn:aws:iam::111122223333:role/examplerole
    • 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 para a 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. Para ter mais informações, consulte Entidades principais da sessão de função.

      Exemplo de ARN de sessão de função

      arn:aws:sts::111122223333:assumed-role/examplerole/examplerolesessionname
    • Usuário 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.

      Exemplo de ARN de usuário do IAM

      arn:aws:iam::111122223333:user/exampleuser
    • 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 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.

      Exemplo de ARN de sessão de usuário federado do IAM

      arn:aws:sts::111122223333:federated-user/exampleuser
  • Políticas baseadas em identidade: o código de imposição verifica as políticas baseadas em identidade para a entidade principal. Para um usuário do IAM, isso inclui políticas de usuário e políticas de grupos aos quais o usuário pertence. Se não houver políticas baseadas em identidade ou instruções em políticas baseadas em identidade que permitam a ação solicitada, a solicitação será implicitamente negada e o código de imposição retornará uma decisão final de Negar. Se uma instrução em qualquer política aplicável baseada em identidade permitir a ação solicitada, a avaliação do código prosseguirá.

  • Limites de permissões do IAM: o código de aplicação verifica se a entidade do IAM que é usada pela entidade principal tem um limite de permissões. Se a política que é usada para definir o limite de permissões não permitir a ação solicitada, a solicitação será implicitamente negada. O código de imposição retorna uma decisão final de Deny (Negação). Se não houver um limite de permissões ou se o limite de permissões permitir a ação solicitada, a avaliação do código prosseguirá.

  • Políticas de sessão: o código de imposição confere se a entidade principal é uma entidade principal de sessão. As entidades principais de sessão incluem uma sessão de função do IAM ou uma sessão de usuário federado do IAM. Se a entidade principal não for uma entidade principal de sessão, o código de imposição retornará uma decisão final de Allow (Permitir).

    Para entidades principais de sessão, o código de imposição confere se uma política de sessão foi transmitida na solicitação. É possível transmitir uma política de sessão enquanto usa a AWS CLI ou API da AWS para obter credenciais temporárias para um perfil ou usuário federado do IAM. Se você não aprovou uma política de sessão, uma política de sessão padrão será criada, e o código de imposição retornará uma decisão final de Permitir.

    • Se houver uma política de sessão presente e ela não permitir a ação solicitada, a solicitação será implicitamente negada. O código de imposição retorna uma decisão final de Deny (Negação).

    • O código de imposição confere se a entidade principal é uma sessão de perfil. Se a entidade principal for uma sessão de função, a solicitação será Permitida. Caso contrário, a solicitação é implicitamente negada e o código de imposição retorna uma decisão final de Negar.

    • Se houver uma política de sessão presente e ela permitir a ação solicitada, o código de imposição retorna uma decisão final de Allow (Permitir).