AWS IAM - Policy - Troubleshooting
Tags: aws, devops, cloud, security
Published: 2023-05-19 14:24:30

**Anotações sobre o AWS IAM Policy - Troubleshooting para ajudar na preparação das certificações AWS.**

Até o momento as anotações são para as certificações abaixo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/se0sqtegn424nami6rz8.png)


---

##**JSON Error Bucket S3**

```
{
    "Statement": {
        "Effect": "Allow",
        "Action": "*",
        "Resource": "arn:aws:s3:::examplebucket",
        "Resource": "arn:aws:s3:::examplebucket/*"
    }
}
```
**Resolução**
- Só pode haver 1 **Resource**
- Inserir o Version
- Tabular e inserir os Resources em []

**Policy corrigida**

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "*",
            "Resource": [
                "arn:aws:s3:::nomedobucket",
                "arn:aws:s3:::nomedobucket/*"
            ]
        }
    ]
}
```

---


##**IAM Policy user access**

```
{
    "Statement": [
        {
            "Action": [
                "iam:*AccessKey*"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iam::id-conta-aws:user/${aws:username}"
            ]
        }
    ]
}
```

**Resolução**
- Por não estar difinido na policy o Version está com o padrão `"Version": "2008-10-17"` e os Elementos da Policy são compativeis somente na nova versão - `"Version": "2012-10-17"`
- Alterar a variável ${aws:username} para o _username _estático

**Policy corrigida - Sem Version**

```
{
    "Statement": [
        {
            "Action": [
                "iam:*AccessKey*"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iam::id-conta-aws:user/username"
            ]
        }
    ]
}
```

**Policy corrigida - Com Version**

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "iam:*AccessKey*"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iam::id-conta-aws:user/${aws:username}"
            ]
        }
    ]
}
```

---

##**Policy acesso CloudFront**

```
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": "cloudfront:*",
        "Resource": [
            "arn:aws:cloudfront:*"
        ]
    }]
}
```
**Resolução**
- Cada serviço da AWS pode definir ações, recursos e chaves de contexto de condição para uso em políticas do IAM. No caso do CloudFront basta especificar "*" no Resource.



**Policy corrigida**

```
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": "cloudfront:*",
        "Resource": "*"
    }]
}
```

---
##**Bucket Policy**

```
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow"
        "Action": "s3:*"
        "Resource": [
            "*"
        ]
    }]
}
```
**Resolução**
- Validação da estrutura da Policy, falta a "," no Effect

**Policy corrigida**

```
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": [
            "*"
        ]
    }]
}
```

---
##**Policy 5**

```
{
      "Version": "2012-10-17",
      "Statement": {
         "Effect":"Allow",
         "Action":"ec2:Describe*",
         "Resource":"*"
      }
}
{ 
      "Statement": {
         "Effect": "Allow",
         "Action": "s3:*",
         "Resource": "arn:aws:s3:::my-bucket/*"
      }
}
```

**Resolução**
- Só pode haver 1 statement
- Quebrar a Police em Blocos c/ []

**Policy corrigida**

```
{
      "Version": "2012-10-17",
      "Statement": [{
         "Effect":"Allow",
         "Action":"ec2:Describe*",
         "Resource":"*"
      },
      {
         "Effect": "Allow",
         "Action": "s3:*",
         "Resource": "arn:aws:s3:::my-bucket/*"
       }
      ]
}
```

---
##**Referências**

- [Gramática da linguagem das políticas de JSON do IAM](https://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/reference_policies_grammar.html)
- [AWS Policy Generator](https://awspolicygen.s3.amazonaws.com/policygen.html)
- [Exemplos de políticas de bucket](https://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/example-bucket-policies.html)
- [Ações, recursos e chaves de condição para serviços da AWS](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)
- [Ações, recursos e chaves de condição para Amazon CloudFront](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazoncloudfront.html)