AWS CLF — IAM


IAM 개요

  • 사용자가 AWS 리소스에 대한 접근을 안전하게 관리할 수 있도록 하는 서비스
  • 리소스 접근 제어를 위해 사용자, 그룹, 역할을 생성하고 이들에 대한 관리를 도와줌
  • 역할, 리소스 및 특정 조건을 기반으로 세분화된 액세스 제어 정책을 제공
  • MFA 설정을 통해 리소스 접근에 대한 추가 확인 단계를 요구하여 보안을 강화
  • 유저 현황에 대한 자세한 로깅 및 모니터링 기능을 제공하므로 사용자 활동과 권한 변경 상항 추적이 용이

IAM 유저

  • AWS 계정에 접근하는 개별 사용자로 이름과 자격 증명으로 구성
  • 각 사용자는 고유한 자격 증명을 가지고 있으며 이를 통해 AWS 리소스에 접근
  • 기본적으로 새로운 IAM 사용자는 작업을 수행할 어떠한 권한도 없음 -> 정책 연결 필요
  • 각 IAM 사용자는 오직 한 개의 Root 계정과 연결

IAM 그룹

  • 여러 사용자에 대한 권한을 일괄적으로 관리하기 위한 IAM 유저의 집합
  • 그룹에 권한을 할당하게 되면 그 그룹에 속한 모든 사용자가 해당 권한을 상속
  • 유저는 그룹에 속하지 않거나 하나 이상의 그룹에 속할 수 있음
  • 그룹은 사용자만 포함할 수 있으며 다른 그룹은 포함할 수 없음
  • Root 계정별 할당된 유저수 및 그룹내 유저수 최대값이 있음

IAM 정책

  • AWS 리소스 접근 권한을 정의하는 문서로 사용자, 그룹, 역할 등에 부여됨
  • 정의된 정책을 통해 AWS 리소스에 대한 접근을 제어
  • JSON 형식의 문서로 작성
  • Deny가 Allow에 항상 우선하기 때문에 특정 정책을 지정하지 않으면 기본적으로 모든 요청이 거부

IAM 역할

  • 특정 권한을 지닌 IAM 자격 증명으로 AWS 리소스에 대한 접근 권한 부여에 사용
  • 역할은 한 사람하고만 연관되지 않고 해당 역할이 필요한 유저라면 누구든지 맡을 수 있음
  • 특정 리소스에 접근 권한이 없는 사용자나 서비스에 엑세스 권한을 위임
  • 역할에는 그와 연관된 암호 또는 액세스 키와 같은 표준 장기 자격 증명이 없음
  • AWS Security Token Service (AWS STS)를 사용하여 임시 보안 자격 증명을 생성하여 사용
  • EC2나 Lambda 등의 서비스가 다른 권한을 받아 다른 AWS 서비스에 대한 액세스 가능

IAM 보안 자격 증명

비밀번호

  • AWS 관리 콘솔에 로그인하기 위해서는 사용자의 IAM ID와 비밀번호가 필요
  • 암호 만료를 활성화시켜 주기적으로 비밀번호 변경 권장

MFA(Multi Factor Authentication)

  • 멀티 팩터 인증의 약자로 두 단계의 인증을 통해 계정에 로그인하는 보안 기술
  • 비밀번호에 추가적인 보안 요소로 사용자가 로그인할 때 추가적인 인증을 요구
  • AWS 계정 루트 사용자와 IAM 사용자에 대해 MFA를 활성화할 수 있음
  • 가상 MFA 디바이스 또는 하드웨어 토큰을 가장 흔히 사용하며 최대 8개의 MFA 디바이스 등록 지원

Access Key

  • IAM 사용자 또는 AWS 계정 루트 사용자에 대한 장기 보안 인증
  • 액세스 키 ID와 보안 액세스 키 쌍으로 구성되어 있으며 이 두 가지를 함께 사용하여 요청을 인증
  • API 또는 CLI를 통해 프로그래밍 방식으로 AWS 리소스에 액세스하는 데 사용
  • 보안 액세스 키는 생성시 한 번만 저장이 가능
  • 보안 액세스 키를 분실한 경우 액세스 키를 삭제하고 새 키를 생성
  • 액세스 키는 보안을 보장하기 위해 안전한 장소에 보관해야 하며, 필요하지 않을 때 사용되지 않도록 비활성화하는 것을 권장

AWS 리소스 접근

