AWS IAM 정책의 구조를 제대로 이해하기 위해 이번 강의에서는 IAM 정책의 구성 요소를 자세히 살펴보겠습니다.
IAM 정책의 기본 구성 요소
IAM 정책을 보면 첫 번째 줄은 정책 언어의 버전을 나타냅니다. 항상 2012-10-17로 포함됩니다.
그다음 정책 식별자(Policy Identifier)가 올 수 있는데, 이는 선택 사항으로 정책의 이름을 지정하는 데 사용됩니다.
이후 하나 이상의 "Statement(명령문)" 블록이 있습니다. 각 Statement는 선택적으로 Statement 식별자를 가질 수 있습니다.
Statement의 주요 구성 요소는 다음과 같습니다:
- Effect: 해당 Statement가 허용(Allow)인지 거부(Deny)인지 지정합니다.
- Principal: 정책이 적용되는 계정, 사용자 또는 역할을 나타냅니다.
- Action: 허용하거나 거부할 작업의 목록입니다.
- Resource: 정책이 적용되는 리소스입니다.
- 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" }
- "Principal": { "AWS": "arn:aws:iam::123456789012:root" }
- IAM 역할
- "Principal": { "AWS": "arn:aws:iam::123456789012:role/MyRole" }
- "Principal": { "AWS": "arn:aws:iam::123456789012:role/MyRole" }
- IAM 사용자
- "Principal": { "AWS": "arn:aws:iam::123456789012:user/MyUser" }
- "Principal": { "AWS": "arn:aws:iam::123456789012:user/MyUser" }
- AWS 서비스
- "Principal": { "Service": "ec2.amazonaws.com" }
- "Principal": { "Service": "ec2.amazonaws.com" }
Allow와 Deny의 차이
정책 작성 시 허용(Allow)과 거부(Deny)의 차이를 명확히 이해하는 것이 중요합니다.
Allow | 특정 작업을 명시적으로 허용합니다. |
Deny | 특정 작업을 명시적으로 거부합니다. |
NotAction + Allow | 특정 작업을 제외한 모든 작업을 허용합니다. |
NotAction + Deny | 특정 작업을 제외한 모든 작업을 거부합니다. |
정리
IAM 정책은 AWS 리소스에 대한 접근 제어를 세밀하게 관리할 수 있는 강력한 도구입니다. 정책의 구조를 이해하고, NotAction, Condition 등을 적절히 활용하면 보안과 효율성을 모두 충족하는 권한 관리를 구현할 수 있습니다.
'자격증 > AWS Certified Security - Specialty' 카테고리의 다른 글
[AWS SCS] IAM Global condition context keys (0) | 2024.12.21 |
---|---|
[AWS SCS] IAM Condition Operators (0) | 2024.12.21 |
[AWS SCS] Amazon SES (0) | 2024.12.17 |
[AWS SCS] AWS Network Firewall - 아키텍쳐 (0) | 2024.12.17 |
[AWS SCS] AWS Network Firewall (0) | 2024.12.17 |