[AWS] IAM 및 AWS CLI

컴공생의 코딩 일기·2023년 7월 5일
0

AWS

목록 보기
2/4
post-thumbnail

IAM

  • 글로벌 서비스
  • 루트 사용자 (오직 계정을 생성할 때만 사용되어야 함)
  • 그룹에는 사용자만 배치할 수 있다. (다른 그룹을 포함 시킬 수 없다.)
  • 사용자는 무조건 그룹에 포함될 필요는 없다.
  • 한 사용자가 다수의 그룹에 속할 수도 있다.

사용자와 그룹을 생성하는 이유? AWS 계정을 사용하도록 허용하기 위함, 허용을 위해서는 권한을 부여해야한다. (IAM 정책)
AWS에서는 최소 권한의 원칙을 적용한다. (사용자가 꼭 필요로 하는 것 이상의 권한을 주지 않는다. 비용이나 보안에 문제를 예방하기 위함이다.)

IAM 정책

  • Version : 버전
  • Id : 정책을 식별하는 ID (선택 사항)
  • Statement : 문장 구성 요소 (하나일 수도 있고 여러 개 일수도 있다.)
    • Sid : 문장 ID (선택 사항)
    • Effect : 문장이 특정 API에 접근하는 걸 허용할지 거부할지에 대한 내용
    • Principal : 특정 정책이 적용될 사용자, 계정, 역할
    • Action : effect에 기반해 허용 및 거부되는 API 호출의 목록
    • Resource : 적용될 action의 리소스 목록
    • Condition : Statement가 언제 적용될지를 결정

IAM - Passord Policy

그룹과 상용자들의 정보를 침해당하지 않도록 보호하는 방법

  1. 비밀번호 정책의 정의 (AWS에서는 아래와 같은 설정을 할 수 있다.)
    • 비밀번호 최소 길이 설정 가능
    • 특정 유형의 글자 사용을 설정 가능 (예: 대문자, 소문자, 숫자, 혹은 물음표와 같은 특수문자 등)
    • IAM 사용자들의 비밀번호 변경을 허용 또는 금지할 수 있다.
    • 일정 기간이 지나면 비밀번호를 만료시켜 새 비밀번호 설정을 요구할 수 있다.
    • 사용자가 비밀번호의 재사용을 막아 비밀번호 변경 시에 동일한 비밀번호나 이전에 사용했던 비밀번호를 사용하지 못하게 할 수도 있다.
  2. 다요소 인증, MFA (AWS에서는 이 메커니즘을 필수적으로 사용하도록 권장한다.)
    사용자들은 계정에 접근 권한이 있고 많은 작업을 할 수 있다. 특히 관리자일 경우에는 구성을 번경하거나 리소스를 삭제하는 등의 작업을 할 수 있다. 따라서 적어도 루트 계정은 무슨 일이 있어도 반드시 보호해야 하며 전체 IAM 사용자들도 보호를 해야 한다. 강력한 보호를 위해 비밀번호와 MFA를 함께 사용해야 한다.
  • MFA 장치 옵션
    • Virtual MFA device (Google Autenticator, Authy)
    • Universal 2nd Factor (U2F) Security Key (Yubikey)
    • Hardware Key Fob MFA Device (Gemalto)
    • Hardware Key Fob MFA Device for AWS GovCloud (SurePassID)

AWS Access 키, CLI 및 SDK

AWS에 액세스 하는 방법

  • AWS Management 콘솔 (password + MFA로 보호됨)
  • AWS Command Line Interface(CLI) (액세스 키(자격증명)로 보호됨)
  • AWS Software Developer Kit(SDK) (코드: 액세스 키로 보호됨)

AWS CLI를 사용하는 이유

  • 모든 명령어가 AWS로 시작
  • AWS 서비스의 공용 API로 직접 액세스가 가능
  • CLI를 통해 리소스를 관리하는 스크립트를 개발해 일부 작업을 자동화 가능
  • CLI는 오픈 소스로 GitHub에서 모든 소스 코드를 찾을 수 있음

SDK란?

  • SDK는 소프트웨어 개발 키드이다.
  • 특정 언어로 된 라이브러리의 집합이기 때문에 프로그래밍 언어에 따라 개별 SDK가 존재한다.
  • AWS 서비스나 API에 프로그래밍을 위한 액세스가 가능하도록 해준다.
  • 하지만 SDK는 터미널 내에서는 사용하는 것이 아니라 코딩을 통해 애플리케이션 내에 심어 두어야 한다.

IAM 보안 도구

  • IAM 자격 증명 보고서 (account-level)
    • Credential Report
    • 보고서는 계정에 있는 사용자와 다양한 자격 증명의 상태를 볼 수 있다.
  • IAM 액세스 관리자 (user-level)
    • Access Advisor
    • 사용자에게 부여된 서비스의 권한과 해당 마지막으로 액세스한 시간을 볼 수 있다.

IAM 정리

  • Users : 회사 내의 실제 사용자에 매핑되고 AWS 콘솔에 대한 비밀번호를 갖게 된다.
  • Groups : 그룹에는 사용자만 포함하고 다른 그룹은 포함하지 않아야 한다.
  • Policies : 사용자나 그룹에 권한을 부여하기 위해 IAM 정책을 생성, JSON 형식으로 되어 있으며 사용자나 그룹의 권한이 개괄적으로 정의된다.
  • Roles: AWS 내에 있을 때는 Roles를 사용한다. EC2 인스턴스를 생성하거나 AWS 서비스가 다른 AWS 서비스에 작업을 실행하도록 권한을 부여하려면 IAM Roles를 생성해야 한다.
  • Security : 보안을 위한 설정, MFA + Password Policy
  • Access Keys : AWS에 액세스 할 때 CLI 또는 SDK 액세스 키를 생성해야 한다.
  • Audit: IAM 대시보드를 감사하려면 자격 증명 보고서(Credential Report)를 생성해서 모든 사용자에 대한 정보를 확인할 수 있다. IAM의 특정 사용자를 감사하려면 IAM 액세스 관리자(Access Advisor)를 통해 사용자가 최근에 권한을 사용했는지 확인 할 수 있다.
profile
더 좋은 개발자가 되기위한 과정

0개의 댓글