2018년 2월 16일 금요일

AWS IAM 세부 개념

1. IAM 이란?
  - AWS 리소스에 대한 엑세스를 안전하게 제어할 수 있는 웹 서비스, 리소스를 사용하도록 인증 및 권한 부여된 대상을 제어함
  - IAM 기능
    ~ 계정에 대한 공유 엑세스 : 암호나 액세스 키를 공유하지 않고도 AWS 계정의 리소스를 관리하고 사용할 수 있는 권한을 다른 사람에게 부여 가능
    ~ 세분화된 권한 : 리소스에 따라 여러 사람 또는 EC2 인스턴스에서 실행되는 애플리케이션에 안전하게 제공
    ~ 멀티 팩터 인증(MFA) : 계정 작업을 위해 암호나 액세스 키뿐 아니라 특별히 구성된 디바이스 코드도 제공
    ~ 자격 증명 연동 : 기업 네트워크나 인터넷 자격 증명 공급자와 같은 다른 곳에 이미 암호가 있는 사용자에게 AWS 계정에 대한 임시 액세스 권한 부여 가능
    ~ IAM 액세스 방식 : AWS Management Console, AWS 명령줄 도구(CLI, Window용 PowerShell), AWS SDK, IAM HTTPS API

2. IAM 사용자
  - 첫 액세스에만 해당 루트 사용자 자격 증명
  - 사용자 자격 증명 부여 (사람 or 애플리케이션)

3. 권한 및 정책
  - 사용자 또는 애플리케이션에 효과, 작업, 리소스 및 조건(선택 사항)을 정의하는 문서인 정책(policy)를 통해 권한을 부여 가능
  - 그룹 설정 : 그룹에 연결된 정책에 명시된 권한이 그룹 내 모든 사용자에게 부여됨
    ~ IAM 모범 사례 : https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/best-practices.html
  - 예제 : 777788889999 AWS 계정에서 이름이 bob인 IAM 사용자가 example-bucket이라는 버킷에 객체를 저장을 허용하는 예제
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "arn:aws:iam::777788889999:user/bob"},
    "Action": [
      "s3:PutObject",
      "s3:PutObjectAcl"
    ],
    "Resource": "arn:aws:s3:::example-bucket/*"
  }
}

4. IAM 리소스 개념
  - 사용자 : 사람들 또는 애플리케이션에게 AWS 계정에 대한 액세스 권한을 부여함
  - 역할 : AWS 서비스 및 외부 자격 증명에게 AWS 계정에 대한 액세스 권한을 부여
    ~ 권한 : 정책 연결
    ~ 신뢰 관계 : 자격 증명 공급자 연결
    ~ 액세스 관리자 : 부여된 서비스 권한에 마지막으로 액세스한 시간 표시
    ~ 세션 취소 : 모든 활성 세션 즉시 취소
  - 그룹 : 그룹을 생성하여 여러 사용자의 액세스를 관리함
  - 자격 증명 공급자 : 자격 증명 공급자를 생성하여 신뢰할 수 있는 외부 자격 증명을 정의함
  - 고객 관리형 정책 : 정책을 사용하여 IAM 사용자, 그룹 및 역할의 권한을 정의함
    ~ 기본 정책 이외에 사용자 정의 정책 관리

5. 인스턴스 프로파일 개념
  - IAM 역할을 위한 컨테이너로서 인스턴스 시작 시 EC2 인스턴에 역할 정보를 전달하는데 사용됨
  - AWS 관리 콘솔, CLI, Windows, AWS API 사용해 인스턴스 프로파일 관리
  - 하나의 인스턴스 프로파일은 하나의 IAM 역할만 포함 가능