나의 공부기록

[AWS Technical Esscentials] 02. AWS 서비스 관리 & 공동 책임 모델& AWS IAM(Identity and Access Management) 본문

CS/AWS

[AWS Technical Esscentials] 02. AWS 서비스 관리 & 공동 책임 모델& AWS IAM(Identity and Access Management)

나의 개발자 2025. 1. 30. 19:03

AWS 서비스 관리

  • AWS의 모든 서비스는 API를 기반으로 동작하며, 관리 콘솔과 CLI, SDK는 모든 요청은 AWS API를 통해 처리
  • AWS 내부적으로 REST API 및 JSON을 기반으로 한 HTTP 요청을 통해 서비스와 통신함

 

AWS 서비스 관리 방법

  1. AWS Management Console(관리 콘솔)
    • AWS 서비스 액세스 및 관리용 웹 기반 인터페이스
    • GUI 기반의 인터페이스
  2. AWS Command Line Interface(CLI)
    • 명령줄을 통해 여러 AWS 서비스를 직접 제어 가능
    • 다양한 OS(운영체제)에서 사용 가능
    • 스크립트를 통해 서비스와 애플리케이션이 수행하는 작업자동화할 수 있음
  3. AWS Software Development Kit(SDK)
    • 프로그래밍 언어에서 AWS 서비스를 호출할 수 있도록 제공되는 API 라이브러리
    • 다양한 언어 지원 : Python, JavaScript, Java, Go, .NET 등...
    • 애플리케이션에서 AWS 리소스를 동적으로 관리 가능

 

🤔 근데 AWS 관리 콘솔과 CLI, SDK는 모두 API 기반으로 동작하는데, 왜 관리 콘솔만 IAM 사용자 아이디와 비밀번호로 로그인을 하는가?

👉 모두 API를 기반으로 동작하지만, 각각의 사용 방식과 인증 방식에는 차이가 있음

 

💡AWS 서비스 관리 로그인 & 인증 방식 차이

더보기

1️⃣AWS Management Console - 웹 기반 인증

  • 보안 강화를 위해 MFA(다중인증) 적용 가능
  • 웹 인터페이스로 로그인( IAM 사용자 아이디 & 비밀번호)
    ➡️ 로그인 후, 세션을 유지하기 위해 쿠키나 세션 토큰을 사용
    ➡️ 사용자가 로그인하면 AWS는 세션을 위한 IAM(Identity and Access Management) 권한을 제공
    ➡️그 권한에 맞는 API 호출 가능
  • 실제 API 호출은 관리 콘솔의 백엔드가 호출 = 인증서나 세션 토큰을 통해 자격 증명 인증

 

2️⃣ AWS CLI - API 기반 인증

  • 사용자가 직접 로그인하는 방식이 아니라, 프러그램이 AWS API를 호출하도록 인증 정보를 설정
  • Access Key(액세스 키) + Secret Access Key(비밀 키) 조합으로 인증
    👉 키가 유출되면 보안상 문제가 발생할 수 있으므로 안전하게 관리🌟해야 함 
  • MFA(다중 인증) 없이 로그인이 가능하지만, 보안 정책에 다라 MFA를 추가할 수 있음

 

3️⃣AWS SDK - API 기반 인증

  • 사용자가 직접 로그인하는 방식이 아니라, 프러그램이 AWS API를 호출하도록 인증 정보를 설정
  • Access Key(액세스 키) + Secret Access Key(비밀 키) 조합으로 인증
  • 자격 증명을 코드 내에서 처리하거나, 환경 변수로 설정하거나 IAM 역할을 통해 EC2인스턴스에서 받을수 있음  
  • SDK를 사용할 때는 API 호출을 직접 작성하고, SDK가 내부적으로 인증 과정을 처리하면서 API와 상호작용   

AWS 관리 콘솔 & CLI & SDK 주요 차이점

✅인증방법

  • AWS 관리 콘솔은 브라우저 기반으로 세션 관리와 로그인 정보로 인증
  • CLI & SDK는액세스 키/비밀 키를 사용해 인증 

✅사용자 경험

  • AWS 관리 콘솔은 GUI로 직접 상호작용
  • CLI & SDK는 명령어 혹은 코드로 API 호출해서 작업을 처리

 

✅세션 관리

  • AWS 관리 콘솔은 웹 기반 세션을 관리
  • CLI & SDK는 API 호출 시마다 자격 증명(액세스 키 / 비밀 키)을 사용해 인증 