ID and Password

  • AWS 콘솔에 로그인(https://console.aws.amazon.com)
  • 웹 기반 콘솔 인터페이스를 통해 다양한 AWS 서비스 및 리소스에 액세스
  • IAM 사용자에게 할당된 권한에 따라 액세스가 제어되므로 허용된 서비스들만 콘솔을 통해 접근 가능
  • AWS 리소스 및 서비스 관리를 위한 그래픽 사용자 인터페이스(GUI)를 제공
  • 직관적이고 손쉽게 리소스들에 대한 생성, 통제 등의 작업 가능

CLI(Command Line Interface)

  • CLI를 사용하여 터미널 환경에서 코드를 통해 다양한 AWS 서비스와 상호 작용하고 리소스 관리 가능
  • AWS CLI라는 통합 관리 도구를 설치하여 여러 개의 AWS 서비스를 제어하고 스크립트를 통해 자동화 가능
  • 웹 콘솔에서 제공하는 거의 모든 기능을 구현하는 명령을 실행(EC2 생성, S3 버킷 관리, VPC 구성 등)
  • IAM 유저에게 발급되는 액세스 키(Access Key ID + Secret Access Key) 조합을 통해 권한 인증 후 사용 가능

SDK(Software Development Kit)

  • Python 및 Java와 같은 코드를 통해 AWS 리소스에 액세스할 수 있는 도구
  • SDK를 사용하여 AWS 기능을 애플리케이션에 통합하여 코드 내에서 AWS 리소스를 생성, 관리 및 상호 작용이 가능
  • AWS CLI와 동일하게 액세스 키(Access Key ID + Secret Access Key) 조합을 통해 권한 인증 후 사용 가능

IAM Access Reports

  • AWS 리소스에 대한 액세스 이력을 모니터링하고 검토할 수 있는 기능을 제공
  • 비밀번호, 액세스 키, MFA 장치를 포함하여 계정의 모든 사용자와 자격 증명 상태를 나열하는 자격 증명 보고서 생성
  • 최소 4시간에 한 번씩 자격 증명 보고서 생성이 가능
  • 비밀번호 변경, 액세스 키 업데이트와 같은 보안 인증 수명 주기 관련 내용에 대한 감사에 유용

IAM 권고 사항

  • AWS 계정 설정 외에는 루트 계정을 사용하지 않는 것을 권장
  • 강력한 비밀번호 정책을 만들고 MFA를 함께 사용하는 것을 권장
  • AWS 서비스에 권한을 부여하기 위한 역할 생성 및 사용
  • 그룹별 액세스 권한 설정 후 계정 내 유저들을 그룹에 할당
  • 장기 저장 액세스 키 이용 보다는 IAM 역할을 통한 임시 키 발급으로 서비스에 액세스
  • IAM 사용자 및 액세스 키를 절대 공유하지 않도록 주의
  • GitHub 공개 저장소에 키를 업로드하지 않도록 주의

AWS Organizations

  • AWS Organizations는 여러 개의 AWS 계정을 하나의 그룹으로 묶어 중앙에서 통합하여 관리하고 통제(governance)할 수 있게 해주는 서비스
  • 회사가 커지면서 팀별/목적별로 여러 계열사를 만드는 것처럼, AWS 환경도 보안, 비용 분리, 환경 격리(개발/운영) 등을 위해 여러 계정을 사용하는 것이 모범 사례
  • AWS Organizations는 늘어난 계정들을 그룹 본사에서 효율적으로 관리하기 위한 도구

Organizations 계층 구조

  1. 관리 계정 (Management Account):
    • 조직을 생성한 계정으로, ‘그룹 본사’ 역할을 합니다.
    • 조직 내 모든 계정에 대한 최종 관리 권한을 가지며, 모든 비용이 이곳으로 통합 청구됩니다. (Payer Account)
  2. 멤버 계정 (Member Accounts):
    • 관리 계정에 의해 조직으로 초대되거나 생성된 개별 계정들입니다. ‘계열사’ 또는 ‘지사’ 역할을 합니다.
  3. 조직 단위 (Organizational Units - OUs):
    • 계정들을 담는 ‘폴더’입니다. ‘개발 부문’, ‘프로덕션 부문’과 같이 실제 조직 구조에 맞게 OU를 만들어 계정들을 그룹화할 수 있습니다. 정책을 적용할 때 개별 계정이 아닌 OU 단위로 적용할 수 있어 관리가 매우 편리해집니다.

주요 기능 및 장점

중앙 집중식 결제 (Consolidated Billing)

  • 기능: 모든 멤버 계정에서 발생한 AWS 사용 요금이 관리 계정의 청구서 하나로 통합되어 발행됩니다.
  • 장점: 여러 계정의 사용량을 합산하여 더 높은 볼륨 할인(Volume Discount) 등급을 쉽게 달성할 수 있어 전체 비용을 절감할 수 있습니다.

서비스 제어 정책 (Service Control Policies - SCPs) - ⭐가장 중요⭐

  • 기능: 관리 계정에서 조직 전체, 또는 특정 OU나 계정에 대해 허용할 수 있는 AWS 서비스 및 작업의 최대 범위를 제한하는 ‘가드레일(Guardrail)’을 설정하는 기능입니다.
  • 중요한 점: SCP는 권한을 ‘부여(Allow)’하는 기능이 아닙니다. 대신, IAM이 부여할 수 있는 권한의 ‘최대 한도’를 정합니다. SCP에서 금지된 작업은 해당 계정의 IAM 관리자가 아무리 강력한 권한을 부여해도 절대 실행할 수 없습니다.

계정 관리 중앙화

  • 조직 내에서 필요한 새 AWS 계정을 관리 계정에서 API나 콘솔을 통해 빠르고 일관된 설정으로 생성할 수 있습니다.

AWS 서비스 통합

  • Security Hub, AWS Config, Firewall Manager 등 여러 AWS 관리 및 보안 서비스들을 Organizations와 연동하여, 모든 멤버 계정의 보안 및 규정 준수 현황을 중앙에서 한 번에 관리하고 정책을 배포할 수 있습니다.

Security Hub, AWS Config, Firewall Manager

서비스 핵심 역할 답변하는 핵심 질문
Security Hub 결과 통합 대시보드 “현재 우리의 전반적인 보안 상태는 어떤가?”
AWS Config 리소스 구성(설정) 이력 추적 “이 리소스는 과거에 어떻게 변경되었고, 현재 규칙을 준수하는가?”
Firewall Manager 중앙 방화벽 규칙 배포 “이 방화벽 규칙을 모든 계정에 어떻게 일관되게 적용할까?”

IAM과 Organizations 차이

구분 AWS IAM AWS Organizations
관리 범위 단일 AWS 계정 여러 AWS 계정들의 묶음
주요 목적 계정 내 리소스에 대한 상세한 권한 제어 여러 계정의 중앙 관리, 거버넌스, 통합 결제
핵심 기능 IAM 정책 (Permissions) 서비스 제어 정책 (SCPs - Guardrails)