본문 바로가기

DevOps/AWS

[AWS] IAM 정책 (자격증명 기반 정책, 리소스 기반 정책)

CloudNet@가시다님이 진행하는 "AWS Hacking & Security Study" 1기 스터디입니다.
# 그중에서도 Sson 님의 블로그 글을 많이 참고 했습니다.

 

  개요

 

AWS의 IAM docs를 보면 다음과 같은 내용을 확인할수 있습니다.

IAM 정책 유형에는 총 6가지의 정책으로 분류한것을 알수 있습니다. 

위에서 부터 가장 자주 사용하는 정책 유형을 나열 했습니다. 그중에서 이번 포스팅에서는 위에 3가지에 대해 먼저 알아 보겠습니다.

 

  • 자격 증명 기반 정책 (identity- based 정책 )
  • 리소스 기반 정책
  • 권한 경계 정책
  • Organizations SCP
  • 액세스 제어 목록
  • 세션 정책

 

✅ Ssoon님의 그림을 퍼왔습니다.

 

그렇다면 IAM은 무엇일까요? 

 

Identity and Access Management : 

즉, 정책을 생성하고 IAM 자격증명 ( 유저나 그룹 ) 또는 AWS 리소스에 연결 하여 AWS 에서 모든 액세스에 대한 관리를 하는 모든 과정을 뜻합니다.

 

 

IAM은 3가지 요소로 이루어져있습니다.

 

✔️ Who - IAM 자격 증명 ( 유저나 그룹 ) 또는 AWS 리소스

✔️ Can Access - Permission

✔️ What - Resource 

 

 

 

✅ 자격증명 기반 정책 (Identity-based policy)

 

✔️ 자격 증명 기반 정책이란? : 

  • AWS Identity and Access Management (IAM)을 사용하여 AWS 리소스에 대한 액세스 권한을 부여하고 제한하는 데 사용되는 권한 정의 도구
  • AWS 계정 내에서 IAM 사용자, 그룹, 또는 역할에 직접 연결
  • 자격증명은 AWS에서 제공하는 사용자 아이디와 비밀번호 또는 액세스 키와 같은 인증 수단을 나타냅니다.

✔️ 자격 증명 기반 정책 (3가지)

  • AWS 관리형 정책
  • 고객 관리형 정책 
  • 인라인 정책

 

AWS 관리형

 

고객 관리형

 

인라인 정책


✅  권한 경계 정책 

 

✔️ 권한 경계 정책이란? : 

 

IAM 엔터티의 자격 증명 기반 정책(IAM 정책)과 함께 작동하여 엔터티가 수행할 수 있는 작업을 제한합니다.

 

✔️ 권한 경계 정책 특징  

  1. 권한 제한: Permissions Boundaries는 사용자나 역할이 다른 엔터티에 할당할 수 있는 권한의 상한선을 설정합니다. 이를 통해 리소스에 대한 권한을 제한하고, 고객이 너무 많은 권한을 부여하지 않도록 합니다.
  2. 다른 IAM 정책과 병행 가능: Permissions Boundaries는 다른 IAM 정책과 함께 사용할 수 있습니다. 예를 들어, 사용자에게 IAM 인라인 정책을 부여하고, 그 정책에 Permissions Boundaries를 적용하여 두 가지 권한 제어 메커니즘을 조합할 수 있습니다.
  3. 권한 계승: 사용자나 역할은 Permissions Boundaries를 통해 설정된 권한 상한선을 넘을 수 없습니다. 그러나 이러한 권한 상한선을 초과하지 않는 범위에서는 다른 IAM 정책을 사용하여 권한을 추가로 부여할 수 있습니다.
  4. 권한 평가: AWS는 권한을 평가할 때 IAM 엔터티가 가진 권한과 Permissions Boundaries를 동시에 고려합니다. 이를 통해 권한을 두 번 확인하여 최종적인 권한을 결정합니다.

✅ 리소스 기반 정책 (Resource based policies )

✔️ 리소스 기반 정책이란? :

 

리소스 기반 정책은 일반적으로 JSON 형식으로 작성됩니다. 정책은 AWS 리소스(: S3 버킷, Lambda 함수, SNS 주제 ) 관련하여 정의됩니다.

 

정책은 해당 리소스의 액세스 권한을 세부적으로 정의하며, 어떤 엔터티가 어떤 작업을 수행할 있는지를 정의합니다.

 

✔️ S3 버킷 정책도 리소스 기반 정책에 속함 

 

버킷 정책 은  S3 작업, 요청자, 리소스 및 요청의 여러 측면(예: IP 주소)를 비롯한 다양한 조건을 기반으로 버킷 및 객체에 대한 중앙 집중식 액세스 제어를 제공

  • 정책은 액세스 정책 언어로 표현되며 중앙 집중식 권한 관리를 가능
  • 버킷에 연결되는 권한은 해당 버킷의 모든 객체에 적용
  • 개별 객체에 대해서만 권한을 추가(부여) 할 수 있는 액세스 제어 목록 (ACL )과 달리, 버킷 정책은 버킷 내 모든 객체 또는 객체의 하위 세트에 대해 권한을 추가 또는 거부 가능
  • 버킷에 포함된 임의 개수의 객체에 대한 권한 설정 
  • 버킷 소유자만 정책을 버킷에 연결
# Effect
# Principal
# Action
# Resource

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::ahss-닉네임/*"
        }
    ]
}

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

[AHSS 3주차] AWS WAF 사용법  (0) 2023.09.14
[AHSS 3주차] 웹 취약점 및 보안  (0) 2023.09.11
[AHSS 2주차] AWS IAM 보안 (2)  (0) 2023.09.06
[AHSS 2주차] AWS IAM 보안 (1)  (0) 2023.09.04
[AHSS 1주차] AWS S3 보안 (3)  (0) 2023.08.31