AWS IAM 서비스

이재영·2024년 1월 6일

SAA-C03

목록 보기
8/10
post-thumbnail

1. 배경 소개

사용자 인증과 권한 통제는 온프레미스 환경과 더불어 클라우드 환경에서도 가장 중요한 보안 요소

AWS는 더욱 안전하게 사용할 수 있도록 AWS IAM 기능을 제공

AWS IAM 위에서 AWS 리소스가 어떻게 생성되고 관리되는지 살펴본 후 AWS IAM을 살펴본다.

AWS 리소스 생성하고 관리하기

AWS 관리 콘솔(AWS management console)

AWS 리소스를 생성하고 관리하는 데 사용할 수 있는 ‘웹(web)’ 기반 사용자 인터페이스를 제공

AWS 명령줄 인터페이스(AWS Command Line Interface, AWS CLI)

WS 서비스를 관리하는 통합 도구

운영 체제(윈도우, macOS, 리눅스)에설치하면 ‘셸(shell)’ 프로그램에서 AWS 서비스를 사용

명령줄 인터페이스나 프로그래밍에서도 AWS 리소스를 다룰 수 있다

AWS 소프트웨어 개발 키트(Software Development Kit, SDK)

AWS 리소스를 프로그래밍적으로 사용하기 편리하도록 제공되는 라이브러리들을 의미

파이썬(Python), Go, 루비(Ruby), 자바(Java) 등 주요 프로그래밍 언어별로 다양한 라이브러리를 제공

AWS 리소스를 다루는 방법 들은 AWS API에서 요청을 받아 온다.

AWS API란

API(Application Programming Interfaces)란

두 애플리케이션이 상호 작용할 수 있게 도와주는 매개체

API를 이용하여 두 애플리케이션이 서로 통신하면서 정보를 주고받을 수 있는 것

API 규칙

  1. 외부에 공개된 API 서버가 아닐 때는 인증된 사용자만 접속할 수 있게 해야한다.
    인증과 인가 필요
  2. 요청할 때 규칙을 정리한 문서인 ‘명세서’가 필요하다.

AWS 클라우드에서 인프라, 보안, 데이터베이스, 분석, 배포 및 모니터링 등 모든 IT 리소스는 AWS API 호출로 제어할 수 있습니다.

AWS API란

사용자나 애플리케이션이 AWS 서비스를 사용하기 위해 도와주는 매개체

API 예시1: 사용자가 Amazon S3 서비스를 사용

  1. 사용자는 요청 정보를 AWS API에 보냄
  2. AWSAPI는 사용자 인증을 확인한 후 요청이 적합하다고 판단
  3. AmazonS3 서비스에 전달하여 서비스를 처리

API 예시2: AWS 명령줄 인터페이스를 이용하여 Amazon S3 버킷을 생성

  1. AWS 명령줄 인터페이스에서 버킷을 생성하는 명령어를 작성
  2. AWS 리소스를 사용할 수 있게 AWS API를 호출
  3. AWS API를 사용할 수 있도록 ‘인증, 인가’를 확인
  4. 요청했던 대로 S3 버킷을 생성

API 로깅

AWS API의 활동 기록을 저장하는 것, 보안 사고나 장애가 발생하
면 더욱 빠르게 대응

AWS CloudTrail
계정의 거버넌스, 규정 준수, 운영 감사, 위험 감사를 지원하는 서비스

AWS 인프라에서 계정 활동과 관련된 작업을 기록하고 지속적으로 모니터링하여 보관

2. AWS IAM

인증과 인가는 AWS IAM으로 동작

AWS IAM(Identity & Access Management)이란

AWS 서비스와 리소스에 안전하게접근할 수 있도록 관리하는 기능

IAM을 이용하여 리소스를 사용하도록 ‘인증’과 ‘권한’을 통제

AWS 사용자 및 그룹을 만들고 관리

권한을 이용하여 AWS 리소스 접근을 허용하거나 거부

대부분의 AWS 서비스와 연결되어 활용

추가 비용 없이 사용

AWS IAM 구성 요소와 동작 방식

구성 요소

사용자, 그룹, 역할, 정책으로 구성

허가받은 사용자: AWS IAM 구성 요소 중 사용자와 그룹

