본문 바로가기

자격증/AWS Certified Security - Specialty

[AWS SCS] IAM Global condition context keys

728x90
반응형

IAM 정책에서 사용할 수 있는 주요 조건들 (Global Context Keys 및 기타 조건들)

AWS IAM 정책에서는 리소스에 대한 접근 제어를 보다 세밀하게 할 수 있도록 다양한 조건을 설정할 수 있습니다. 이 글에서는 IAM 조건의 주요 구성 요소와 그 사용법을 정리해보겠습니다.


1. 요청된 리전 (Requested Region)

  • 기능: requested region은 요청이 이루어진 AWS 리전을 나타냅니다. 이를 사용하여 특정 리전에서만 특정 작업을 제한할 수 있습니다.
  • 예시:
"Condition": {
    "StringEquals": {
        "aws:RequestedRegion": "eu-west-1"
    }
}
  • 위 예시에서는 eu-west-1 리전에서만 작업을 허용합니다.
  • 주의사항: 글로벌 서비스를 사용하는 경우, 요청 리전은 항상 us-east-1로 간주됩니다. 이를 해결하려면 Deny와 NotAction을 사용하여 글로벌 서비스를 제외한 다른 리전에서의 작업을 제한해야 합니다.

2. PrincipleArn

  • 기능: PrincipleArn은 요청을 보낸 IAM 사용자나 역할의 ARN을 비교하는 조건입니다.
  • 예시:
"Condition": {
    "StringEquals": {
        "aws:PrincipalArn": "arn:aws:iam::123456789012:user/Alice"
    }
}

 

  • 이 예시는 요청을 보낸 IAM 사용자가 Alice일 경우에만 작업을 허용합니다.
  • 사용처: IAM 사용자, IAM 역할, AWS 루트 사용자, STS(임시 보안 자격 증명) 세션 등에서 PrincipalArn을 사용하여 요청 주체를 확인할 수 있습니다.

 

 

3. SourceArn

  • 기능: SourceArn은 서비스 간 상호작용에서 요청을 보낸 서비스의 ARN을 비교하는 데 사용됩니다.
  • 예시:
"Condition": {
    "StringEquals": {
        "aws:SourceArn": "arn:aws:s3:::myBucket"
    }
}
  • 이 예시는 SNS가 S3 버킷에서만 데이터를 수신하도록 제한합니다.
  • 사용처: 주로 서비스 간 상호작용에서 사용됩니다. 예를 들어, S3 버킷이 SNS에 이벤트 알림을 보낼 때 SourceArn을 사용하여 S3 버킷에서만 이벤트가 발생하도록 할 수 있습니다.

4. CalledVia

  • 기능: CalledVia는 IAM 사용자나 역할을 대신해 요청을 보낸 서비스의 이름을 나타내는 조건입니다.
  • 예시:
"Condition": {
    "StringEquals": {
        "aws:CalledVia": "Athena"
    }
}
  • 이 예시는 Athena가 S3에서 데이터를 쿼리할 때만 작업을 허용합니다.
  • 지원되는 서비스: Athena, CloudFormation, DynamoDB, KMS 등에서만 사용할 수 있습니다.

5. IP 및 VPC 조건

  • 기능: 요청의 IP 주소를 기반으로 접근을 제어하는 조건입니다.
  • 예시:
"Condition": {
    "IpAddress": {
        "aws:SourceIp": "203.0.113.0/24"
    }
}
  • 위 예시는 203.0.113.0/24 IP 범위에서만 요청을 허용합니다.
  • VPC 조건:
    • aws:VpcSourceIp: VPC 엔드포인트를 통해 이루어진 요청의 IP 주소를 확인.
    • aws:SourceVpc: 요청이 발생한 VPC를 식별.
    • aws:SourceVpce: 요청이 어떤 VPC 엔드포인트를 통해 이루어졌는지 식별.

6. 리소스 태그와 원칙 태그 (Resource Tag & Principle Tag)

  • 기능: 리소스와 IAM 사용자 또는 역할의 태그를 사용하여 접근을 제어합니다.
  • 리소스 태그: 지정된 AWS 리소스에 존재하는 태그를 기반으로 접근을 제어합니다.
"Condition": {
    "StringEquals": {
        "aws:ResourceTag/Project": "DataAnalytics"
    }
}

 

  • 이 예시는 EC2 인스턴스가 Project 태그에 DataAnalytics 값을 가질 때만 작업을 허용합니다.
  • 원칙 태그: 요청을 보낸 IAM 사용자 또는 역할에 존재하는 태그를 기반으로 접근을 제어합니다.
"Condition": {
    "StringEquals": {
        "aws:PrincipalTag/Department": "Finance"
    }
}
  • 이 예시는 요청을 보낸 IAM 사용자가 Department 태그에 Finance 값을 가질 때만 작업을 허용합니다.

결론

이와 같은 조건을 활용하면 AWS 리소스에 대한 접근 제어를 세밀하게 설정할 수 있습니다. IAM 정책을 설계할 때, 이러한 조건들을 적절히 사용하면 보안과 효율성을 크게 향상시킬 수 있습니다. 각 조건의 사용법과 특징을 잘 이해하고 활용한다면, AWS 리소스에 대한 접근을 더욱 안전하고 유연하게 관리할 수 있을 것입니다.

728x90
반응형