IAM 개요
AWS 계정 및 권한 관리 서비스
AWS 서비스와 리소스에 대한 액세스 관리
사용자, 그룹, 역할, 정책으로 구성
리전에 속하는 서비스가 아닌 글로벌 서비스
계정 보안 강화를 위한 권장 사항
IAM 자격증명 - 사용자, 그룹, 역할, 정책
사용자(USER) 개인 또는 애플리케이션을 위한 특정 권한을 가진 ID
그룹 (GrOUP) 개발팀, 운영팀 등의 사용자의 집합
역할 (Role) 특정 개인에 속하지 않는 특정 권한을 가진 ID
^
1
V
정책(Policy)
할 수 있는 것과 할 수 없는 것에 대한 권한 정의
사용자, 그룹, 역할에 연결하여 사용
json 문서 형식으로 구성
IAM 사용자
단일 개인 또는 애플리케이션에 대한 특정 권한을 가지고 있는 AWS 계정 내 자격증명
한사람과만 연관 (한명의 살제 사용자)
암호 또는 액서스 키와 같은 장기 자격 증명을 통해 액세스
IAM 은 글로벌 서비스이기 때문에 계정을 선택할 수 없음
암호 정책을 바꿀 수 있음
MFA 디바이스를 선택하여 보안 증명 설정 가능함
정책 연결 가능
그룹에 사용추가를 해서 연결 가능
그룹에서 사용자 그룹을 만들어서 권한을 별도로 할당 할 수 있음
정책은 JSON 형태로 구성되어있음
액세스키도 별도로 만들어서 사용 할 수있음 (프로그래밍에서 접속해서 사용가능)
기타 SSH, GIT 자격증명 등등을 통해서 로그인이 가능함
역할은 누구나 맡을수 있는 ID
IAM 정책
AWS 리소스에 대한 액세스 권한을 정의한것
사용자, 그룹, 역할에 정책을 연결하여 사용
JOSN 문서 형식으로 이루어짐
정책이 명시되지 않는 경우 기본적으로 모든 요청이 거부됨
IAM 정책 SON 문서 구조
Effect Allow 또는 Deny를 사용하여 명시된 정책에 대해 액서스 허용 또는 거부
Action : 정책이 허용하거나 거부되는 작업 목록
Resource : 작업이 적용되는 리소스
Condtion : 정책이 적용되는 세부 조건(옵션 사항)
IAM -JSON 정책 구문
상황1
어떻게 읽니?
Lamda 서비스에 대한 정책이 명시
기본적으로 모든 권한을 허용
220.110.16.0/20ip 네트워크로 부터의 함수 생성과 함수 삭제는 권한이 거부 됨
상황 2
Ec2 서비스에 대한 정책이 명시
사용자 소스 ip 대역이 10.110.100.0/24 인 경우에만 ec2 인스턴스를 종료할 수 있음
us-esast-1 리전이 아닌경우에는 다른리전에서 발생하는 모든 작업이 거부됨
*사용사 소스가 ip가 10.100.100.0/24 대역인 경우에만 us-east-1 리전의 ec2 인스턴스를 종료 할 수 있음
IAM - 자격 증명 기반 정책
-관리형 정책
AWS 계정에 속한 다수의 사용자, 그룹 및 역할에 연결 할 수 있는 정책임
AWS 관리형 정책 - AWS에서 생성 및 관리
고객관리형 정책 - 사용자가 생성 및 관리
-인라인 정책
단일 사용자, 그룹 또는 역할에 직접 추가하는 정책
IAM 권한 경계
IAM 사용자 또는 역할에 최대 권한을 제한 하는 기능
예) IAM 사용자에게 S3, Cloudwath 및 EC2 만 관리할 수 있게 하려면 아래와 같은 정책 적용
aws 전체 권한을 가지고 있어도 권한 경계에 대한 권한 범위로 축소하여 적용됨
사용자가 직접 정책을 생성할수도 있음
정책을 그룹에 연결을 한다던가 할 수 있음
사용자에도 권한 추가를 통해서 할 수 있음 (직접 연결로)
물론 역할에도 연결 할 수 있음
*인라인 정책 설정 -> 한명한명에만 적용되는 정책
전체 권한을 가지고 있더라도,권한 경계를 통하여 일부분은 안되도록 설정 할 수있음
IAM 역할 개요
IAM 역할
특정 권한을 가지고 있는 AWS 계정 내 자격증명
AWS 자격 증명이라는 점에서 IAM 역할은 IAM 사용자와 유사하지만
역할은 한 사람과만 연관되 않고 해당 역할이 필요한 IAM 사용자, 어플리케이션, AWS 서비스 등 누구든지 맡을 수 있음
역할에는 암호 또는 액세스 키와 같은 장기 자격 증명이 없고 해당 역할 세션을 위한 임시 보안 자격 증명이 제공
AWS Security Token Service (AWS STS) 를 사용하여 AWS 리소스에 대한 액세스를 제어 할 수 있는 임시 보안 자격 증명을 생성
IAM 역할을 맡는 경우 발급되는 토큰은 일시적이며 만료되면 보안 인증 정보가 유촐되고 재사용 되는 것과 관련된 위험이 줄어듬
역할을 사용하여 AWS 리소스에 액서스 할 수 없는 사용자, 애플리케이션 또는 서비스에 액서스 권한을 위임
사용 예
-AWS 계정의 사용자에게 권한이 업슨 리소스에 대한 액세스 권한 부여
-한 AWS 계정의 사용자에게 다른 계정의 리소스에 대한 액세스 권한 부여
-모바일 앱에서 AWS 리소스를 사용할수 있도록 하되 앱에서 AWS 키를 내장(교체하기 어렵고 사용자가 추출할 가능성이 있음) 하길 원치 않는 경우
-기업 디렉터리에서처럼 aws 외부에 정의된 자격 증명을 이미 보유하고 있는 사용자에게 AWS 액세스 권한을 부여
-타사에 계정에 대한 액세스 권한을 부여하여 리소으에 대한 감사를 수행할 수 있도록 해야하는 경우
역할 사용주체
-AWS 서비스 (예 Amaazon EC2)
-역할과 동일하거나 다른 aws 계정의 iam 사용자
-amazon, facebook 또는 google과 같은 제 3자 웹 자격 증명 공급자의 사용자
-saml 2.0 등과 호환되는 외부 자격증명 공급자(ldp)서비스에 의해 인증된 외부 사용자
EX) IAM 역할이 사용되는 시나리오
1. AWS 서비스에 대한 액세스 권한 부여
-AWS 리소스에서 사용하는 자격증명
-특정 AWS 서비스가 다른 AWS 서비스에 액세스 하여 작업을 수행할때 필요한 권한
IAM - 역할 (신뢰정책)
IAM 역할에 대한 리소스 정책
역할을 맡을 수 있는 보안 주체와 조건을 정의
시간기반, IP 기반 등으로 사용을 제한 할 수도 있음
역할 : 단기간동안 유효한 자격 증명을 가진 특정 권한이 있는 자격증명
IAM > 역할 > 역할 생성
인스턴스에 역할을 생성할 수 있음
(서비스역할 예시)
-역할을 부여받이 못하면 다음처럼 에러가 남
-권한받은 이후에는 접속 가능
(계정에 연결하는 역할 예시)
다시 전환으로 누르면 전환됨
IAM 보안 도구
IAM 자격증명 보고서 (Credentials Reports)
계정의 모든 사용자와 암호, 액세스 키, MFA 디바이스 등의 자격증명 상태에 대한 보고서를 다운로드 > 보안감사에 사용 가능
-csv파일로 다운로드 받을 수 있음
IAM 액세스 관리자 (Access Advisor)
사용자 또는 역할이 허용된 서비스에 마지막으로 액세스하려고 시도한 시간을 표시
이 정보를 사용해 필요이상으로 부여된 권한을 재정의 하는데 참고 가능
-역할, 사용자 둘다 모두 확인 가능
IAM POLICY Simulator
AWS 계정의 IAM 사용자, 사용자 그룹 또는 역할에 연결된 정책을 테스트 할 수 있음
plicysim.awa.amazon.com/
권한이 없는것은 다음처럼 perission 에 확인됨
유저뿐만 아니라 역할에 대한 부분도 확인이 됨