끄적이는 보송

[AWS] IAM 키파일 유출을 대비한 IP 기반 Deny IAM 정책 본문

STUDY/AWS

[AWS] IAM 키파일 유출을 대비한 IP 기반 Deny IAM 정책

끄적이는 보송 2022. 4. 21. 11:12
반응형

아무리 보안을 생각해 클라우드 환경을 구축했어도, IAM 계정 키 파일이 유출되면 말짱 도루묵이다. 계정마다 권한을 나누어 부여하면 되지 않겠는가라고 생각할 수 있지만 여전히 유출된 계정의 권한은 외부인에게 노출되는 것이니 안전하지 않다. 생각보다 키파일 관리가 허술하여 사건사고가 많이 터진다. (키 파일을 깃헙에 올린다던지, 외부 유출되어 고 그래픽 사양의 EC2를 마구 생성해 채굴을 한다던지...)

그래서 찾은 게 이것이다.

https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html

 

AWS: Denies access to AWS based on the source IP - AWS Identity and Access Management

AWS: Denies access to AWS based on the source IP This example shows how you might create an identity-based policy that denies access to all AWS actions in the account when the request comes from principals outside the specified IP range. The policy is usef

docs.aws.amazon.com

위 정책에 접근 허용하는 IP주소를 입력해, 키가 유출되어도 허용된 IP주소가 아니면, 콘솔 & 프로그래밍 방식(CLI 접속)의 모든 Action을 Deny 하겠다는 정책이다. 추가로 "Bool": {"aws:ViaAWSService": "false"} 코드로 AWS 내부 리소스의 요청은 예외 처리하여, 정책에 입력된 IP주소 & 내부 서비스를 제외한 IP주소로부터의 요청을 막게 된다. 정책도 정책인 만큼 사용에 주의가 필요할 것 같다. 

참고로 위 정책을 추가해도 외부의 계정 접속을 막는다는 것이 아니다. 위 정책은 API 호출에 대한 권한이다. 접속 후, 이후에 이뤄지는 Action을 Deny 하겠다는 것이다. 실제로 테스트해보면 하단의 명령어 입력 시, 정상적으로 접속 중인 IAM 계정이 출력되며

aws sts get-caller-identity
콘솔환경으로 접속 시, 성공적으로 접속이 된다. 다만 리소스가 생성된 서비스는 다음과 같이 ls 권한이 없다고 오류를 출력한다.

개인적으로 키 파일이 생성된 모든 IAM User는 위의 정책이 적용되어야 하지 않나 싶다.

반응형
Comments