* 스스로 공부한 내용을 바탕으로 작성한 글입니다. 부정확한 부분이나 오류가 있을 수 있으며, 발견 시 댓글로 알려주세요!
⚙️ AWS에서 누가, 무엇을, 어떤 것을 할 것인지에 대한 인증(Authentication)과 권한 부여(Authorization)를 제어하는 서비스
AWS IAM이란, AWS 내의 ID에 따라 AWS 리소스에 대한 액세스를 안전하게 제어하는 웹서비스이다. IAM을 통해 사용자(IAM User)가 엑세스할 수 있는 AWS 리소스를 제어하는 권한을 한 번에 관리할 수 있다. IAM은 Global Service라서 Region과 상관없이 사용이 가능하다.
IAM에서 제공하는 기능
- AWS 계정에 대한 공유 엑세스 : 암호나 액세스 키를 공유하지 않고도 AWS 계정의 리소스를 관리하고, 사용 권한 부여
- 세분화된 권한 : 리소스에 따라 여러 사용자에게 다양한 권한 부여
- Amazon EC2에서 실행되는 애플리케이션을 위한 보안 AWS 리소스 액세스
- 멀티 팩터 인증 (MFA) : 보안 강화 수단
- Identity Federation : 임시 AWS 계정 엑시스 권한 부여
IAM의 리소스
1. IAM Users
1.1 Root user
- 역할 : 루트 사용자 보안 인증 정보를 보호하고, 루트 사용자만 수행할 수 있는 태스크 수행
- 특징 : 계정 생성시 자동으로 생성됨, 공유 불가능, 모든 AWS 서비스 및 리소스에 대한 완전한 액세스 권한 보유
- 접근 방법 : 계정 생성시 사용한 이메일 주소와 암호로 로그인하여 액세스
- 주의 사항 : 일상적인 상황에서는 최대한 루트 사용자를 사용하지 않을 것을 권장.
1.2 IAM User
- 역할 : 실제 AWS의 기능과 자원을 이용하는 사람 혹은 애플리케이션
- 특징
- 유저의 AWS 서비스 액세스 뿐만 아니라 어플리케이션이 AWS 서비스에 엑세스 하는 것도 관리
- 유저들은 별개의 계정을 갖는 것이 아니라 해당 계정 내에 종속됨.
- 각 유저는 고유의 AWS Management Console 액세스 암호를 가질 수 있음.
- 유저는 그룹으로 묶일 수 있음
- 주의 사항 : 실제 인간 유저인 경우, 장기 보안 인증이 부여된 IAM 사용자를 생성하기보다 AWS에 액세스 할 때 인간 유저에게 임시 보안 인증을 사용하도록 요구하는 것이 좋다.
유저가 AWS에 접근하는 방법
- AWS Command Line Interface : Command-line
- AWS Software Developer Kit : Programming language (Ex.Javascript, Python, PHP, Ruby, Java, Go, C++)
- Access Key는 AWS Console을 통해 생성할 수 있음. 이 키는 절대 공유하면 안 됨!
- Access Key ID → username
- Secret Access Key → password
2. IAM Groups
- 역할 : 다양한 유저들을 모아두고 동시에 관리하고 권한을 적용.
- 사용 이유 : IAM 정책을 여러 유저에게 효율적으로 배포할 수 있기 때문.
- 특징
- 그룹은 반드시 유저들만 포함할 수 있음.
- 다른 그룹 자체를 포함하는 건 안됨.
- 유저는 반드시 그룹에 포함될 필요는 없고, 여러 개의 그룹에 동시에 포함될 수도 있음. 최대 10개의 그룹에 속할 수 있음.
3. IAM Role
- 개념 : 신뢰하는 유저나 그룹에게 부여할 수 있는 일시적인 자격 증명(권한).
- 특징
- 역할은 하나의 유저에 귀속되지 않고 해당 역할이 필요한 모든 유저나 서비스에 연결될 수 있음
- 역할을 사용할 수 있는 주체들
- 역할과 동일한 AWS 계정의 IAM 사용자
- 역할과 다른 AWS 계정의 IAM 사용자
- AWS에서 제공하는 웹 서비스(예: Amazon Elastic Compute Cloud(Amazon EC2))
- SAML 2.0, OpenID Connect 또는 사용자 지정 구축 자격 증명 브로커와 호환되는 외부 자격 증명 공급자(IdP) 서비스에 의해 인증된 외부 사용자
- IAM User VS IAM Role
구분 | IAM User | IAM Role |
주체 | 맡은 역할 직접 수행 | 맡을 역할 직접 제시 |
- EC2, AWS service를 위한 규칙
- Common Rules: EC2 Instance Roles, Lambda Function Roles, Roles for CloudFormation
4. IAM policy
- 개념 : AWS 리소스에 대한 액세스 권한(permission)을 정의한 것
- 특징
- 유저에게는 최소한의 permission을 주어야 한다.
- 유저나 그룹에 대한 정책은 주로 JSON 파일로 명시(key-value 형식).
- 유저나 그룹은 제공된 권한 이외의 서비스에는 절대 접근할 수 없음.
- 지원 정책 유형
- 자격 증명 기반 (Identity-based policies)
- 리소스 정책 기반 (Resource-based policies)
- IAM 권한 경계 (IAM Permissions boundaries)
- 서비스 제어 정책 (SCPs; Service control policies)
- 액세스 제어 목록 (ACLs; Access control lists)
- 세션 정책 (Session policies)
- 권한 관리의 모범 사례 : 유저를 그룹으로 구성하고, 이 그룹에 정책을 부여
MFA(Multi Factor Authentication)
- 개념 : 사용자의 보안을 강화하는 간단하고 효과적인 메커니즘.
- Root Accounts, IAM를 보호하는 역할.
- 비밀번호를 해킹당해도 계정을 지킬 수 있는 수단이기 때문!!
- MFA = Password + Security device(비밀번호 + 휴대폰 등을 통해 제 2의 인증수단 사용)
- 예시 : Virtual MFA device(Google Authenticator, Authy), Universal 2nd Factor Security Key, Hardware Key Fob MFA Device
IAM Security Tools
- IAM Credential Report (Account-level)
- IAM Access Advisor (user-level)
IAM 관련 고려 사항
- AWS 계정의 설정 변경 이외에는 되도록 Root 계정 쓰지 않기
- AWS의 User 1명 = 실제 사람 1명
- 유저들을 그룹으로 묶고, 그룹에 권한을 부여하며 관리하기 ⭐
- 강한 패스워드 규칙 지정하기 (대소문자/특수문자 혼용, 10자 이상과 같은 규칙들)
- MFA를 필수적으로 이용하도록 하기
- AWS 서비스를 이용하기 위한 권한들을 'Role(역할)'을 통해 생성하고 지정하기
- 서비스 접근을 위해 'Access Key' 사용하기
- 'IAM Credentials Report'를 활용해 계정의 접근 권한을 심사/관리하기
ETC
- AWS에서 유저 생성 시에 필요한 비밀번호 규칙을 직접 설정 가능 (최소 글자수, 특정 문자 포함 등등)
- IAM 정책의 문장은 시드, 효과, 원칙, 조치, 리소스, 그리고 조건으로 구성됨.
Reference
AWS 공식 문서 - IAM
AWS 공식 문서 - IAM User ; 사용자
AWS 공식 문서 - IAM Group ; 그룹
AWS 공식 문서 - IAM Role ; 역할
AWS 공식 문서 - IAM Policy ; 정책
728x90
반응형
'Cloud > AWS' 카테고리의 다른 글
[AWS] EC2(Elastic Compute Cloud) (0) | 2024.03.10 |
---|