As políticas de sessão são um recurso avançado de gerenciamento de permissões no AWS IAM. Elas permitem que você restrinja as permissões de uma sessão temporária de um usuário ou função IAM, sem afetar as permissões da entidade subjacente.
Como as políticas de sessão funcionam?
As políticas de sessão funcionam como uma camada adicional de permissões que são aplicadas a uma sessão temporária. Ao criar uma sessão temporária usando o AWS Security Token Service (STS), você pode especificar uma política de sessão para restringir as permissões dessa sessão. A política de sessão é uma política JSON que é passada como um parâmetro ao solicitar um token de segurança.
As permissões concedidas por uma política de sessão são a interseção das permissões da política de sessão e as políticas de recursos ou de identidade que se aplicam à entidade IAM subjacente. Isso significa que você pode usar políticas de sessão para conceder permissões específicas a usuários ou funções IAM sem precisar criar políticas de recursos ou de identidade adicionais.
Diagrama onde mostra o fluxo de verificação de políticas no IAM.

Exemplo de uso de uma política de sessão:
Digamos que você tenha uma função IAM que concede acesso de leitura e gravação a um bucket do Amazon S3. No entanto, você deseja restringir o acesso de um usuário específico a apenas um subdiretório dentro do bucket. Você pode criar uma política de sessão que restrinja o acesso do usuário apenas a esse subdiretório e, em seguida, criar uma sessão temporária para o usuário usando o STS e a política de sessão.
Exemplo pratico de uso de uma política de sessão:
- Na primeira imagem, apresentamos uma política IAM que autoriza o acesso a um bucket S3 restrito por um prefixo (diretório). Além disso, essa política inclui a autorização de uso uma chave KMS para a encriptação e decriptação dos dados ao acessar o bucket S3. Essa política permite que os usuários associados a ela tenham acesso apenas aos recursos especificados, garantindo uma segurança mais granular.

- Na segunda imagem, demonstramos um shell script que gera uma sessão STS (Security Token Service) utilizando o comando assume-role e passando a política da imagem 1 anexa como política de sessão. Com a resposta desse comando, o script recebe uma ACCESS KEY ID e uma SECRET ACCESS KEY temporárias. Com essas credenciais, ele faz uma chamada no S3, demostrando o acesso liberado pela política da imagem 1.

Dessa forma, a utilização de uma política de sessão pode ser uma boa prática de segurança, pois permite que os usuários tenham acesso apenas aos recursos necessários por um período limitado de tempo, garantindo maior controle e visibilidade sobre as permissões concedidas.
Obs. 1: Diagrama do fluxo de verificação de políticas no IAM retirado da documentação da AWS. https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html
Obs. 2: Exemplo retirado do video AWS re:Inforce 2022 - AWS Identity and Access Management (IAM) deep dive (IAM301) https://youtube.com/watch?v=YMj33ToS8cI
Obs. 3: Este post foi criado com ajuda de uma IA - ChatGPT GPT-3 - Saiba mais