S3 웹 통신 시 안전한 알고리즘(HTTPS)을 통해 암호화하기
CMC-302
S3는 Amazon Web Service 의 상품 중 하나입니다.
S3 또한 웹 서비스이기 때문에 http 통신을 합니다.
문제는 S3가 HTTPS 통신 외에 HTTP도 지원한다는 것입니다.
비록, 제가 구축한 시스템의 모든 구간에서 HTTPS를 사용하지만, 명시적으로 S3에서 HTTP를 거부하도록 정책을 추가해 봅시다.
테스트 환경 구축
1. 버킷을 하나 생성하고 PDF 파일 업로드
pdf, jpg, png, txt 파일 중 하나를 업로드 해주세요. 브라우저에서 바로 표시가 가능한 파일을 업로드 해주세요.
아래 단계에서 주소창 url을 복사할 예정이기 때문.

2. 해당 파일을 선택하고 열기 버튼을 누릅니다.

3. 열린 창의 URL 복사
5분동안 유효한 링크가 생성되었습니다. 복사해주세요.
4. 로컬 PC에서 테스트
cd Desktop
curl -vv -o local.pdf "복사한 URL주소"
복사한 URL주소는 분명히 https 일 것이기 때문에, http 로 바꾸고 테스트 해주세요.
아마도, http / https 둘 다 성공할 것입니다. (통신 차이를 살펴보세요)
5. S3 버킷에 다음의 정책 추가



{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyUnencryptedTraffic",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
해석 : 보안통신을 사용하지 않는 모든 S3행동 거부
if (aws:SecureTransport === false) Deny "s3:*";
6. 로컬 PC에서 테스트
위의 4번과 동일하게 테스트 해보세요.
이전 테스트와 다르게 http 통신은 403 오류가 발생할 것입니다.

S3 HTTPS를 사용한 경우.

S3 HTTP를 사용한 경우
결론 : 버킷이 더 안전해졌습니다!
참고 - https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/security-best-practices.html
해가 지나갈수록 클라우드 관리가 어려워집니다.
매년 보안 취약점 점검, 보안 컨설팅, ISO 27001 감사, ISMS-P 감사 를 받고 있는데,
너무 귀찮고 번거롭네요. 분명히 작년에 통과한 설정인데, 올해에 뭔가 또 걸립니다.
S3 http 차단하라는 것 역시 올해에 새로 지적된 사항이네요.
AWS Config 를 사용해서 컴플라이언스 요구조건을 자동으로 검사하도록 구성할 수 있습니다. (구성 방법은 생략)
AWS Config 에 s3-bucket-ssl-requests-only 규칙을 추가한 후, 모두 규정 준수가 나오면 됩니다.


주기적으로 컴플라이언스를 체크하시고, 미준수 리소스가 있다면 위의 정책 적용하시기 바랍니다.