Rodrigo Fernandes
Posted on May 19, 2023
Anotações sobre o AWS IAM Policy para ajudar na preparação das certificações AWS.
Até o momento as anotações são para as certificações abaixo:
Elementos IAM Policy
- Statement
- Effect
- Action
- Resource
Condition
O elemento Condition
(ou bloco Condition
) permite que você especifique as condições sob as quais uma política está em vigor.
Exemplo
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "*",
"Resource": "*",
** "Condition": {
"IpAddress": {
"aws:SourceIp": "115.99.177.174/32"**
}
}
}
}
Principal e Not Principal
Principal
Use o elemento Principal
em uma policy JSON baseada em recursos para especificar a entidade principal cujo acesso a um recurso é permitido ou negado.
Pode ser utilizando em:
- AWS account and root user
- IAM roles
- Role sessions
- IAM users
- Federated user sessions
- AWS services name ("datapipeline.amazonaws.com")
- All principals
Exemplo
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SamplePolicy",
"Effect": "Allow",
**"Principal": {
"AWS": "arn:aws:iam::888913816489:user/Alice"**
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::the-demo-s3-bucket",
"arn:aws:s3:::the-demo-s3-bucket/*"
]
}
]
}
NotPrincipal
É altamente recomendável que você não use NotPrincipal
na mesma declaração de política que "Effect": "Allow"
.
Quando você usa NotPrincipal
na mesma declaração de policy que "Effect": "Deny"
, as ações especificadas na declaração de policy são explicitamente negadas para todos os Principal exceto aqueles especificados.
- NotPrincipal - Para Effect=Deny
- Tem que atachar a policy no usuário
Exemplo
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
** "NotPrincipal": {"AWS": [
"arn:aws:iam::888913816489:user/Alice"**
]},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::BUCKETNAME",
"arn:aws:s3:::BUCKETNAME/*"
]
}]
}
Policy Variables
Use as Policy Variables do AWS IAM como espaços reservados quando você não souber o valor exato de um recurso ou chave de condição ao escrever a Policy.
-
aws:CurrentTime
Isso pode ser usado para condições que verificam a data e a hora. -
aws:EpochTime
Essa é a data em hora epoch ou Unix a ser usada com as condições de data/hora. -
aws:TokenIssueTime
Essa é a data e a hora em que as credenciais de segurança temporárias foram emitidas e podem ser usadas com condições de data/hora. Observação: essa chave só está disponível em solicitações assinadas com credenciais de segurança temporárias. Para obter mais informações sobre credenciais de segurança temporárias, consulte Credenciais de segurança temporárias no IAM. -
aws:PrincipalType
Esse valor indica se a entidade principal é uma conta, um usuário federado ou função assumida – consulte a explicação fornecida mais adiante. -
aws:SecureTransport
Esse é um valor Booliano que representa o fato de a solicitação ter sido ou não enviada usando SSL. -
aws:SourceIp
Esse é o endereço IP do solicitante, para uso com condições de endereço IP. Consulte Operadores de condição de endereço IP para obter informações sobre quando SourceIp é válido e quando você deve usar uma chave específica da VPC. -
aws:UserAgent
Esse valor é uma string que contém informações sobre o aplicativo cliente do solicitante. Essa string é gerada pelo cliente e pode não ser confiável. Você só pode usar essa chave de contexto na AWS CLI. -
aws:userid
Esse valor é o ID exclusivo para o usuário atual – consulte o gráfico a seguir. -
aws:username
Essa é uma string que contém o nome amigável do usuário atual – consulte o gráfico a seguir. -
ec2:SourceInstanceARN:
este é o nome do recurso da Amazon (ARN) da instância do Amazon EC2 da qual a solicitação é feita. Essa chave está presente somente quando a solicitação vem de uma instância do Amazon EC2 usando uma função do IAM associada a um perfil de instância do EC2.
Exemplo
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:*AccessKey*"
],
"Effect": "Allow",
"Resource": [
"arn:aws:iam::888913816489:user/$**{aws:username}**"
]
}
]
}
Policy Version Element
O Version
elemento policy especifica as regras de sintaxe do idioma que devem ser usadas para processar uma política. Para usar todos os recursos de policy disponíveis, inclua o Version
elemento a seguir fora do Statement
elemento em todas as suas políticas.
Esse Version
elemento de Policy JSON é diferente de uma versão de Policy.
"Version": "2012–10–17" - Recomendado
- Atual
- Certas opções são suportadas somente nessa versão
"Version": "2008–10–17"
- Se não estiver declarado, essa será utilizada como padrão
Tipos de policies
AWS Managed Policies
- Políticas gerenciadas que são criadas e gerenciadas pela AWS.
- Você pode alterar
Customer Managed Policies
- Políticas gerenciadas que você criar e gerenciar em sua conta da AWS.
- As políticas gerenciadas pelo cliente oferecem um controle mais preciso de suas políticas do que as políticas gerenciadas pela AWS.
Inline Policies
- Políticas adicionadas diretamente a um único usuário, grupo ou função.
- As Inline Policies mantêm um relacionamento restrito de um para um entre uma política e uma identidade.
- Elas são excluídas quando você exclui a identidade.
Estrutura de uma Policy
Simple Policy
IAM permissions boundaries
Você pode usar permissions boundaries para delegar tarefas de gerenciamento de permissões, como criação de usuários, para usuários do IAM em sua conta. Isso permite que outras pessoas executem tarefas em seu nome dentro de um limite específico de permissõe
- Veem desativado por padrão
- Por mais que o User tenha outro tipo de permissão, uma vez o Boundary habilitado a Policy dele ira sobrepor
- Sobrepõe a IAM Policy
Referências
Permitir que os usuários do IAM acessem a página de relatórios do console
- Acesso ao Report AWS Usage
- Permissões -->
"aws-portal:ViewUsage"
,"aws-portal:ViewBilling"
Exemplo
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"aws-portal:ViewUsage",
"aws-portal:ViewBilling",
"cur:DescribeReportDefinitions",
"cur:PutReportDefinition",
"cur:DeleteReportDefinition",
"cur:ModifyReportDefinition"
],
"Resource": "*"
}
]
}
Posted on May 19, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.