[AWS] IAM

2023. 6. 18. 00:27Devops/AWS

IAM란?

  • Identity and Access Management의 약자
  • User를 생성하고 Group에 배치하기 때문에 글로벌 서비스에 해당됨
  • 계정 생성 시 기본적으로 Root User가 생성됨
  • Root User는 계정 생성 후로는 절대 사용하거나 공유해서는 안 됨
  • 대신 User를 생성하여 사용

User

  • 조직 내 한 사람에 해당하는 개념
  • Group에 포함될 수도 있고 안 될 수도 있음

Group

  • User들을 그룹화해놓은 개념
  • developers, operations 등의 Group에 User들을 배정 가능
  • User는 여러 Group에 속할 수 있음
  • 배정되지 않는 User들은 Inline Policy 방식으로 직접 권한 지정 가능
    • 권장되는 방법은 아님
    • Group을 활용한 Managed Policy 방식을 활용하는 것이 권장됨

IAM 정책

  • 관련자들이 AWS 계정을 사용하도록 허용하기 위한 권한 부여 절차
  • JSON 문서로 작성됨
{
    "Version": "2012-10-17",
    "Id": "S3-Account-Permissions",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": ["arn:aws:iam::123456789012:root"]
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": ["arn:aws:s3:::mybucket/*"]
        }
    ]
}
  • Version: 정책 언어 버전. 보통 2012-10-17
  • Id(optional): 정책을 식별자.
  • Statement(required): 정책 구성 요소
    • Sid(optional): 해당 statement 식별자
    • Effect: 해당 statement가 특정 API에 대한 접근을 허용할지 거부할지를 나타내는 값
      • Allow, Deny
    • Principal: 해당 정책이 적용될 User, Account, 또는 Role로 구성
      • 위 예제에선 루트 계정에 적용
    • Action: Effect에 기반해 허용 및 거부되는 API 목록
    • Resource: 적용될 Action의 리소스 목록
    • Condition(optional): statement가 언제 적용될지를 결정하는 요소
  • User 또는 Group에게 권한을 부여할 수 있음
  • 정책을 통해 관련자들이 불필요한 서비스를 사용하여 불필요한 비용을 발생시키거나 보안 문제를 야기하는 등의 문제를 예방
  • AWS에서는 최소 권한의 원칙을 적용
    • 사용자가 필요로 하는 권한 외에는 허용하지 않는 것

Password Policy

  • 사용자 생성 시 비밀번호 정책 설정

옵션

  • 최소한 대문자 한 글자 이상
  • 최소한 소문자 한 글자 이상
  • 숫자 포함
  • 특수문자 포함
  • 비밀번호 변경 허용 또는 금지
  • 일정 기간 후 비밀번호 만료 후 재설정 요구
  • 변경 시 이전 비밀번호로 설정 불가

MFA

  • Multi-Factor Authentication
  • 비밀번호 외에 물리적 보안 장치를 함께 사용하는 보안 방식
  • AWS에서는 이 메커니즘을 필수적으로 사용하도록 권장
  • 비밀번호가 노출되더라도 물리적 장치로 한 번 더 인증하기 때문에 훨씬 안전

방법

1. Virtual MFA device

  • 스마트폰에 인증 애플리케이션을 설치하여 활용하는 방법
  • TOTP(시간 기반 일회용 암호) 알고리즘에 따라 6자리 숫자 코드를 생성하는 인증 애플리케이션을 활용
  • 하드웨어 방식보다 약함
  • Google Authentication, Authy 등

2. Universal 2nd Factor (U2F) Security Key

  • 하나의 보안 키에서 여러 루트 계정과 IAM 사용자를 지원
  • 공개 키 암호 방식 기반
  • AWS가 아닌 다른 회사에서 제작하는 장치
    • ex) Yubico 사의 YubiKey

3. Hardware Key Fob MFA device

  • TOTP(시간 기반 일회용 암호) 알고리즘에 따라 6자리 숫자 코드를 생성하는 하드웨어 디바이스를 활용하는 방법
  • AWS가 아닌 다른 회사에서 제작하는 장치
    • ex) Gemalto
  • 미국 정부 클라우드인 AWS GovCloud 사용 시 SurePassID 라는 키 팝 사용

CLI

  • AWS 콘솔에 접근하지 않고 명령창에서 사용하는 방법
  • CLI를 활용하여 스크립트를 개발하면 업무 자동화 가능
  • CLI 프로그램을 다운받고 Access Key와 Access Secret을 발급받아 사용 가능

Role

  • AWS 서비스에 권한을 부여하는 것
  • User에게 적용되는 것이 아닌 AWS 서비스에 적용되는 것
  • 예를 들어 EC2 인스턴스를 만들었는데 이 인스턴스에서 AWS에 접근하여 어떤 행동을 하고 싶을 때 Role을 활용하여 접근 여부를 판단

일반적인 roles

  • EC2 Instasnce Roles
  • Lambda Function Roles
  • Roles for CloudFormation

보안 도구

IAM Credentials Report(acount-level)

  • 계정에 있는 사용자와 다양한 자격 증명 상태를 보고서 형태로 제공

IAM Access Advisor

  • 사용자에게 부여된 서비스 권한 확인 가능
  • 해당 서비스에 마지막으로 접근한 시간 확인 가능
  • 해당 도구들을 활용하여 어떤 권한이 사용되지 않는지 볼 수 있고 사용자 권한을 줄여 최소 권한의 원칙을 지킬 수 있다.

'Devops > AWS' 카테고리의 다른 글

[AWS] ELB  (0) 2023.07.01
[AWS] EFS  (0) 2023.06.22
[AWS] AMI  (0) 2023.06.22
[AWS] EBS  (0) 2023.06.22
[AWS] EC2  (0) 2023.06.22