AWS

[AWS] IAM

배씌 2025. 9. 19. 14:22

IAM

👥 Users & Groups

IAM : Identify and Access Management, Global service
  • Root account: 기본적으로 생성되며, 생성 후에는 루트 계정을 더이상 사용해서도, 공유해서도 안 됨. 대신 사용자를 생성해야 함.
  • Users: 하나의 사용자는 조직 내의 한 사람에 해당됨. 필요하다면 사용자들을 그룹으로 묶을 수도 있음.
  • Groups: 그룹에는 사용자만 배치할 수 있음. 다른 그룹은 포함할 수 없음.

사용자 & 그룹 생성 이유? -> 그들이 AWS 계정을 사용하도록 허용하기 위해 -> 권한 필요 !


✅ Permissions

  • 사용자 또는 그룹에게 policy, 또는 IAM policy라고 불리는 JSON 문서를 지정
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*",
        }, 
      	{
            "Effect": "Allow",
            "Action": "elasticloadbalancing:Describe*",
            "Resource": "*",
        },
      	{
            "Effect": "Allow",
            "Action": [
              "cloudwatch:ListMetrics",
              "cloudwatch:GetMetricStatistics",
              "cloudwatch:Describe*"
            ],
            "Resource": "*",
        },
    ]
}
  • AWS에서는 least privilege principle(최소 권한의 원칙)을 사용 -> 필요한 권한만 허용

🏛️ Polices Structure

{
    "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/*"]
        }
    ]
}

 

Policy 구성

  • Version : 정책 언어 버전
  • Id : 정책 식별 ID (선택)
  •  Statement : 한 개 이상의 statements

{Statement 구성}

  • Sid : Statement 식별 ID (선택)
  • Effect : Statement 가 특정 API에 접근하는 것을 허용할 지 (Allow / Deny)
  • Principal : 특정 정책이 적용될 사용자, 계정, 혹은 역할
  • Action : effect에 기반해 허용 및 거부되는 API 호출의 목록
  • Resource : 적용될 action의 리소스 목록
  • Condition : Statement 가 언제 적용될지 결정 (선택)

🔐 MFA (Multi Factor Authentication)

: 루트 계정과 IAM 계정을 보호하기 위해 MFA 사용

MFA : 비밀번호 + 개인 소유 디바이스 (OTP, Google Authentication, ...)

 

MFA 종류

  1. Virtual MFA device : 하나의 장치에서도 토큰을 여러개 지원함. 즉, 루트 계정, IAM 사용자, 또 다른 계정 등 원하는 수 만큼의 계정 및 사용자 등록이 가능.
    • Google Authenticator
    • Authy
  2. Universal 2nd Factor (U2F) Security Key : 물리적인 보안 장치 (USB 처럼 생겼음)
    • Yubikey by Yubico
  3. Hardware Key Fob MFA Device : 하드웨어 보안 장치
    • Gemalto
  4. Hardware Key Fob MFA Device for AWS GovCloud (US)

👤 IAM Role

: 몇몇 AWS 서비스는 본인 계정에서 실행해야 함. -> 이때 권한을 부여하는 데 IAM Role 을 사용

 

Role 종류

  • EC2 Instance Roles
  • Lambda Function Roles
  • Roles for CloudFormation

🔒 IAM 보안 도구

  • IAM Credentials Report : 계정에 있는 사용자와 자격 증명 상태 포함 (자격 증명 보고서)
  • IAM Access Advisor : 계정 내 사용자의 권한 관리자

👍 IAM 모범 사례

  • 루트 계정은 AWS 계정 설정할 때 빼고는 사용 ❌
  • 사용자를 그룹에 넣어 해당 그룹에 권한을 부여할 수 있음 → 그룹 수준에서 보안 관리
  • MFA 사용할 것
  • AWS 서비스에서 권한을 부여할 때마다 Role를 만들고 사용할 것
  • IAM 자격 증명 보고서, 액세스 관리자 기능 사용

💡 IAM 요약

  • Users : 실제 사용자 (AWS 콘솔 로그인)
  • Groups : Users 들 모아둔 것
  • Polices : Users나 Groups에 대한 권한 (JSON)
  • Roles : AWS 서비스 권한 부여할 때 사용함
  • Security : 비밀번호 + MFA 사용
  • Audit : IAM 자격 증명 보고서, 액세스 관리자