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 Principalem 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:CurrentTimeIsso pode ser usado para condições que verificam a data e a hora. - 
aws:EpochTimeEssa é a data em hora epoch ou Unix a ser usada com as condições de data/hora. - 
aws:TokenIssueTimeEssa é 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:PrincipalTypeEsse valor indica se a entidade principal é uma conta, um usuário federado ou função assumida – consulte a explicação fornecida mais adiante. - 
aws:SecureTransportEsse é um valor Booliano que representa o fato de a solicitação ter sido ou não enviada usando SSL. - 
aws:SourceIpEsse é 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:UserAgentEsse 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:useridEsse valor é o ID exclusivo para o usuário atual – consulte o gráfico a seguir. - 
aws:usernameEssa é 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 Versionelemento 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 Versionelemento a seguir fora do Statementelemento 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": "*"
        }
    ]
}




    
Top comments (0)