

# Evaluación de políticas para solicitudes dentro de una misma cuenta
<a name="reference_policies_evaluation-logic_policy-eval-basics"></a>

## Evaluación de políticas para un rol de IAM
<a name="policy-eval-basics-single-account-role"></a>

En el siguiente diagrama de flujo se proporcionan detalles sobre cómo se toma una decisión de evaluación de políticas para un rol de IAM en una sola cuenta.

![Diagrama de flujo de evaluación para un rol de IAM en una sola cuenta](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/PolicyEvaluationSingleAccountRole.png)


## Evaluación de políticas para un usuario de IAM
<a name="policy-eval-basics-single-account-user"></a>

En el siguiente diagrama de flujo se proporcionan detalles sobre cómo se toma una decisión de evaluación de políticas para un usuario de IAM en una sola cuenta.

![Diagrama de flujo de evaluación de un usuario de IAM en una sola cuenta](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/PolicyevaluationSingleAccountUser.png)


## Ejemplo de evaluación de políticas basadas en identidad y políticas basadas en recursos
<a name="reference_policies_evaluation-logic_policies_evaluation_example"></a>

Los tipos de políticas más habituales son las políticas basadas en identidad y las políticas basadas en recursos. Cuando se solicita acceso a un recurso, AWS evalúa todos los permisos otorgados por las políticas para que haya **al menos un permiso** dentro de la misma cuenta. Una denegación explícita en cualquiera de las políticas anulará el permiso.

**importante**  
Si la política basada en identidad o la política basada en recursos de la misma cuenta permite la solicitud y la otra no, la solicitud aún está permitida.

Supongamos que Carlos tiene el nombre de usuario `carlossalazar` y que intenta guardar un archivo en el bucket de Amazon S3 `amzn-s3-demo-bucket-carlossalazar-logs`. 

Supongamos también que la política siguiente está asociada al usuario de IAM `carlossalazar`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3ListRead",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowS3Self",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar/*",
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar"
            ]
        },
        {
            "Sid": "DenyS3Logs",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::*log*"
        }
    ]
}
```

------

La instrucción `AllowS3ListRead` de esta política permite a Carlos ver una lista de todos los buckets de la cuenta. La instrucción `AllowS3Self` concede a Carlos acceso completo al bucket que tiene el mismo nombre que su nombre de usuario. La instrucción `DenyS3Logs` deniega a Carlos el acceso a los buckets de S3 que contengan `log` en el nombre. 

Además, la siguiente política basada en recursos (denominada política de bucket) está asociada al bucket `amzn-s3-demo-bucket-carlossalazar`. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{123456789012}}:user/carlossalazar"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar/*",
                "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar"
            ]
        }
    ]
}
```

------

Esta política especifica que únicamente el usuario `carlossalazar` puede obtener acceso al bucket `amzn-s3-demo-bucket-carlossalazar`.

Cuando Carlos solicita guardar un archivo en el bucket `amzn-s3-demo-bucket-carlossalazar-logs`, AWS determina qué políticas se aplican a la solicitud. En este caso, solo se aplican la política basada en identidad y la política basada en recursos. Ambas son políticas de permisos. Debido a que no se aplica ningún límite de permisos, la lógica de evaluación se reduce a lo siguiente.

![Diagrama de evaluación](http://docs.aws.amazon.com/es_es/IAM/latest/UserGuide/images/EffectivePermissionsShort.png)


AWS comprueba en primer lugar si existe una instrucción `Deny` que se aplique al contexto de la solicitud. Encuentra una, ya que la política basada en identidad deniega explícitamente a Carlos el acceso a los buckets de S3 que se usan para el registro. A Carlos se le deniega el acceso. 

Supongamos que luego se da cuenta de su error e intenta guardar el archivo en el bucket `amzn-s3-demo-bucket-carlossalazar`. AWS comprueba si existe una instrucción `Deny` y no encuentra ninguna. A continuación, comprueba las políticas de permisos. Tanto la política basada en la identidad como la política basada en los recursos permiten la solicitud. Por lo tanto, AWS permite la solicitud. Si alguna de ellas denegase explícitamente la instrucción, la solicitud habría sido denegada. Si uno de los tipos de política permite la solicitud y el otro no, la solicitud sigue estando permitida.