BLOG
[STG301] Amazon S3 security and access control best practices
연사 : Paul Armstrong / Giuseppe A. Prcelli 일시: 2022.11.30 13:00 ~ 14:00 장소: Mandalay Bay, Level 1 North, South Pacific F 작성자 : 메가존클라우드 Data Business Center 조예원 매니저 |
Amazon S3 보안 및 액세스 제어 방법과 Best Practices 소개에 대한 세션으로, 이번 세션에서는 크게 5가지 Best Practices가 다루어 졌습니다.
- Block Public Access : S3 버킷에 Block Public Access를 적용하여 데이터 보안 설정
- Encryption : S3 버킷 레벨에서 기본 암호화 설정을 활성화 하고, S3 버킷 키를 사용하여 AWS KMS를 사용 비용 감소
- Bucket Policies : 범위를 정하기 위해 deny 문구 사용
- Disable ACLs : S3 버킷 소유자가 S3 Object 소유권에 대해 ACLs를 비활성화 하도록 함
- IAM Access Analyzer and logging your request : IAM Access Analyzer로 허용 설정이 의도한대로 되었는지 확인하고, Amazon S3 server access log와 AWS CloudTrail로 bucket에 대한 기록을 남김
S3 버킷은 기본적으로 private로 설정되어 있기 때문에, aws Account 밖에서는 접근할 수 없으며, 같은 계정 안의 IAM일지라도, 권한이 없는 계정은 접근할 수 없습니다.
Block public access는 Amazon S3의 퍼블릭 접근을 막는 것을 말하며 설정하기를 권장합니다. S3가 존재하는 account 밖에서도 접근할 수 있도록 권한을 줄 수 있지만, 명확하게 지정해주어야 합니다.
S3를 Data Lake 버킷으로 사용하거나, 버킷에 애플리케이션 configuration이 담겨있거나, log data를 담고 있거나, static website 내용을 담고 있을 때는 S3 Block Public Access 가 적합하지만, S3에서 바로 사용할 수 있길 원하는 퍼블릭 데이터셋을 담을 때는 적합하지 않습니다.
Amazon S3 암호화는 1) Client-side에서 사용할 때 2) 데이터를 옮길 때 3) 데이터가 저장 되어있을 때의 3가지 단계에서 적용할 수 있습니다.
그 중에서 데이터가 S3에 저장되어 있을 때 (Data at Rest) 사용 가능한 암호화 방법은
1.Amazon S3-managed keys (SSE-S3)
2.AWS KMS keys(SSE-KMS) with Customer Managed Key
3.AWS KMS keys(SSE-KMS)with AWS Managed Key가 있으며,
각각의 방법에서 지원하는 기능은 슬라이드 내 이미지로 확인 가능합니다.
AWS 콘솔에서 Amazon S3 기본 암호화 설정을 손쉽게 활성화 할 수 있습니다.
Amazon S3 버킷 키를 사용할 경우 암호화 성능을 높일 수 있으며, KMS를 사용해서 암호화 할 때보다 최대 99%까지 비용을 절감할 수 있습니다.
Amazon S3 Storage Lens는 비용 효율성과 데이터 보안을 높이기 위해서 Storage 사용성 및 활동성을 한눈에 볼 수 있도록 제공하는 Storage Analytics 서비스입니다.
Storage Lens 데이터를 접근하는 방법은 아래와 같습니다.
- Amazon S3 콘솔에서 제공하는 대시보드
- Amazon S3 버킷으로 데일리로 데이터 전송
- Amazon CloudWatch
접근 제한의 핵심은 IAM, Bucket Policy, Access Control List가 있습니다.
- IAM(Identity and Access Management) : IAM 계정 정책으로 접근 권한을 부여
- Bucket Policy : Amazon S3 버킷에 접근 권한 부여
- Access control list (ACL) : S3 버킷 혹은 객체에 접근 권한 부여
IAM 정책으로 IAM 사용자가 어떤 버킷에 어떤 액션을 취할 수 있는지 정의하게 되는데, 위 예시 코드에서 각각의 key가 의미하는 바는 아래와 같습니다.
- Effect : 정책이 특정 액션을 허용하는 것인지 거절하는 것인지
- Action : 정책이 허용 혹은 거절하는 액션
- Resource : 정책 적용 대상이 되는 AWS resource
정책을 작성할 때 Action과 Resource가 매핑 되어야 합니다. bucket에 대한 액션이면, resource도 bucket이어야 합니다.
IAM 관리자가 IAM 정책을 정의해서 각 IAM 유저에게 IAM 정책을 할당하게 됩니다.
서로 다른 AWS account 간 S3의 데이터를 공유하고자 할 수 있습니다. 그 때, S3 버킷이 존재하는 account가 아닌 다른 account의 IAM 정책에만 S3 버킷 접근 권한을 준다면, S3 버킷에 접근할 수 없게 됩니다.
S3 버킷 정책에도 특정 다른 account가 접근할 수 있다는 정책을 정의해주어야, 해당 account에서 S3 접근이 가능합니다.
효율적인 S3 접근 제어 관리를 위해서는 아래와 같은 규칙을 따르는 것이 좋습니다.
- 공유 버킷에 대한 access management를 단순화한다.
- 버킷 정책을 세분화하여 접근하려는 각 access point별 하나의 정책이 반영되도록 한다.
- 특정 prefix를 사용해서 end user를 제한한다.
- 특정 VPC로의 트래픽을 제한한다.
S3 Object Ownership을 사용해서 버킷과 객체의 ACL(AccessControlLevel) 을 비활성화 할 수 있습니다. (추천하는 방안)
버킷 ACL을 비활성화 하면, 버킷은 버킷 소유자에 의해 소유하게 되고, Bucket Policy는 버킷 안의 모든 객체에 반영됩니다.
Amazon S3 server access log와 AWS CloludTrail에 이제 ACL 사용 정보가 추가 되어,
‘aclRequired’라는 이름의 필드가 신규로 추가 되었습니다.
IAM Access Analyzer로 버킷에 허용되고 있는 것들을 리뷰할 수 있으며, public 버킷이나 외부로 공유되고 있는 bucket을 보여주는 간단한 대시보드의 역할을 합니다.
IAM Access Analyzer for S3 예시는 위를 참고 바랍니다.
Amazon S3 server access log와 AWS CloudTrail을 사용하면 버킷에 들어오고 있는 요청들의 상세 기록을 확인할 수 있고, 보안 및 접근 감시에 유용하며, 요청들을 쿼리하고 분석할 수 있게 됩니다.
제가 Data를 다루는 작업을 할 때 S3는 거의 필수적으로 사용하고 있는 스토리지 서비스인데, 주로 보안 및 접근 권한은 설정되어 있는대로 사용하고 있었습니다.
보안 및 접근 권한 설정을 위해 직접 SA 및 고객과 협의 할 일이 생길 때를 대비해서 S3 정책에 대해 알고 싶었는데, 이번 세션에서 기본적인 보안 및 권한 제어 구조와 Best Practice들을 설명해주어서 개념을 이해 할 수 있는 시간이 되었고, 앞으로 실제 S3를 다룰 때 도움이 될 것 같습니다.
👉본 세션 내용 관련하여 추가 문의나 요청 사항이 있으시다면? 우측 링크로 이동하셔서 편하게 의견을 남겨주세요! https://www.megazone.com/contact/
👉 다른 세션 후기글이 궁금하시다면? 아래 링크를 통해 확인해 주세요!
🔷Keynote Report #1. Day1 Monday Night Live with Peter DeSantis 확인하기
🔷Keynote Report #2. Day2 Adam Selipsky Keynote 확인하기
🔷Keynote Report #3. Day3 Swami Sivasubramanian Keynote 확인하기
🔷Keynote Report #4. Day4 Dr.Werner Vogels Keynote 확인하기
✅3. 현대화 (Modernization)세션 후기 확인하기
✅4. SAP 세션 후기 확인하기
✅5. 쿠버네티스 세션 후기 확인하기
✅7. 분석 세션 후기 확인하기
✅8. AI/ML 세션 후기 확인하기
✅10. 현대화 (Modernization) 2 세션 후기 확인하기
✅11. 현대화 (Modernization) 3 세션 후기 확인하기
✅13. 네트워킹 세션 후기 확인하기
✅14. 마이그레이션3 세션 후기 확인하기
✅16. 보안 세션 후기 확인하기
✅17. SAP 2 세션 후기 확인하기
✅18. 마이그레이션4 세션 후기 확인하기
✅19. DevOps 세션 후기 확인하기
✅20. 신규업데이트 세션 후기 확인하기
✅21. 스토리지 세션 후기 확인하기
✅22. Amazon 세션 후기 확인하기
✅23. 신규업데이트2 후기 확인하기
✅24. 거버넌스 후기 확인하기
✅25. 거버넌스2 후기 확인하기
✅26. DevOps 2 후기 확인하기
✅27. AI/ML 3 세션 후기 확인하기
✅28. 분석2 세션 후기 확인하기
✅29. 쿠버네티스2 세션 후기 확인하기
✅30. 분석 3 세션 후기 확인하기
✅31. 서버리스 컴퓨팅 세션 후기 확인하기
✅32. 신규 업데이트 3 세션 후기 확인하기
✅33. 신규 업데이트 4 세션 후기 확인하기
✅34. 보안 2 세션 후기 확인하기
✅35. 분석 4 세션 후기 확인하기
✅36. 모니터링 세션 후기 확인하기
✅37. AI/ML 4 세션 후기 확인하기
✅38. 운영 세션 후기 확인하기
✅39. 운영 2 세션 후기 확인하기
✅40. 데이터베이스 세션 후기 확인하기
✅41. 데이터베이스 2 세션 후기 확인하기
✅42. 보안 3 세션 후기 확인하기
✅43. SaaS 세션 후기 확인하기
✅44. 컴퓨팅 세션 후기 확인하기
✅45. 신규 업데이트 : AWS SnapStart 세션 후기 확인하기
✅46. 신규 업데이트 : 네트워크 최적화 인스턴스와 최신 Amazon EC2 네트워킹 세션 후기 확인하기
✅47. 아키텍처 세션 후기 확인하기
✅48. SAP 3 세션 후기 확인하기
✅49. 고객사례 세션 후기
✅50. SAP 4 세션 후기 확인하기
✅51. 데이터베이스, 마이그레이션 세션 후기 확인하기
✅52. 보안 4 세션 후기 확인하기
✅53. 보안 규정 세션 후기 확인하기
✅54. 데이터베이스 3 세션 후기 확인하기
✅55. 신규 업데이트 5 세션 후기 확인하기
✅56 .DevOps 3 세션 후기 확인하기
✅57. 분석 5 세션 후기 확인하기
✅58. AI/ML 5 세션 후기 확인하기
✅59. DevOps 4 세션 후기 확인하기
✅60. 신규업데이트 6 세션 후기 확인하기
✅61. 분석 6 세션 후기 확인하기
✅62. 데이터 보호 세션 후기 확인하기
✅63. AI/ML 6 세션 후기 확인하기
✅64. DevOps 5 세션 후기 확인하기
✅65. 신규업데이트 7 세션 후기 확인하기
✅66. 신규 업데이트 8 세션 후기 확인하기