웹 인터페이스로 로그인( 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 기능
전 세계에서 사용 가능
전 세계에 있는 모든 리전에서 사용 가능
AWS 서비스와 통합됨
AWS 계정에 대한 공유 액세스
Multi-Factor Authentication(MFA)
IAM 사용자의 아이디와 비밀번호가 노출되면 보안성 취약⬇️ ➡️ 이를 보완하기 위해 인증 절차를 하나 더 추가해서 처리함
자격 증명 연동
가끔 다른 그룹에서 사용하기 위한 임시 자격 증명을 연동해 주는 경우 발생
무료로 사용 가능
➕MFA(Multi-Factor Authentication)
IAM 사용자의 아이디와 비밀번호가 노출 ➡️ 가상 MFA 디바이스에서 생성된 번호가 없으면 계정에서 액세스 불가능❌
ID + PW + MFA Key를 통해 액세스 허용
↔️ SFA(Single Factor Authentication)
단일 팩터 인증으로, ID + PW로 액세스하는 방법
IAM 구성요소
01) AWS Root 사용자
계정의 모든 AWS 서비스 및 리소스에 대해 완전한 액세스 권한을 갖는 단일 로그인 자격 증명
최소 권환의 원칙 때문에, 평상시에 사용하는 계정은 아님 ➡️ Root 계정을 생성하고 IAM 사용자를 평상시에 사용
Root 사용자 자격 증명
AWS Management Console : ID + PW
AWS CLI & SDK : Access Key + Secret Key
👉 보안을 위해 계정 정보가 노출되면 안됨
🌟Root 사용자 권장 사항
강력한 암호 선택
루트 사용자를 대상으로 MFA 사용
루트 사용자의 암호나 액세스 키 공유 ❌
루트 사용자와 연결된 액세스 키는 사용 중지하거나 삭제
관리 태스크나 일상 태스크용으로 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 자원을 사용할 수 있는 권한 부여)