

# 단일 계정 내 요청에 대한 정책 평가
<a name="reference_policies_evaluation-logic_policy-eval-basics"></a>

## IAM 역할에 대한 정책 평가
<a name="policy-eval-basics-single-account-role"></a>

다음 흐름도는 단일 계정 내의 IAM 역할에 대한 정책 평가 결정 방법에 대한 세부 정보를 제공합니다.

![\[단일 계정 내 IAM 역할에 대한 평가 흐름도\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/PolicyEvaluationSingleAccountRole.png)


## IAM 사용자에 대한 정책 평가
<a name="policy-eval-basics-single-account-user"></a>

다음 흐름도는 단일 계정 내의 IAM 사용자에 대한 정책 평가 결정 방법에 대한 세부 정보를 제공합니다.

![\[단일 계정 내 IAM 사용자에 대한 평가 흐름도\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/PolicyevaluationSingleAccountUser.png)


## 자격 증명 기반 정책 및 리소스 기반 정책 평가 예제
<a name="reference_policies_evaluation-logic_policies_evaluation_example"></a>

가장 일반적인 정책 유형은 자격 증명 정책 및 리소스 기반 정책입니다. 리소스에 대한 액세스가 요청되면 AWS는 동일한 계정 내에서 **하나 이상의 Allow**에 대해 정책에서 부여한 모든 권한을 평가합니다. 정책 중 하나에 포함된 명시적 거부는 허용을 재정의합니다.

**중요**  
동일한 계정 내의 ID 기반 정책이나 리소스 기반 정책 중 하나는 요청을 허용하고 다른 하나는 허용하지 않는 경우에도 요청은 계속 허용됩니다.

Carlos가 `carlossalazar`라는 사용자 이름을 쓰고 있고 `amzn-s3-demo-bucket-carlossalazar-logs` Amazon S3 버킷에 파일을 저장하고자 한다고 가정합니다.

또한 다음 정책이 `carlossalazar` IAM 사용자와 연결되었다고 가정합니다.

------
#### [ 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*"
        }
    ]
}
```

------

이 정책의 `AllowS3ListRead` 설명문은 카를로스가 계정에 있는 모든 버킷 목록을 보도록 허용합니다. `AllowS3Self` 설명문은 카를로스가 그의 사용자 이름과 동일한 버킷에 모두 액세스할 수 있도록 허용합니다. `DenyS3Logs` 설명문은 카를로스가 그의 이름 아래에 있는 `log`를 통해 모든 S3 버킷의 액세스를 거부합니다.

또한, 다음 리소스 기반 정책(버킷 정책이라고 함)은 `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"
            ]
        }
    ]
}
```

------

이 정책은 `carlossalazar` 사용자만 `amzn-s3-demo-bucket-carlossalazar` 버킷에 액세스할 수 있도록 지정합니다.

카를로스가 `amzn-s3-demo-bucket-carlossalazar-logs` 버킷에 파일을 저장하도록 요청하면 AWS는 해당 요청에 어떤 정책을 적용할지 결정합니다. 이 경우, 자격 증명 기반 정책과 리소스 기반 정책만 적용합니다. 이들은 모두 권한 정책입니다. 어떠한 권한 경계도 적용되지 않기 때문에 평가 로직은 다음 로직으로 줄어듭니다.

![\[평가 순서도\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/EffectivePermissionsShort.png)


AWS는 먼저 요청 콘텍스트에 적용되는 `Deny` 설명문을 확인합니다. 자격 증명 기반 정책은 카를로스의 로깅을 통한 모든 S3 버킷의 액세스를 명시적으로 거부하기 때문에 이를 찾습니다. 카를로스의 액세스가 거부됩니다.

Carlos가 실수를 알아차리고 `amzn-s3-demo-bucket-carlossalazar` 버킷에 파일을 저장하고자 한다고 가정하세요. AWS는 `Deny` 설명문을 확인하지만 찾지 못합니다. 그러면 권한 정책을 확인합니다. 자격 증명 기반 정책과 리소스 기반 정책 모두 요청을 허용합니다. 따라서 AWS는 요청을 허용합니다. 이들 중 하나라도 설명문을 명시적으로 거부한다면 요청은 거부됩니다. 정책 유형 중 하나는 요청을 허용하고 다른 하나는 요청을 허용하지 않는 경우에도 요청은 허용됩니다.