IAM (Identity and Access Management)

EBAB!·2023년 7월 7일
0

AWS 자격증 준비

목록 보기
3/16
post-thumbnail

IAM 기초

IAM(Identity and Access Management)을 사용하면 AWS 서비스와 리소스에 대한 액세스를 안전하게 관리할 수 있다. 또한 AWS 사용자 및 그룹을 만들고 관리하며 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있다.

  • AWS의 보안 및 관리를 담당하는 글로벌 서비스
  • 주요 기능
    • AWS 어카운트 관리 및 리소스/사용자/서비스의 권한 제어
      • 임시 권한 부여
      • 서비스 사용을 위한 인증 정보 부여
    • 사용자의 생성, 관리, 계정의 보안
      • Multi-factor Authentication
      • 사용자의 패스워드 정책 관리
    • 다른 계정과의 리소스 공유

IAM 구성

사용자

실제 AWS를 사용하는 사람/어플리케이션을 의미

Root 사용자

  • 계정을 생성할 때 같이 생성되는 사용자
  • 계정의 모든 권한을 가지고 있으며 계정 권한을 제한할 방법이 없음
    • 탈취 당했을 때 복구가 매우 어려움 (MFA 필수)
  • 자격증명 부여 가능
  • Root 사용자만 가능한 작업
    • AWS 계정 설정 변경 (메인 이메일 주소, 계정 이름, 연락처 정보 등)
    • 요금 관련 설정 (IAM 유저에게 위임 가능)
    • AWS Support Plan 구독, 변경, 취소
    • AWS 계정 삭제

IAM 사용자

  • IAM을 통해 생성한 사용자

  • 생성 시 권한이 따로 부여되어 있지 않으며 정책 혹은 그룹을 통해 권한을 부여받아 활동

  • 자격증명 부여 가능, 콘솔 로그인 가능 (Optional)

  • 사람 뿐만 아니라 어플리케이션 같은 다른 주체도 대표 가능

    • ex. app이 AWS 서비스를 사용하기 위해서 IAM 사용자의 자격 증명을 보관 후 사용

그룹

  • IAM 사용자의 집합

  • 그룹에 속한 사용자는 그룹에 부여한 권한을 행사

정책

  • 사용자와 그룹, 자격이 무엇을 할 수 있는지에 관한 문서

  • JSON 형식으로 정의

구성 요소

  • Resource : 어떤 AWS 리소스에 대해서
  • Action : 어떤 행동을
  • Effect: 허용/거부
  • Condition : 정책이 적용되는 조건 (ex. IP주소, 시간, 태그 등)
{
	"Version" : "2012-10-17",
	"Statement": [
		{
				"Action":["s3.ListBucket"],
				"Effect":["Allow"],
				"Resource":["arn:aws:s3:::spark-test-rubywave1"],
				"Condition":{
						"DateGreaterThan" : {"aws:CurrentTIme":"2021-04-01T00:00:00Z"},
						"DateLessThan" : {"aws:CurrentTime":"2022-06-30T23:59:59Z"}
				}
		}
	]
}

역할

  • AWS의 권한의 집합

  • 특정 사용자나 그룹에 연결되어 있지 않음

  • 다양한 어플리케이션, 서비스, IAM 사용자가 역할을 받아 사용

권한 검증 과정

사용자가 EC2 이용할 때

  1. 사용자 권한 확인 (사용자에게 EC2를 이용할 수 있는 정책이 부여되었는가)
  2. 사용자 권한이 없다면 그룹 권한을 확인 (속한 그룹에 EC2 이용할 수 있는 정책이 부여되었는가)
  3. 1,2 둘 다 해당이 없다면 권한없음. 1, 2 순서로 체크하다가 권한이 보인다면 권한있음.

EC2가 S3 서비스를 이용하고 싶을 경우

  1. EC2가 부여받은 역할이 S3를 이용할 수 있는가?
  2. 있다면 S3 서비스 접근 가능. 아니라면 권한 없음

AWS 자격 증명

콘솔 액세스 자격 증명

  • 콘솔 로그인을 위해 필요
  • Root Email/Password : 루트 로그인을 위해 사용
  • IAM 유저 이름/Password : IAM 유저가 로그인 하기 위해 사용
  • Multi-Factor authentication(MFA) : 다른 자격 증명에 보안을 강화하기 위한 임시 비밀번호

프로그램 방식 액세스 자격 증명

  • AWS의 CLI 혹은 SDK를 사용할 때 필요한 자격 증명
  • 장기 자격 증명(Long-Term Credential)과 임시 자격 증명(Temporary Credential)로 구성
  • 구성
    • Access Key ID : 유저 이름에 해당하는 키. 일반적으로 공개되어도 무방
    • Secret Access Key : 패스워드에 해당하는 키. 공개되면 안됨
    • Token : 임시 자격 증명에만 사용. 임시 자격 증명이 유효한지 검증하기 위해 사용
  • 하나의 IAM 사용자 당 2개의 Access Key 발급 가능
    • 키를 바꿀 때 새로운 키를 발급받고 이전 키를 삭제하기 위해 2개 가능
  • 활성/비활성화 가능
  • Secret Access Key의 경우 발급 시점 이외에 다시 확인이 불가능
  • 생성한 IAM 사용자의 권한을 행사 가능

IAM 자격 증명 보고서

계정의 모든 사용자와 암호, 액세스 키, MFA 장치등의 증명 상태를 나열하는 보고서

  • 생성하고 다운로드 가능
  • 4시간에 한번 씩 생성 가능
  • AWS 콘솔, CLI, API에서 생성 요청 및 다운로드 가능
  • 포함되는 정보
    - 암호 : 활성화 여부, 마지막 사용 시간, 마지막 변경 시간, 변경 주기
    - 액세스 키 : 활성화 여부, 마지막 사용 시간, 마지막 변경 시간, 마지막으로 사용한 서비스
    - 기타 : MFA 사용 여부, 사용자 생성 시간


AWS 사용과 인증

AWS 이용 방법

AWS 웹 콘솔

  • 웹 기반의 콘솔에 로그인하여 AWS 사용
  • 콘솔 액세스 자격 증명을 사용하여 인증

프로그래밍 액세스 방식

  • CLI (Command Line Interface): 명령줄 기반으로 AWS 서비스를 관리하는 통합 도구
  • SDK (Software Development Kit) : 다양한 프로그래밍 언어로 만들어진 AWS 서비스를 관리하는 패키지. 프로그래밍 언어에 맞는 SDK를 사용해 개발에 이용
  • 프로그램 방식 액세스 자격 증명을 사용하여 인증

프로그램 방식 액세스 자격 증명 활용

  • IAM 사용자를 서버/프로그램 별로 생성하여 Access Key를 전달하여 CLI/SDK 사용
    • AWS CLI의 경우 서버의 별도 파일에 자격 증명을 저장하여 인증
    • AWS SDK의 경우 별도 파일에 자격 증명을 저장하거나 런타임에 자격 증명을 명시해서 인증
profile
공부!

0개의 댓글

관련 채용 정보