AWS 인프라의 보안을 유지하려면 인증(Authentication), 권한 부여(Authorization), IAM(Identity and Access Management) 에 대한 명확한 이해가 필요하다.
AWS 루트 사용자 보호
Authentication vs Authorization
- Authentication(인증) : 사용자가 누구인지 확인하는 과정. 예를 들면, 로그인할 때 사용자 이름과 비밀번호를 입력하는 것
- Authorization(권한 부여) : 인증된 사용자가 무엇을 할 수 있는지를 결정하는 과정. 예를 들어, 특정 S3 버킷을 읽을 수 있는 권한을 갖고 있는지 확인하는 것
인증
사용자의 ID와 비밀번호, MFA를 사용해 신원을 증명
AWS에서는 주로 AWS Management Console, CLI, SDK를 통해 인증이 이루어진다.
권한 부여
인증이 완료된 사용자에게 IAM 정책을 통해 권한을 부여한다.
권한 부여는 리소스 단위로, 예를 들면 EC2 인스턴스를 시작하거나 중지할 수 있는 권한을 지정한다.
AWS 루트 사용자
AWS 계정을 생성할 때 자동으로 만들어지는 최고 권한을 가진 사용자
모든 리소스에 무제한 액세스 권한을 가지며, 삭제할 수 없다.
AWS 루트 사용자 자격 증명
이메일 주소 + 비밀번호로 로그인한다.
선택적으로 MFA를 설정하여 보안을 강화할 수 있다.
AWS에서는 루트 사용자 접근을 가능한 한 제한하고, 꼭 필요한 경우에만 사용하는 것을 권장한다.
AWS 루트 사용자로 작업 시 모범 사례
- MFA 필수 설정
- 루트 사용자로는 최소한의 작업만 수행
- 일반 작업은 별도의 IAM 사용자를 생성하여 수행
- 루트 사용자 비밀번호는 안전한 장소에 보관하고 절대 공유하지 않기
키를 삭제하여 안전 보장
루트 사용자에 대해 Access Key를 생성하지 말 것을 권장한다.
만약 루트 사용자의 Access Key가 존재한다면, 가능한 빨리 삭제해야 한다.
MFA (Multi-Factor Authentication)
루트 사용자와 IAM 사용자 모두에 대해 MFA를 설정해야 한다.
인증 앱 (Google Authenticato)을 이용해 2차 인증을 설정한다.
MFA가 설정되면, 비밀번호만으로는 로그인할 수 없고 추가 인증이 필요하여 보안이 대폭 강화된다.
AWS Identity and Access Management (IAM)
IAM이란?
IAM은 AWS에서 인증과 권한 부여를 관리하는 서비스
사용자, 그룹, 역할 및 정책을 관리하여 세밀한 접근 제어를 제공한다.
IAM의 주요 기능
- IAM 사용자 생성 및 관리
- IAM 그룹 생성 및 사용자 할당
- IAM 역할 생성 및 부여
- 세밀한 권한 설정을 위한 IAM 정책 작성 및 적용
- MFA 및 비밀번호 정책 설정
IAM 사용자
AWS 리소스에 개별적으로 접근할 수 있는 엔터티
각 사용자에게는 고유한 자격 증명(비밀번호, 엑세스 키)이 부여된다.
일반적으로 사람을 의미하지만, 프로그램이나 애플리케이션을 위해 사용자 계정을 만들 수도 있다.
IAM 그룹
여러 IAM 사용자를 논리적으로 묶는 방법
그룹에 권한을 부여하면, 그룹에 속한 모든 사용자가 그 권한을 가진다.
ex) 개발자 그룹, 운영 그룹
IAM 정책
JSON 형식으로 작성된 문서
사용자가 어떤 리소스에 어떤 액션을 할 수 있는지 정의
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::example-bucket"
}
]
}
IAM 정책은 사용자, 그룹, 역할에 바인딩하여 사용한다.
바인딩
적용하거나 연결하는 것
AWS에서의 역할 기반 액세스
AWS 루트 사용자 잠그기
루트 사용자로 일상적인 작업을 절대 하지 않는다.
IAM 사용자를 생성하고 이들에게 필요한 권한만 부여하여 사용한다.
루트 사용자는 필요할 때만 로그인한다.
최소 권한 원칙
사용자/그룹/역할 에 꼭 필요한 최소한의 권한만 부여한다.
"혹시 필요할 수도 있으니" 하는 식으로 과도한 권한을 부여하지 말아야 한다.
Best Practice
새 IAM 사용자 생성 시 기본 권한은 없음 상태로 시작
필요에 따라 필요한 권한만 정책으로 추가
적절하게 IAM 사용
- 사용자(User): 사람이 직접 AWS 리소스를 사용할 경우
- 역할(Role): 다른 AWS 서비스나 애플리케이션이 AWS 리소스에 접근할 경우
정리
AWS 루트 사용자 | 계정 생성 시 만들어지는 최고 권한 사용자. 가능하면 사용 금지 |
IAM 사용자 | 개별 사용자를 위한 인증 수단 (비밀번호, Access Key) |
IAM 그룹 | 사용자 집합에 정책을 일괄 적용하는 논리적 묶음 |
IAM 역할(Role) | AWS 서비스나 애플리케이션이 사용할 수 있는 임시 권한 집합 |
IAM 정책(Policy) | 리소스에 대한 권한을 JSON으로 정의한 문서 |
최소 권한 원칙 | 반드시 필요한 권한만 부여 |
MFA | 필수 보안 강화 수단 |
AWS를 안전하게 사용하기 위해서는 루트 사용자 보호, IAM 사용자와 그룹 관리, 최소 권한 원칙 준수가 필수적이다.
처음에는 다소 복잡해 보일 수 있지만, 올바른 습관을 갖추면 이후 클라우드 인프라를 운영하는 데 큰 자산이 될 것이다.
'Infra' 카테고리의 다른 글
🌐AWS VPC 네트워크 구성 - 실무형 설계 Best Practice (1) | 2025.05.21 |
---|---|
[AWS] EC2 인스턴스 성능 비교 실험 (ARM vs x86) (0) | 2025.05.08 |
[AWS] 입문! - AWS에 배포하기 (0) | 2025.04.16 |
[Docker] 입문! - Spring, FastAPI, MySQL 환경설정을 한 번에 (0) | 2025.03.29 |