IAM Policy SourceIP Access 제한 관련한 건

S3에서 `kms:decrypt` 권한이 광고되지 않은 이유를 파악하고 IP 정책 설정 문제를 해결합니다.

IAM Policy SourceIP Access 제한 관련한 건
Photo by Kyle Glenn / Unsplash

개요

권한을 가지고 있음에도 S3에서 kms:decrypt explict denied가 발생했던 건입니다.

<Message>User: arn:aws:sts::....:assumed-role/Smileshark-sysadmin/smileshark_bjchoi is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:ap-northeast-2:.....:key/0a0f650c-8736-491b-8cc8-2d248f57e1cb with an explicit deny in an identity-based policy</Message>
{
    "eventVersion": "1.11",
    "userIdentity": {
      ....
        },
        "invokedBy": "AWS Internal"
    },
    ...
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "sessionCredentialFromConsole": "true"
}

InvokedBy를 확인해보면 AWS Internal이 호출 했다는 것을 확인할 수 있습니다. 하지만 IP 권한 정책을 설정하는 과정에서 AWS를 경유하여 들어오는 경우 사용자 정책 상의 소스IP와 일치되지 않아 차단될 수 있습니다.

"Bool": {
    "aws:ViaAWSService": "false"
}

따라서 ViaAWSServicefalse 로 설정하여 해당 요청이 AWS를 경유할 경우 요청이 차단되지 않도록 설정합니다.

즉, AWS 서비스 경유가 아닌 요청에 대해서만 IP를 적용하는 것입니다.