AWS IAM - Policy

rodrigofrs13

Rodrigo Fernandes

Posted on May 19, 2023

AWS IAM - Policy

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:

Image description


Elementos IAM Policy

  • Statement
  • Effect
  • Action
  • Resource

Condition

Documentação oficial

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"**
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

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/*"
            ]
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode

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/*"
        ]
    }]
}
Enter fullscreen mode Exit fullscreen mode

Policy Variables

Documentação oficial

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}**"
            ]
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode

Policy Version Element

Documentação oficial

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

Image description


Simple Policy

Image description


IAM permissions boundaries

Image description

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

Documentação oficial

  • 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": "*"
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode
💖 💪 🙅 🚩
rodrigofrs13
Rodrigo Fernandes

Posted on May 19, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related