
IAM( Identity and Access Management )
。AWS의 보안 및 관리를 담당하는글로벌 서비스
▶AWS 서비스와AWS 계정에 할당된Resource에 대한Access를 관리하기 위한 기능
▶글로벌 서비스이므로 전리전에 대해서 적용 가능
IAM주요 기능
。AWS 계정관리 및Resource/AWS 서비스에 대한권한제어
▶ 해당IAM User 계정에 대해AWS 자원에 대한Access를 허용 및 거부 여부를 설정
。IAM User,Group생성 및 관리
。계정 보안을 담당
▶MFA,패스워드 정책등
IAM 권한 검증 과정
。AWS 서비스/AWS Resource를 사용 시IAM User에 대해 다음검증 절차를 수행
ex ) 특정IAM User 계정이AWS EC2를 사용하는 경우
1. 해당IAM User 계정에EC2를 사용할 수 있는정책이 부여되어있는지 검증
2. 해당IAM User 계정이 속한그룹에EC2를 이용할 수 있는정책이 부여되어있는지 검증
IAM구성
IAM User
。실제AWS를 사용하는개별 사용자
。임의의IAM User는 여러그룹에 소속될 수 있다.
Group
。IAM User의 집합 개념
▶ 오직IAM User만 포함가능하며 다른Group을 포함할 수 없다.
。그룹에정책을 부여하는 경우그룹에 속한IAM User는그룹에 부여된정책의권한을 상속받아서 사용가능
▶Linux의user, group과 유사
IAM Role
。AWS 인스턴스에게AWS 서비스를 사용할 수 있도록 일련의AWS 권한를 정의하는임시 권한 집합
▶EC2 인스턴스,AWS Lambda등의인스턴스에 적용하여 권한부여
。EC2 인스턴스가RDS또는S3 버킷에 접근할 수 있도록적절한 권한이 부여된IAM Role을 부여.
。적용된EC2 인스턴스가 실행중이더라도 동적으로IAM Role에게권한을 인가 or 제거가 가능
▶ 실행중인EC2 인스턴스는 해당 설정이 동적으로 적용
。권한을 가진IAM Role을EC2 인스턴스에 설정하는 경우EC2 인스턴스내부의어플리케이션도 동일하게권한을 부여
▶EC2 인스턴스내부어플리케이션에서AWS 서비스에 접근하여 해당권한을 사용가능
정책( Policy )
。IAM User,Group,IAM Role들이 수행 할 수 있는AWS 서비스에 대한 특정권한과조건을 정의한JSON 문서
。IAM User또는IAM Role이 수행할 수 있는작업또는자원에정책을 지정
▶ 해당Policy를 통해AWS 서비스에요청을 수행할권한을 획득
。정책을 적용 시그룹에 부여하여 해당그룹 내IAM User에게상속하게 하거나, 직접정책을IAM User에게 적용하는inline방식 존재
。권한설정 시 최소 권한의 원칙을 적용
▶사용자가 필요 이상의권한을 가지지않도록 방지
Policy를 정의한JSON 문서구성
。다음 구성을 조합하여 각주체가 수행가능한권한 내용을 자세하게 정의
。각각의Statement내Sid/Action/Principal/Effect/Resource/Condition을 지정
Statement구성요소
Sid: 해당Statement의식별자
Action:
。AWS 자원에 대해 수행할기능을 정의
ex )"Acition" : [s3:"ListBucket"]:s3 서비스에서Bucket들을 나열할 수 있는 행동
Principal:
。해당Statement의Policy를 적용할IAM User / Group / IAM Role을 정의
ex )"Principal" : { "arn:aws:iam::123456789012:root" }: 해당IAM User에 대해Policy를 지정
Effect:
▶AWS 자원에 대한Action의허용("Allow") /거부("Deny")를 설정
ex )"Effect" : "Allow": 허용
Resource:
、Action이 적용될AWS 자원을 설정
ex )"Resource" : ["arn:자원명"]: 해당ARN에 해당하는AWS Resource에 대해서
Condition:
。정책이 적용되는조건
▶IP주소/시간대/ ... 등 에 대해서 조건을 설정 가능
Policy : AdministratorAccess의 경우
▶ 모든자원( =*)에 대해 모든행동( =*)을 허용
AWS IAM사용 주의사항
최소권한의 법칙을 통해 단순AWS 서비스사용 시 Root User 대신IAM User를 생성하여 사용
。root user의 사용은 반드시 지양해야하며,admin역할의IAM User를 생성하여 활용해야한다.
물리적 사용자당 오직 하나의IAM User 계정를 생성하여 사용
。새로운개발자발생 시 해당하는IAM User 계정을 생성하여 제공
▶ 한개발자에 다수의IAM User 계정을 할당하지 않도록 설정
AWS 권한을그룹 수준으로 관리
。IAM User들이 소속된IAM Group의정책을 변경하여보안을그룹 수준으로 관리