AWS 공동 책임 모델(Shared Responsibility Model)

  • 고객의 책임(클라우드 내부의보안)과  AWS의 책임(클라우드 자체의 보안)으로 구분
  • 고객
    • 클라우드 내부의 보안 담당
    • 서비스와 애플리케이션을 적절하게 구성해야 하며, 데이터가 안전한지 확인해야 함 
  • AWS
    • 클라우드 자체(인프라)의 보안 담당
    • AWS 리전, 가용영역, 데이터 센터를 보호하며 건물의 물리적 보안도 관리
    • 물리적 서버, 호스트 운영체제, 가상화 계층, AWS 네트워킹 구성 요소 등...  

AWS Identity and Access Management(IAM)

  • AWS 계정 및 리소스에 대한 보안 액세스를 관리할 수 있는 웹 서비스
  • AWS의 사용자, 애플리케이션 및 연결된 서비스를 생성하고 관리할 수 있음

💡AWS IAM 중요 개념

1) 인증(Authentication)
- MFA(Multi-Factor Authentication) 서비스 사용

2) 인가(Authorization)
- 최소 권한의 원칙
➡️ AWS의 모든 서비스 사용을 허용❌
➡️ 사용자가 필요로 하는 최소한의 권한을 부여 = 보안 목적

 

AWS IAM 기능   

  1. 전 세계에서 사용 가능
    • 전 세계에 있는 모든 리전에서 사용 가능 
  2. AWS 서비스와 통합됨
  3. AWS 계정에 대한 공유 액세스
  4. Multi-Factor Authentication(MFA)
    • IAM 사용자의 아이디와 비밀번호가 노출되면 보안성 취약⬇️
      ➡️ 이를 보완하기 위해 인증 절차를 하나 더 추가해서 처리함
  5. 자격 증명 연동
    • 가끔 다른 그룹에서 사용하기 위한 임시 자격 증명을 연동해 주는 경우 발생
  6. 무료로 사용 가능

 

➕MFA(Multi-Factor Authentication)

  • IAM 사용자의 아이디와 비밀번호가 노출
    ➡️ 가상 MFA 디바이스에서 생성된 번호가 없으면 계정에서 액세스 불가능❌ 
  • ID + PW + MFA Key를 통해 액세스 허용

↔️ SFA(Single Factor Authentication)

  • 단일 팩터 인증으로, ID + PW로 액세스하는 방법

 

IAM 구성요소

01) AWS Root 사용자

  • 계정의 모든 AWS 서비스 및 리소스에 대해 완전한 액세스 권한을 갖는 단일 로그인 자격 증명
  •   최소 권환의 원칙 때문에, 평상시에 사용하는 계정은 아님
    ➡️ Root 계정을 생성하고 IAM 사용자를 평상시에 사용

Root 사용자 자격 증명

  1. AWS Management Console : ID + PW
  2. AWS CLI & SDK : Access Key + Secret Key

👉 보안을 위해 계정 정보가 노출되면 안됨

 

🌟Root 사용자 권장 사항

  1. 강력한 암호 선택
  2. 루트 사용자를 대상으로 MFA 사용
  3. 루트 사용자의 암호나 액세스 키 공유 ❌
  4. 루트 사용자와 연결된 액세스 키는 사용 중지하거나 삭제
  5. 관리 태스크나 일상 태스크용으로 IAM 사용자 계정 생성 

 

02) IAM 사용자 - User

  • AWS에 생성하는 자격 증명
  • AWS 서비스 및 리소스와 상호 작용하는 사람이나 애플리케이션을 나타내는 자격 증명
  • 🌟MFA 설정하는 것을 권고 & 추천 🌟
    • 계정 탈취 ➡️ AWS 리소스 사용 ➡️ 요금 & 데이터 피해 발생 

 

03) IAM 정책 - Policy

  • AWS 서비스 및 리소스에 대한 권한을 부여하거나 거부하는 문서(JSON)
  • 최소 권한의 원칙 준수
  • JSON 요소
    • Version : 정책 언어의 버전을 정의
    • Effect : 액세스를 허용할지 또는 거부할지 여부를 지정(Allow / Deny)
    • Action : 허용하거나 거부해야 하는 작업의 유형을 설명
    • Resource : 정책문에서 다루는 객체를 지정

 

04) IAM 그룹 - Group

  • 그룹에 할당된 정책을 상속하는 IAM 사용자 모음
  • 그룹 내의 그룹은 포함 불가❌

 

05) IAM 역할 - Role = 모자

  • 다른 AWS 리소스나 서비스에 임시로 액세스 하기 위해 특정 사용자나 서비스가 수임할 수 있는 자격 증명
    • 개발 업무를 수행하다가 데이터 분석 업무를 할 때, 권한을 임시 부여하는 것
      ➡️ 단, 데이터 분석 업무 중에는 개발 업무는 수행 불가❌
  • 같은 서비스를 사용하지 않는 계정에도 임시로 권한을 부여 가능
    (Google 직원 ➡️ AWS 자원을 사용할 수 있는 권한 부여)