자격증/aws
IAM
westcold
2025. 2. 21. 00:22
AWS IAM 정리
IAM: 사용자 및 그룹
- IAM(Identity and Access Management): AWS 계정 내 사용자, 그룹, 역할, 정책 등을 관리하는 글로벌 서비스.
- Root 계정: 기본적으로 생성되며, 사용하거나 공유하지 않아야 함
- 사용자(User): 조직 내 개별 계정, 그룹에 속할 수 있음
- 그룹(Group): 사용자만 포함 가능, 다른 그룹을 포함할 수 없음
- 사용자는 그룹에 속하지 않아도 되며, 여러 그룹에 속할 수도 있음
✅ AWS 계정 운영 방식
1️⃣ 회사가 AWS 루트 계정을 생성 (회사 = AWS 계정 소유)
2️⃣ 루트 계정에서 IAM 사용자들을 생성
3️⃣ 각 사용자에게 필요한 권한을 부여
4️⃣ 필요하면 IAM 사용자를 그룹으로 묶어서 관리
✔ 직원들이 개별적으로 AWS 가입하는 게 아니라, 회사 계정 내에서 IAM 사용자 계정을 부여받는 것!
*예시
개념 | 설명 | 예시 |
Root Account | AWS 최상위 관리자 계정 | 회사 CEO |
IAM User | 개별 사용자 계정 | 직원 (팀원) |
IAM Group | 여러 사용자를 묶는 개념 | 부서 (개발팀, 운영팀 등) |
IAM: 권한 (Permissions)
- 사용자 또는 그룹에 JSON 정책(Policy)을 할당 가능
- 정책은 사용자의 권한을 정의함
- 최소 권한 원칙(Least Privilege Principle) 적용
→ 필요한 권한만 부여
예제 정책 (사용자에게 특정 서비스 조회 권한 부여)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "elasticloadbalancing:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*"
],
"Resource": "*"
}
]
}
IAM 정책 상속 (Policies Inheritance)
- 정책은 사용자와 그룹에 할당됨
- 그룹에 속한 사용자는 해당 그룹의 정책을 상속받음
- Inline 정책: 특정 사용자에게 직접 적용 가능
IAM 정책 구조
- Version: 정책 언어 버전 (항상 "2012-10-17" 포함)
- Id: 정책 식별자 (선택 사항)
- Statement (필수)
- Sid: 문서 내 정책의 식별자 (선택 사항)
- Effect: "Allow" 또는 "Deny" 설정
- Principal: 정책이 적용될 계정/사용자/역할(Role)
- Action: 허용 또는 거부할 액션 목록
- Resource: 적용될 리소스
- Condition: 특정 조건이 충족될 때만 정책이 적용됨 (선택 사항)
IAM 비밀번호 정책
- 강력한 비밀번호 요구
- 설정 가능 항목
- 최소 길이 지정
- 대문자, 소문자, 숫자, 특수 문자 포함
- 사용자가 자신의 비밀번호를 변경하도록 허용
- 일정 기간 후 비밀번호 변경 요구 (비밀번호 만료)
- 이전 비밀번호 재사용 방지
MFA (Multi-Factor Authentication)
- AWS 계정 보호를 위한 보안 기능
- 비밀번호 + 보안 장치(2차 인증) 필요
- MFA 사용 시 계정이 해킹당해도 접근 불가
MFA 장치 옵션
- 가상 MFA 디바이스
- Google Authenticator (모바일)
- Authy (모바일)
- Universal 2nd Factor (U2F) 보안 키
- YubiKey (3rd Party)
- 하드웨어 키 FOB
- Gemalto (3rd Party)
- AWS GovCloud용 SurePassID (3rd Party)
AWS 접근 방법
- AWS 관리 콘솔 (비밀번호 + MFA)
- AWS CLI (Command Line Interface) (Access Key 필요)
- AWS SDK (Software Development Kit) (Access Key 필요)
- Access Key
- Access Key ID ≈ 사용자명
- Secret Access Key ≈ 비밀번호
- 외부 공유 금지
AWS CLI & SDK
- AWS CLI
- 명령어를 통해 AWS 서비스와 상호작용 가능
- AWS 서비스의 API 직접 접근 가능
- 스크립트를 작성하여 자동화 가능
- AWS SDK
- AWS 서비스에 프로그램적으로 접근할 수 있는 라이브러리
- 여러 프로그래밍 언어 지원 (JavaScript, Python, Java, C++, Go 등)
- 모바일 및 IoT SDK 지원
- AWS CLI는 AWS SDK for Python(Boto3)을 기반으로 동작
IAM 역할 (IAM Roles)
- 특정 AWS 서비스가 사용자의 대신 작업을 수행해야 할 경우 사용
- AWS 서비스에 권한을 부여하는 방식
- 대표적인 IAM 역할
- EC2 인스턴스 역할
- Lambda 함수 역할
- CloudFormation 역할
IAM 보안 도구
- IAM Credentials Report (계정 수준)
- 계정의 모든 사용자 및 자격 증명 상태를 보고함
- IAM Access Advisor (사용자 수준)
- 사용자가 부여받은 권한과 마지막 사용 날짜 확인 가능
- 불필요한 권한 제거에 활용 가능
IAM 모범 사례
✅ Root 계정 사용 최소화
✅ 하나의 물리적 사용자 = 하나의 AWS 사용자
✅ 그룹을 활용하여 권한 관리
✅ 강력한 비밀번호 정책 설정
✅ MFA 활성화 및 강제 적용
✅ AWS 서비스에 권한을 부여할 때 역할(Role) 사용
✅ CLI / SDK 사용 시 Access Key 사용
✅ IAM Credentials Report 및 Access Advisor로 정기적인 감사 수행
✅ IAM 사용자 및 Access Key 공유 금지
IAM 요약
- 사용자(User): 개별 AWS 계정, AWS 콘솔 로그인 가능
- 그룹(Group): 사용자만 포함 가능, 권한 관리 용이
- 정책(Policy): JSON 형식으로 사용자의 권한을 정의
- 역할(Role): EC2, Lambda 등 AWS 서비스에 권한 부여
- 보안(Security): MFA 및 비밀번호 정책 활용
- CLI / SDK: 프로그램적으로 AWS 자원 관리 가능
- Access Key: CLI 및 SDK를 사용한 AWS 접근 방법
- 감사(Audit): IAM Credential Report & Access Advisor 활용