본문 바로가기

자격증/AWS Certified Security - Specialty

[AWS SCS] IAM Policies 이해하기

728x90
반응형

AWS IAM 정책의 구조를 제대로 이해하기 위해 이번 강의에서는 IAM 정책의 구성 요소를 자세히 살펴보겠습니다.

IAM 정책의 기본 구성 요소

IAM 정책을 보면 첫 번째 줄은 정책 언어의 버전을 나타냅니다. 항상 2012-10-17로 포함됩니다.
그다음 정책 식별자(Policy Identifier)가 올 수 있는데, 이는 선택 사항으로 정책의 이름을 지정하는 데 사용됩니다.
이후 하나 이상의 "Statement(명령문)" 블록이 있습니다. 각 Statement는 선택적으로 Statement 식별자를 가질 수 있습니다.

Statement의 주요 구성 요소는 다음과 같습니다:

  1. Effect: 해당 Statement가 허용(Allow)인지 거부(Deny)인지 지정합니다.
  2. Principal: 정책이 적용되는 계정, 사용자 또는 역할을 나타냅니다.
  3. Action: 허용하거나 거부할 작업의 목록입니다.
  4. Resource: 정책이 적용되는 리소스입니다.
  5. Condition: Statement에 적용되는 조건(선택 사항)입니다.

NotAction을 활용한 정책 예제

NotAction은 특정 작업을 제외한 서비스의 모든 작업에 대해 액세스를 제공할 때 사용됩니다.
예를 들어, 아래와 같은 Statement를 살펴보겠습니다:

{
  "Effect": "Allow",
  "NotAction": "iam:*",
  "Resource": "*"
}

 

  • 설명: IAM 작업을 제외한 모든 작업을 허용합니다.
  • 주의: Deny가 없는 경우, 명시적으로 허용되지 않은 작업은 암묵적으로 거부됩니다.

2. 리소스 제한

특정 리소스에만 정책을 적용하려면 Resource를 설정합니다.

{
  "Effect": "Allow",
  "Action": "s3:*",
  "Resource": "arn:aws:s3:::example-bucket"
}
  • 설명: example-bucket에 대해 모든 S3 작업을 허용합니다.
  • 활용: 리소스 기반 권한 제어에 유용합니다.

3. MFA 필수 조건

사용자가 MFA 없이 AWS 리소스를 사용할 수 없도록 제한하려면 아래와 같은 정책을 사용할 수 있습니다.

{
  "Effect": "Deny",
  "NotAction": "iam:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:MultiFactorAuthPresent": "false"
    }
  }
}
  • 설명: MFA가 활성화되지 않은 경우 IAM 작업을 제외한 모든 작업을 거부합니다.

4. 특정 리전 제한

특정 리전 외부에서의 작업을 제한하려면 다음과 같이 작성합니다.

{
  "Effect": "Deny",
  "NotAction": "s3:*",
  "Condition": {
    "StringNotEquals": {
      "aws:RequestedRegion": "eu-central-1"
    }
  }
}

 

  • 설명: S3 작업을 제외한 모든 작업을 eu-central-1 리전 외부에서 거부합니다.

Principal의 다양한 옵션

IAM 정책에서 Principal은 정책이 적용되는 대상(사용자, 역할, 계정 등)을 정의합니다. 주요 옵션은 다음과 같습니다:

  • AWS 계정 및 루트 사용자
    • "Principal": { "AWS": "arn:aws:iam::123456789012:root" }
  • IAM 역할
    • "Principal": { "AWS": "arn:aws:iam::123456789012:role/MyRole" }
  • IAM 사용자
    • "Principal": { "AWS": "arn:aws:iam::123456789012:user/MyUser" }
  • AWS 서비스
    • "Principal": { "Service": "ec2.amazonaws.com" }

 

Allow와 Deny의 차이

정책 작성 시 허용(Allow)과 거부(Deny)의 차이를 명확히 이해하는 것이 중요합니다.

Allow 특정 작업을 명시적으로 허용합니다.
Deny 특정 작업을 명시적으로 거부합니다.
NotAction + Allow 특정 작업을 제외한 모든 작업을 허용합니다.
NotAction + Deny 특정 작업을 제외한 모든 작업을 거부합니다.

 


정리

IAM 정책은 AWS 리소스에 대한 접근 제어를 세밀하게 관리할 수 있는 강력한 도구입니다. 정책의 구조를 이해하고, NotAction, Condition 등을 적절히 활용하면 보안과 효율성을 모두 충족하는 권한 관리를 구현할 수 있습니다.

728x90
반응형