본문 바로가기
👾 Server/☁️AWS

AWS - IAM(Identity and Access Management)이란?

by kukim 2022. 3. 30.

AWS 계정 처음 생성하고 해당 계정의 모든 AWS 서비스 및 *리소스에 대한 완전한 액세스 권한을 지닌 인증(SSO) 자격으로 시작한다. (AWS 루트 사용자라고 함) 당연한 말이지만 AWS 루트 사용자는 마치 서버의 루트 권한처럼 위험하다.

출처 : https://namu.wiki/w/rm%20-rf%20/

 

AWS 루트 사용자 보안을 위해 MFA 설정하고 특정 사람이 소중히 관리해야 한다. 그렇다면 루트 사용자가 제외하고 일반 사용자들은 AWS는 어떻게 써야 할까?  AWS 루트 사용자 밑으로 각자 역할에 따라 그룹과 사용자(사용자 ID, CLI, 리소스 간 *접근 등)를 추가, 변경, 삭제를 통해 사용할 수 있다. 바로 IAM을 통해서다.

 

*리소스 : AWS의 서비스

*접근 : 리소스의 조작 및 제어(읽기, 쓰기, 수정, 삭제)


IAM

IAM이란 AWS 리소스를 인증 및 권한 부여하여 제어한다.

IAM을 통해 특정 AWS 계정에 대한 접근을 만들거나 삭제하고, 세분화된 권한 설정(특정 유저, 서비스 간에 접근 e.g. A라는 계정은 EC2 만 사용 가능, 'xxx' 이름의 EC2는 'XX' 이름의 S3에 읽고 쓰기 가능) 등 많은 기능이 있다.

 

 

IAM 사용자 그룹

IAM 사용자 그룹를 사용하여 그룹별로 다수의 사용자들에 권한지정하고 쉽게 관리할 수 있다. 

 

참고 : https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_groups.html

각 그룹에 IAM Policy 을 지정하여 그룹의 권한 부여를 할 수 있다. 

 

IAM Policy

IAM Policy는 권한에 대한 정책이다. 사용자 그룹, 사용자, 역할, 리소스 등에 설정할 수 있다.

Policy는 Json으로 명세, 관리된다.

특정 S3 bucket의 Policy 예

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}

IAM Policy 종류

- AWS가 제공하는 기본 관리 정책

- 커스텀 Policy

- 1회성 Inline 정책

 

- 사용자 그룹의 Policy 지정 : Admins 그룹은 IAM 서비스를 제외하고 모든 서비스에 대한 접근 권한이 있다.

- 사용자에 Policy 지정 : A라는 유저는 EC2, S3 서비스 생성, 삭제 권한이 있다.

- 특정 리소스에 Policy 지정 : 특정 A EC2는 특정 B S3 버킷에 접근할 수 있다.

 

IAM 사용자

IAM 사용자 크게 두 가지가 있다.

1. ID/PW 방식 : 관리 콘솔 (일반적으로 AWS 웹사이트에 ID/PW로 접속하여 GUI로 AWS 리소스를 사용)

2. AccessKey ID / secret access 방식 : CLI, SDK, Web API (GUI로 사용이 아닌 코드로 사용)

IAM 사용자는 관리자가 지우지 않는한 계속 유지된다. Long Term credential 이라고 함

 

IAM Role

임시로 특정 개체(IAM 사용자, AWS 서비스, 다른 AWS 계정, AWS 관리 계정)에게 리소스의 접근 권한을 부여한다.

주로 AWS 서비스들이 직접 다른 AWS 서비스 제어할 때 사용된다. 

 

EC2 Role : EC2 인스턴스에게 AWS 서비스 접근 권한을 부여한다. (A 인스턴스는 S3, RDB에 접근할 수 있다.)

Lambda Execution Role : 람다에서 S3의 파일 읽고 싶을 때 Role을 부여한다.

다른 AWS 계정 : 다른 계정이 내 계정의 DynamoDB에 임시 접근 권한 부여한다.

웹이나 앱의 권한 : Notion(노트 앱)에서 특정 유저 A가 pdf 파일을 올릴 때 해당 파일은 S3 접근하여 데이터를 전송한다.

 

ARN(Amazon Resource Name)

AWS의 리소스를 유일하게 식별하는 구분자이다. Policy나 Role에 특정 리소스나 리소스 범위를 알려줄 때 사용된다.

 

arn:partition:service:region:account-id:resource-id
arn:partition:service:region:account-id:resource-type/resource-id
arn:partition:service:region:account-id:resource-type:resource-id

# 123456789012 아이디의 모든 유저, 사용자 지정
"Resource":"arn:aws:iam::123456789012:user/*"
"Resource":"arn:aws:iam::123456789012:group/*"

# S3 버킷용 ARN 예
arn:aws:s3:::my_corporate_bucket/*
arn:aws:s3:::my_corporate_bucket/Development/*

Reference

AWS 공식 사이트 (제목에 링크 첨부)

실습으로 배우는 AWS 핵심 서비스 - 호눅스

 

댓글