본문 바로가기

Study

📦 AWS IAM

반응형
Udemy AWS Certified Developer Associate 강의를 들으며 중요한 부분을 정리한 글입니다.

IAM 유저 & 그룹 기초

IAM 유저 & 그룹

  • IAM = Identity and Access Management, 글로벌 서비스
  • 기본적으로 생성되는 root 계정은 사용하거나 공유하면 안됨
  • 유저는 그룹화할 수 있음
  • 그룹은 유저만 포함할 수 있으며, 다른 그룹을 포함할 수 없음
  • 유저는 반드시 그룹에 속할 필요는 없으며, 한 명이 여러 그룹에 속할 수 있음

IAM: 권한

  • 유저 or 그룹은 정책에 할당될 수 있음
  • 정책은 유저의 권한을 정의
  • AWS의 최소 권한 원칙: 유저가 필요로하는 것보다 더 많은 권한을 주지 마라

IAM 정책

IAM 정책 구조

  • 구성
    • Version: 정책 언어 버전, 항상 2012-10-17 포함
      • 이전 버전으로는 2008-10-17이 있는데 고려하지 않아도 됨
      • 현재 설명하는 정책 변수들을 사용하기 위해서는 2012-10-17을 사용
    • Id: 정책 식별자 (선택)
    • Statement: 하나 이상의 서술 (필수)
  • 서술 구성
    • Sid: 서술 식별자 (선택)
    • Effect: 접근 허용 여부 (Allow, Deny)
    • Principal: 적용되는 계정/유저/역할
    • Action: 해당 정책의 접근이 허용되거나 거부되는 액션 리스트
    • Resource: 액션이 적용되는 리소스 리스트
    • Condition: 해당 정책이 적용되는 경우의 조건 (선택)

IAM MFA

IAM - 비밀번호 정책

  • AWS 비밀번호 정책 설정:
    • 최소 길이 설정
    • 특정 문자 요구
      • 대문자 포함
      • 소문자
      • 숫자
      • 특수문자
    • 모든 IAM 유저가 본인의 비밀번호를 변경할 수 있도록 허용
    • 종종 비밀번호를 변경하도록 요구 (비밀번호 만료)
    • 재사용 방지

Multi Factor Authentication - MFA

  • MFA = 비밀번호 + 보안 장치
  • MFA의 주요 장점: 비밀번호가 탈취되거나 해킹되어도 계정은 위험하지 않음

AWS의 MFA 장치 옵션

  • 가상 MFA 장치
    • Google Authenticator (스마트폰)
    • Authy (여러 장치)
    • 하나의 장치에 여러개의 토큰 지원
  • Universal 2nd Factor (U2F) 보안 키
    • Yubico의 YubiKey (3rd party)
    • 하나의 보안 키를 이용해 여러 root와 IAM 유저 지원
  • 하드웨어 키 Fob MFA 장치
    • Gemalto에서 제공 (3rd party)
  • AWS GovCloud(US)의 하드웨어 키 Fob MFA 장치
    • SurePassID에서 제공 (3rd party)

AWS 액세스 키, CLI 그리고 SDK

유저는 어떻게 AWS에 접근하나?

  • AWS에 접근하기 위한 3가지 옵션:
    • AWS Management Console (비밀번호 + MFA로 보호됨)
    • AWS Command Line Interface (CLI): 액세스 키로 보호됨
    • AWS Software Developer Kit (SDK) - 코드: 액세스 키로 보호됨
  • 액세스 키는 AWS 콘솔을 통해 생성됨
  • 유저는 본인의 액세스 키들을 관리
  • 액세스 키는 공유하면 안됨
  • 액세스 키가 아이디라면, 시크릿 액세스 키는 비밀번호와 비슷함

AWS CLI란?

  • 커맨드라인 쉘에서 커맨드로 AWS 서비스를 사용할 수 있도록 하는 도구
  • AWS 서비스의 API에 직접 접근
  • 리소스를 관리하는 스크립트를 개발할 수 있음
  • https://github.com/aws/aws-cli
  • AWS 관리 콘솔 대신 사용 가능

AWS SDK란?

  • AWS Software Development Kit (AWS SDK)
  • 특정 언어 API (라이브러리 셋)
  • 프로그래밍적으로 AWS 서비스에 접근하고 관리할 수 있음
  • 애플리케이션에 내장됨
  • 지원
    • SDKs (JavaScript, Python, PHP, .NET, Ruby, Java, Go, Node.js, C++)
    • Mobile SDKs (Android, iOS, …)
    • IoT Device SDKs (Embedded C, Arduino, …)
  • 예: AWS CLI는 파이썬용 AWS SDK 기반

AWS 서비스의 IAM 역할

서비스의 IAM 역할

  • 일부 AWS 서비스는 사용자를 대신하여 작업을 수행해야 함 → IAM 역할을 가진 AWS 서비스에 권한을 부여
  • 공통 역할:
    • EC2 인스턴스 권한
    • Lambda 함수 권한
    • CloudFormation 권한

IAM 보안 도구

  • IAM 자격 리포트 (계정 레벨)
    • 모든 계정의 유저와 다양한 자격의 상태 리스트를 담은 레포트
  • IAM 접근 어드바이저 (유저 레벨)
    • 접근 어드바이저는 사용자에게 부여된 서비스 권한과 서비스들이 언제 마지막으로 접근됐는지를 보여줌
    • 사용자는 정책을 점검하기 위해 이 정보들을 사용할 수 있음

IAM 모범 사례

IAM 사용법 & 모범 사례

  • AWS 계정 설정을 제외하고 루트 계정 사용하지 않기
  • 하나의 물리적 유저 = 하나의 AWS 유저
  • 그룹에 유저와 권한을 할당하기
  • 강력한 비밀번호 정책 만들기
  • MFA 사용 주장하기
  • AWS 서비스에 권한을 줄 역할 생성하고 사용하기
  • 프로그래밍적인 접근을 위해 액세스 키 사용하기 (CLI / SDK)
  • IAM 자격 리포트로 계정 권한 감시하기
  • IAM 유저와 액세스 키는 절대 공유하지 않기
반응형