IAM
- IAM 에서는 사용자를 생성하고 그룹에 배치 ->>>> 글로벌 서비스
- IAM 계정과 root 계정
* 계정을 생성할 때 Root 계정을 만든다. root 계정은 계정을 생성할 때만 사용되어야 한다.
* 그래서 IAM 에서 사용자를 생성해야한다. 하나의 사용자는 조직 내의 한사람에 해당. 이는 IAM 그룹으로도 묶을 수 있다. - 사용자와 그룹을 생성하는 이유는 뭘까? >> AWS 계정을 사용하도록 허용하기 위해서 즉, 이들에게 권한을 부여하여 해당 사용자가 어떤 작업에 대한 일을 할 수 있도록, 또는 접근을 제한할 수 있도록 한다.(ELB, Describe, CloudWatch 등)
- 이 권한은 IAM 정책 ->>> JSON 문서를 통해 어떤 권한인지 확인하고, 부여할 수 있다.
- 따라서 사용자에게 꼭 필요로 하는 것 이상의 권한을 주지 않는다. (최소권한원칙)
IAM 정책
(Developers, Operations, Audit Team 그룹이 있다고 예시를 들고 진행)
- 개발자 그룹과 운영자 그룹으로 정책을 지정하여 해당 사용자에게 정책을 적용한다.
- 하지만, 그룹에 속하지 않는 사용자가 있을 수 도 있다. -> 이럴 경우 Inline 정책을 적용
- 예를들어 개발자와 운영자 그룹의 사용자 중 한명이 감사팀의 정책도 적용되게 되면, 해당 사용자는 다른 정책도 적용 받게 된다.
- 해당 정책은 JSON 문서로 설정되어 있다.
그렇다면.
사용자와 그룹이 손상되지 않도록 보호해야한다. 이를 위한 두가지 방어 메커니즘이 있다.
IAM 그룹 보호
1. Password Policy
2. MFA
1. Password Policy
- 비밀번호에 대해 다양한 옵션으로 비밀번호 정책을 설정한다.
1. 최소 비밀번호 길이 설정 및 특정 문자 유형 포함
2. 자신의 비밀번호 변경 허용 여부에 대한 옵션
3. 일정 시간 후에 사용자에게 비밀번호를 변경하도록 요구
2. MFA : 비밀번호 + 사용자가 소유한 보안 장치의 조합
- AWS 에서는 필수이며, 매우 권장된다.
- MFA 생성 토큰을 통해 기존 비밀번호와 2차 로그인 개념으로 MFA 장치를 통해 로그인을 한다.
- 이러한 점은 비밀번호를 도난당하거나, 해킹당하여 비밀번호를 잊어버린 경우에도 해커는 MFA 장치도 확보해야 하므로 계정이 손상되지 않는다.
- MFA 장치
1. 가상 MFA 장치 (Phone 을 통해 토큰을 가지고 로그인)
2. U2F 키 (타사 제품이며, 단일 보안 키를 사용한다.)
3. 하드웨어 보안 토큰 MFA
4. AWS GovCloud(US) 하드웨어 보안 토큰
AWS 에 사용자가 어떻게 액세스할까?
1. AWS 관리 콘솔
- 비밀번호 + MFA 인 다요소 인증으로 보호된다.
2. CLI (Command Line Interface)
- Access Key 에 의해 보호된다.
- Access Key 란 사용자의 자격증명으로 터미널에서 AWS Acess 를 가능하게 해준다.
3. SDK (Software Developer Kit)
- AWS 로부터 애플리케이션 코드 내에서 API 를 호출하고자 할 때 사용되는 방식
- CLI 와 마찬가지로 Access Key 로 보호된다.
- SDK 는 특정 언어(JavaScripty, Python, PHP, .NET, Java 등) 로 된 라이브러리의 집합 -> 프로그래밍 언어에 따라 개별 SDK 가 존재한다.
- 즉, SDK 는 터미널 내에서 사용하는 것이 아닌, 코딩을 통해 애플리케이션 내에 심어 두어야 한다.
- Mobile SDK, IoT SDK 장치 지원
해당 Access Key 비밀번호와 같은 암호이며 사용자들이 직접 관리한다. (다른 사람과 공유 금지)
4. CloudShell 의 사용 (AWS 내의 터미널)
- 무료이며, 특정 리전에서 가능
IAM Roles : 사용자 또는 그룹에 대해 정책을 주는 것과 마찬가지로 AWS 에서 사용하는 Service 에 대해서도 정책을 부여해야 한다.
- 예를 들어 EC2 인스턴스를 만든다면, AWS 에서 어떤 작업을 수행하기 위해 권한을 부여해야한다.
-> IAM Role 의 권한을 올바르게 부여하면, 하려고 하는 호출에 접근할 수 있다. - 정책에는 EC2 인스턴스뿐만 아니라 Lambda 함수 Role 과 CloudFormation 등 다양한 AWS 서비스에에 의한 IAM Role 도 지정할 수 있다.
IAM 보안 도구
1. IAM 자격 증명 보고서
- 계정 수준에서 가능
- 자격 증명 보고서는 계정에 있는 사용자와 다양한 자격 증명의 상태를 포함한다.
2. IAM 액세스 관리자
- 사용자 수준에서 가능
- 액세스 관리자는 사용자에게 부여된 서비스의 권한과 해당 서비스에 마지막으로 액세스한 시간이 보인다.
- 최소 권한의 원칙에 따랐을때 매우 도움 되는 정보이다.
- 어떤 권한이 사용되고 안되는지 볼 수 있고, 사용자의 권한을 줄여 최소 권한의 원칙을 지킬 수 있다.
IAM 정리
1. AWS 계정을 설정할 때를 제외하고는 루트 계정을 사용하면 안된다.
2. 자격 증명 정보는 공유해서는 안된다.
3. 사용자를 그룹에 할당하고, 그룹에 권한을 부여하여 보안이 그룹 수준에서 관리되도록 할 수 있다. (JSON 문서를 첨부할 수 있다.)
4. 보안은 강력한 비밀번호 정책, 다중 인증 또는 MFA 를 사용하여 안전하게 관리할 수 있다.
5. AWS Service 들에도 다양한 정책을 부여할 수 있다.
6. IAM 사용자와 Access Key 를 절대로 공유하면 안된다.