AWS IAM – Elementos de uma Policy
Olá Pessoal,
Continuando sobre o assunto Policy, vamos descrever com um pouco mais de detalhes cada elemento que as compõem. Se quiser dar uma olhada no primeiro artigo, está disponível aqui. Como dito lá, a Policy é armazenada como JSON e vamos usar esta como base:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "true" } } } ] }
Então vamos lá, o que significa cada elemento:
Version: Refere-se a versão da linguagem utilizada para interpretá-las. Não é necessária, mas utilizamos como boa prática.
Statement: É um item obrigatório e pode ser composto por mais de um item cercado por chaves “{}”. Cada item descreve quem pode realizar ou não uma ação.
Effect: Também é obrigatório e indica se o item do Statement permite ou bloqueia a ação (Allow ou Deny).
Action: Descreve a ação específica em questão, também obrigatório. Pode ser utilizado o “wildcard” ‘*’ para descrever múltiplas ações. Para cada serviço, há uma lista das Actions (veja no S3). Por exemplo, para permitir todas as actions relacionadas com descrever elementos do EC2, pode-se utilizar “ec2:Describe*”.
Resource: Aqui colocamos os recursos AWS que serão englobados pela Policy, último item obrigatório. Neste item informamos seu ARN (Amazon Resource Names) “arn:aws:s3:::my-bucket”.
Condition: Opcionalmente, podemos incluir condições para que a Policy seja válida. Para cada serviço/Action, temos também algumas condições que podem ser requisitadas. Por exemplo, é possível permitir que alguem obtenha um objeto (GetObject) apenas se possuir determinada tag ou permitir que alguem crie um bucket (CreateBucket) apenas em determinada região.
Principal: É utilizada apenas quando utilizamos uma Resource Based Role. Neste caso é necessário informar quem está recebendo tal privilégio, pode ser um User, um Group ou mesmo uma Role.
Vamos encerrar por aqui para não ficar muito extenso. No próximo artigo criaremos uma Policy para ilustrar o que falamos aqui (veja).
Até la.