보안
보안(Security) 기둥은 “위협으로부터 시스템과 데이터를 보호하면서도, 비즈니스에 필요한 가치를 계속 전달할 수 있는 능력"을 다룹니다. 단일 방어선에 의존하지 않고 여러 겹의 방어를 쌓는 것이 핵심 사고방식입니다.
심층 방어 (Defense in Depth)
하나의 보안 장치가 뚫려도 다음 겹이 막아주는 구조를 설계합니다. 예를 들어 웹 애플리케이션 하나를 보호하는 데도 다음과 같이 여러 겹을 쌓습니다.
- 네트워크 경계: 보안 그룹, NACL, WAF로 악성 트래픽을 1차 차단
- 자격 증명 경계: IAM 역할과 정책으로 누가 무엇에 접근할 수 있는지 제한
- 애플리케이션 경계: 입력 검증, 인증/인가 로직
- 데이터 경계: KMS 암호화로 설령 데이터가 유출되어도 무의미한 암호문만 노출
이 중 하나라도 빠지면 다른 모든 겹이 강해도 전체 방어선이 약해집니다.
최소 권한 (Least Privilege)
IAM의 핵심 원칙은 “필요한 권한만, 필요한 기간만” 부여하는 것입니다. 실무에서 자주 어기는 패턴과 대안은 다음과 같습니다.
*와일드카드로 모든 리소스에 접근 가능한 정책 대신, 구체적인 리소스 ARN을 명시- 장기 액세스 키 대신 IAM 역할과 임시 자격 증명(STS) 사용
- 사람 사용자에게도 가능하면 IAM Identity Center로 SSO를 통한 임시 권한 부여
- 정기적으로 IAM Access Analyzer로 사용되지 않는 권한을 찾아 제거
데이터 보호: 저장 시와 전송 중 암호화
데이터는 두 가지 상태에서 모두 보호해야 합니다.
- 저장 데이터(At Rest): S3, EBS, RDS 등에서 KMS 키로 암호화. 키 정책으로 누가 복호화할 수 있는지 엄격히 통제
- 전송 중 데이터(In Transit): TLS로 클라이언트-서버 간, 서비스 간 통신을 암호화. ACM(Certificate Manager)으로 인증서를 자동 발급/갱신
사고 대응 준비
보안 사고는 “발생하지 않기를 바라는 것"이 아니라 “발생했을 때 빠르게 대응할 수 있도록 미리 준비하는 것"이 현실적인 접근입니다. GuardDuty와 Security Hub로 탐지 체계를 갖추고, 사고 발생 시 격리할 계정/리소스를 사전에 정의한 자동화된 대응 플레이북(예: EventBridge + Lambda로 침해된 IAM 자격 증명 자동 비활성화)을 준비해두는 것이 권장됩니다.
SAA 연결: 이 보안 원칙들을 실제 아키텍처에 적용하는 구체적인 사례는 SAA: 보안 아키텍처에서 다룹니다. SAP 수준에서 GuardDuty, Security Hub, Config를 조직 전체에 적용하는 방법은 SAP 도메인 1: 보안 제어 규정을 참고하세요.