권한: AWS IAM 구성 요소 중 정책과 역할

구성요소와 관련된 개념

  1. AWS 계정 루트 사용자
    맨 처음 생성된 AWS 계정이며, 해당 계정의 모든 권한을 가지고 있습니다.
  2. IAM 사용자(user)
    별도의 AWS 계정이 아닌 계정 내 사용자이며, 각IAM 사용자는 자체 자격 증명을 보유합니다. 즉, IAM 사용자마다특정 AWS 작업을 수행할 수 있게 권한을 통제할 수 있습니다.
  3. IAM 그룹(group)
    IAM 사용자 집합을 의미합니다. IAM 그룹에 권한을 지정해서 다수의 IAM 사용자의 권한을 쉽게 관리할 수 있습니다.
  4. IAM 정책(policy)
    자격 증명이나 리소스와 연결될 때 요청을 허용하거나 거부할 수 있는 권한을 정의하는 AWS 객체입니다.
  5. IAM 역할(role)
    특정 권한을 가진 계정에 생성할 수 있는 IAM 자격증명입니다. 역할에는 그와 연관된 암호 또는 접근 키 같은 장기 자격 증명이 없습니다. 그 대신 역할을 주면 역할 세션을 위한 임시보안 자격 증명을 제공합니다. 역할을 이용하여 일반적으로 AWS리소스에 접근할 수 없는 사용자, 애플리케이션, 서비스에 접근 권한을 위임할 수 있습니다.
  6. 보안 주체(principals)
    AWS 계정 루트 사용자, IAM 사용자, IAM 역할을 이용하여 로그인하고 AWS에 요청하는 사람 또는 애플리케이션입니다.

인증, 인가 동작 방식

IAM 사용자가 AWS 리소스를 사용시 암호나 접근 키 같은 자격증명을 사용하여 인증 필요

IAM 사용자 계정에 따른 암호나접근 키가 올바르다면 적합한 사용자로 간주되어 인증 동작이 마무리

인증이 처리되면 IAM 사용자는 적합한 권한이 있는지 확인하는 인가 동작을 진행

AWS IAM 사용자

IAM 사용자 = 루트 사용자 + 일반 IAM 사용자

AWS IAM 정책

사용자별 권한 검사

Effect: 명시적 정책에 대한 허용 혹은 차단

principal: 접근을 허용 혹은 차단하고자 하는 대상

Action: 허용 혹은 차단하고자 하는 접근 타입

Resource: 요청의 목적지가 되는 서비스

Condition: 명시적 조건이 유효하다고 판단될수 있는 조건

AWS IAM 역할

정의된 권한 범위 내 AWS API를 사용할 수 있는 임시 자격 증명을 의미

Assume: 코드에 하드 코딩하지 않고 실행할 때 임시(+Token, 일정 시간 이후 만료됨) 자격 증명

IAM 역할을 사용하면 사용자 권한을 공유하거나 매번 권한을 부여할 필요가 없다.

IAM 역할 예시1: 개발자가 S3 버킷에 대한 접근 권한이 필요한 EC2 인스턴스에서 애플리케이션을 실행하는 상황

  1. 관리자는 S3 Full 권한이 연결된 IAM 역할을 생성해서 EC2 인스턴스에 연결
  2. EC2상의 애플리케이션은 IAM 역할의 임시 자격 증명을 사용하여 S3 버킷에 접근
  3. 관리자가 개발자에게 별도의 권한을 부여하지 않아도 애플리케이션이 S3 버킷에 접근

개발자는 이를 위해 추가적인 자격 증명을공유하거나 관리할 필요 없다.

IAM 역할 예시2: AWS IAM 시스템과 연동된 외부 사용자 관리 시스템이 구성되는 환경일 때

  1. 외부 사용자가 AWS 영역 내 S3 버킷을 사용하기 위해 IAM 역할을 바탕으로 임시 자격 증명을 이용하여 S3버킷에 접근

서비스 간에 권한을 제어하거나 멀티 계정 환경에서 리소스 권한을 위임 가능

profile
LinkedIn: www.linkedin.com/in/sooonzero Tistory(이사중): https://sooonzero.tistory.com/

0개의 댓글