[AWS SAA-C03] IAM

이재민·2024년 5월 21일
0

AWS SAA-C03

목록 보기
1/22

IAM

IAM란, Identity And Access Management의 약자이다.

  • AWS 계정과 권한을 제어하고 사용자를 관리하는 기능을 제공하는 보안 서비스이다.
  • AWS 리소스에 대한 액세스를 안전하게 제어할 수 있다.
  • IAM은 글로벌 서비스에 해당한다.
  • 처음 계정을 생성하면 루트 사용자가 배치되고 이를 기본으로 사용하게 되지만, 루트 계정은 사용자(계정)을 생성할 때만 사용하고 루트 계정을 직접적으로 사용하게 둬서는 안된다.

그룹, 사용자

  • IAM 서비스로 사용자를 생성할 수 있다.
  • 여러 사용자들을 그룹으로 묶을 수 있으며, 그룹에 포함되지 않는 사용자도 존재할 수 있다.
  • 한명의 사용자는 여러 그룹에 포함 될 수 있다.
    • 다만, 그룹은 그룹에 포함될 수 없다.
  • 이렇게 IAM 서비스를 이용해 사용자와 그룹을 생성하는 이유는 사용자, 그룹에 모든 권한을 허용하지 않으면서 보안 문제를 예방하기 위함이다.
    • 즉, 최소 권한 원칙을 지키기 위해서다.
  • 사용자와 그룹에게는 반드시 필요한 권한만 부여하는 것이다.

IAM 정책

  • IAM 글로벌 서비스를 이용해서 사용자와 그룹을 생성할 수 있다.
  • 그룹에 속하지 않은 특정 사용자에게는 inline 정책을 부여할 수 있다
  • iam 정책 구조
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "iam:GenerateCredentialReport",
                    "iam:GenerateServiceLastAccessedDetails",
                    "iam:Get*",
                    "iam:List*",
                    "iam:SimulateCustomPolicy",
                    "iam:SimulatePrincipalPolicy"
                ],
                "Resource": "*"
            }
        ]
    }
  • Version: 정책 언어 버전
  • Statements: 정책 구성 요소의 컨테이너
    • Sid(Optional): 선택 설명문 ID를 포함하여 설명문들을 구분한다.
    • Effect: 특정 api에 접근하는 것을 허용할 것인지 거부할 것인지를 정할 수 있다.
    • Principal(특정 상황에서 필요): 계정, 사용자, 권한 등 어느 정책에 적용할 것인지를 정할 수 있다.
    • Action: Effect에 기반하여 허용 및 거부되는 API 호출 목록이다.
    • Resource: 적용될 Action의 리소스 목록
    • Condition: Statement가 언제 적용될지를 결정하는 조건

MFA

사용자 정보 방어 메커니즘이고 크게 2가지가 있다.

1. 비밀번호 정책 정의

  • AWS에서는 다양한 옵션을 이용해 비밀번호 정책 생성 가능
    • 비밀번호 최소 길이 설정 가능
    • 특정 유형의 글자 사용을 요구할 수 있다
      • ex) 대/소문자, 숫자, 물음표와 같은 특수 문자
    • IAM 사용자들의 비밀번호 변경을 허용 또는 금지 가능
    • 일정 기간이 지나면 비밀번호 만료 시킬 수 있음
    • 비밀번호 변경 시 이전 비밀번호를 사용하지 못하게 할 수 있음

2. MFA(Multi Factor Authentication)

  • AWS에서는 MFA 메커니즘을 필수적으로 사용하도록 권장
  • MFA란, 비밀번호와 보안 장치를 함께 사용하는 것
    • 비밀번호가 누출되어도, 휴대전화와 같은 물리적 장치가 필요하기에 계정 침해의 가능성이 낮아짐
  • AWS에서의 MFA 장치 옵션
    1. Virtual MFA device(가상 MFA)
      • Authy는 하나의 장치에서 여러개의 토큰을 지원한다.
      • 루트 계정, IAM 사용자 또 다른 계정, 그리고 또 다른 IAM 사용자가 지원되는 식
    2. Universal 2nd Factor Security Key(U2F 보안 키)
      • 이는 물리적 장치
      • 하나의 키에 여러 루트 계정, IAM 사용자 지원이 가능하기에 1개의 키로 충분하다

AWS 접근 방법

AWS 서비스에 접근할 수 있는 방법은 크게 3가지가 있다.

1. Password + MFA

  • AWS 관리 콘솔에 접근하는 것이다.(웹)

2. AWS CLI 사용.

  • 액세스 키로 보호되며 액세스키, 시크릿 키를 사용하여 터미널에서 aws 서비스에 접근이 가능하다.

3. AWS SDK

  • 코드에서 API를 호출할 때 사용하며 코드를 통해 접근할 수 있다.

IAM Security Tools

1. IAM Credentials Report (access-level)

  • 자격 증명 보고서 생성 - 계정 수준에서 가능
  • 보고서에는 모든 계정의 사용자와 다양한 자격 증명 상태를 포함한다.
  • 보안 인증 보고서에는 이 계정의 모든 IAM 사용자와 해당 사용자의 다양한 보안 인증 상태를 확인할 수 있다.
  • 보고서가 생성되면 최대 4시간 동안 저장된다.

2. IAM Access Advisor(user-level)

  • 액세스 관리자 - 사용자 수준에서 가능
  • 사용자에게 부여된 서비스 권한과 해당 서비스에 마지막으로 액세스한 시간이 보인다.
  • 사용자의 권한을 파악하여 최소 권한 원칙을 준수할 수 있다.
  • 해당 도구를 통해 어떠한 권한이 사용되지 않는지 확인할 수 있다.
    • 최소 권한 원칙을 준수할 수 있다.
  • 사용자에서 액세스 관리자로 들어가기에 최근 4시간의 활동내역을 확인해볼 수 있다.

IAM Guidelines & Best Practices

Guidelines

  • 루트 계정은 AWS 계정을 설정할 때를 제외하고 사용하지 않기
  • 하나의 AWS 사용자는 한 명의 실제 사용자를 의미
  • 제 3자에게 계정을 부여할때는 유저 그룹에 할당하고 그룹에 권한을 부여해야한다.
  • 강력한 비밀번호 설정을 권장한다.
  • MFA(Multi Factor Authentication)을 사용한다면 더욱 계정을 지킬 수 있다.
  • AWS 서비스에 권한을 주기 위해서는 역할을 만들고 사용해야 한다.
    • 가상 서버인 EC2 인스턴스, Lambda를 포함해서
  • CLI or SDK를 사용하기 위해서는 반드시 액세스 키를 만들어야 한다.
  • 계정의 권한을 감시하기 위해서는 IAM 자격 증명 보고서와 IAM 액세스 분석기를 사용할 수 있다.
  • IAM 액세스키는 절대 공유하는 것이 아니다.

Best Practices

  • 실제 사용자마다 Users에 매핑하는 것이다.
  • 사용자를 그룹에 두는 것이다.
  • 사용자나 그룹에 권한을 부여하는 것이다.
  • 역할을 사용한다.
    • EC2 인스턴스를 생성하거나 AWS 서비스가 다른 AWS 서비스에 무언가를 하게 하는 어떤 권한을 주려고 할 때 IAM 역할을 만들어야 한다.
  • MFA를 이용해 두번째 창지로 사용하고 강력한 비밀번호 정책을 가져야 한다.
  • CLI 혹은 SDK를 이용해 AWS를 사용하고자 한다면 반드시 액세스키를 만들어야 한다.
profile
문제 해결과 개선 과제를 수행하며 성장을 추구하는 것을 좋아합니다.

0개의 댓글