개요
Identity and Access Management (IAM)은 AWS 리소스에 대한 접근을 안전하게 제어하도록 돕는 서비스이다.
조직 내 사용자 및 서비스에 대해 누가 어떤 리소스에 어떤 방식으로 접근할 수 있는지를 설정하고 감시할 수 있다.
- 사용 목적 : 최소 권한의 원칙 (the Principle of Least Privilege, PoLP)기반 권한 제어
- 핵심 기능 : 인증 (Authentication) + 인가 (Authorization)
주요 구성 요소
- User : 실제 사람이나 서비스 계정을 의미하며, AWS console 및 AWS CLI 사용 가능함.
- Role : 사용자들의 집합. 그룹에 연결하여 관리 효율성 향상
- Group : AWS 서비스 또는 사용자에게 일시적인 권한을 부여하는 역할 기반 권한.
- Policy : JSON 형식의 문서로, 누가 어떤 작업을 어떤 리소스에 대해 수행할 수 있는지 정의.
- Identity Provider (IdP) : 외부 인증 시스템 (ex. Googe, AD, SAML)을 통해 인증을 제공
IAM 보안 기능
기능 | 설명 | 모범 사례 |
Multi-Factor Authentication (MFA, 다단계 인증) |
사용자 로그인 시, 비밀번호 외에 추가 인증 요구 | - 모든 root 계정 및 사용자에게 MFA 활성화. - 특히 콘솔 로그인이 가능한 사용자에게 MFA 또는 H/W MFA 적용 |
IAM 정책 조건부 제어 | IP 주소, 시간대, MFA 여부 등 조건 기반 권한 설정 가능 | - 정책에 `"Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}` 같은 조건 추가 - `aws:SourceIp` 조건으로 내부망 접근만 허용 |
Permission Boundary | 최대 허용 가능한 권한의 범위를 제한 (Role/ 사용자에게 상한 설정) |
- 외부 개발자나 자동화된 tool (Roles etc.)에게 권한을 부여할 때 권한 상한선 설정. ex) S3 read-only 만 가능하도록 경계 지정 |
Service Control Policies (SCPs) | AWS Organizations 환경에서 계정 전체의 권한 제한 가능 | - 조직 내 개발 환경에는 쓰기 작업 차단, SCP, 운영 환경에는 정책 변경 차단 SCP 등 환경별로 구분하여 SCP 설정 |
Credential Report | 각 사용자 계정의 보안 상태 (비밀번호, 나이, MFA 등) 확인 가능. | - `aws iam generate-credential-report`를 자동화 스크립트로 주기적 실행하여 비밀번호 만료, 접근 키 노출 여부 확인 및 알림 설정 |
실습. AWS Hands-on with IAM. EC2-S3 IAM Permissions, MFA, and Access Auditing
💡 실습 목표
- 사용자, 그룹, 역할을 생성하고 권한을 부여해보며 IAM 구조와 정책을 이해한다.
🔧 실습 순서
- S3 접근을 위한 IAM Role 생성 후 EC2 인스턴스에 role 수임(assume)하기
- 조건부 정책(Condition)을 적용한 권한 부여
- IAM Access Analyzer 연동
1.S3 접근을 위한 IAM Role 생성 후 EC2 인스턴스에 role 수임(assume)하기
AWS Console
1) IAM 역할 생성 (EC2 용)
- AWS Management console > IAM > Roles > Create Role
- 신뢰할 수 있는 Entity : EC2
- 정책 연결
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::your-bucket-name", "arn:aws:s3:::your-bucket-name/*" ] } ] }
- 역할 이름 : `EC2_S3AccessRole`
2) EC2 인스턴스에 역할 연결
- AWS Management Console > EC2 > 인스턴스 선택 > 작업 > 보안 > IAM 역할 수정 > 생성한 역할 연결
- EC2 SSH Console에서 결과 확인
2. 조건부 정책(Condition)을 적용한 권한 부여
- 목적 : 특정 IP 대역 또는 특정 시간대에만 접근을 허용하여 보안 강화
AWS Console
- IAM > Users > { User name } > Create policy > JSON
* IP + 시간 제한
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "IPandTimeRestrictedAccess",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::your-bucket-name/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "203.0.113.0/24"
},
"DateGreaterThan": {
"aws:CurrentTime": "2025-05-01T08:00:00Z"
},
"DateLessThan": {
"aws:CurrentTime": "2025-05-01T18:00:00Z"
}
}
}
]
}
3. IAM Access Analyzer 연동
AWS Console
- IAM > Access Analyzer > Analyzer 생성하기
- S3 > menu > IAM Access Analyzer for S3
- Public Access가 허용된 S3 버킷 여부 확인
- 제3자 AWS 계정을 포함한 외부 AWS 계정의 접근 여부 확인
@. MFA 설정
AWS Console
- IAM > Users > { User name } > Security Credentials
- MFA > Assign MFA device
- 가상 MFA 디바이스 선택
- MFA 앱 (Google Authenticator 등)으로 QR 코드 스캔
- MFA 코드 2번 입력 > 완료
참고 자료
- https://docs.aws.amazon.com/iam/
- https://policysim.aws.amazon.com/home/index.jsp#users
-
'Cloud Security 7기' 카테고리의 다른 글
[Cloud Security] AWS 보안의 이해와 자동화 구성 - 실습 (0) | 2025.05.08 |
---|---|
[Cloud Security] 4주차. AWS 환경에서 보안 이해와 자동화 구성 (1) | 2025.05.05 |
[Cloud Security] 3주차. S3 기능 및 보안 이해 (1) | 2025.04.22 |
[Cloud Security] 3주차. EC2 기능 및 보안 이해 (1) | 2025.04.21 |
[Cloud Security] 2주차. On-premise vs. Cloud network (1) | 2025.04.07 |