Identity and Access Management (IAM) – Advanced
본 글은 OCI Identity and Access Management – Advanced 과정의 내용을 기반으로
정책 상속, 조건부 정책, 고급 정책 설계, 태그 기반 접근 제어, 동적 그룹,
IAM 정책 최적화, 객체 수준 접근 제어까지 고급 IAM 제어 메커니즘을 정리한다.
이 글에서 다루는 내용
- Policy Inheritance & Policy Attachment
- Conditional Policies
- Advanced Policies (Least Privilege)
- Tag-Based Access Control
- Network Sources
- Dynamic Groups
- IAM Policy Optimization – Part 1
- IAM Policy Optimization – Part 2
- Object-Level IAM (Object Storage)
1. Policy Inheritance & Policy Attachment
Policy Inheritance (정책 상속)
- OCI에서 하위 Compartment는 상위 Compartment의 정책을 자동 상속
- Root Compartment(테넌시)에 작성된 정책은 모든 하위 Compartment에 적용됨
- Default Domain의 Administrator 그룹은 모든 Compartment의 리소스를 관리 가능
상속 예시
- Compartment A에 정책 작성
- 하위 Compartment B, C는 해당 정책 자동 적용
- 상위에서 부여된 권한은 하위에서 제한 불가
Policy Attachment (정책 부착 위치)
- 정책은 특정 Compartment 또는 Root에 부착(attach)됨
- 정책을 어디에 부착하느냐에 따라 수정·삭제 가능한 관리자 범위가 달라짐
| 정책 부착 위치 | 정책 수정 가능 주체 |
|---|
| Root | 테넌시 정책 관리자 |
| Parent Compartment | 해당 Compartment 정책 관리자 |
| Child Compartment | 해당 Compartment 관리자 |
- 상위 Compartment에 정책을 작성할 경우 하위 경로 전체 명시 필요
2. Conditional Policies
조건부 정책 개요
where 절을 사용해 정책에 조건 추가
- 조건 결과:
True / False / Not Applicable
- True일 때만 정책 적용
조건 변수
Request 변수
- 요청 주체 기준
- 예:
request.user.id
request.permission
request.region
Target 변수
- 대상 리소스 기준
- 예:
target.bucket.name
target.compartment.id
단일 조건 / 다중 조건
조건부 정책 예시
- 특정 Region에서만 리소스 관리 허용
- 특정 Compartment만 제외
- Autonomous DB workload 유형 제한
3. Advanced Policies (Least Privilege)
Permission 구조 이해
- Verb는 내부적으로 여러 Permission(API Operation) 묶음
- 예: Volume 리소스
| Verb | 포함 Permission |
|---|
| inspect | VOLUME_INSPECT |
| read | inspect + READ |
| use | inspect + read + UPDATE |
| manage | 전체 (CREATE, DELETE 포함) |
고급 정책 적용
manage 대신 permission 단위로 제한
request.permission 또는 request.operation 사용
예시
- 삭제 권한 제외
- 특정 Bucket + 특정 Permission만 허용
- 시간 기반 접근 제한
4. Tag-Based Access Control
개념
- 태그를 기준으로 접근 제어
- 정책을 Compartment / Group / Resource 전반에 재사용 가능
Tag 위치
Requester 기준
request.principal.group.tag
request.principal.compartment.tag
Target 기준
target.resource.tag
target.resource.compartment.tag
활용 예시
- 여러 Admin 그룹을 하나의 Test Compartment에 자동 권한 부여
- 특정 태그가 붙은 Compartment만 접근 허용
- 태그 변경만으로 접근 제어 변경 (정책 수정 불필요)
5. Network Sources
개념
- 요청 IP 주소 기반 접근 제어
- 허용된 IP에서만 리소스 접근 가능
구성 절차
- Network Source 생성
- 정책에 조건 추가
request.networkSource.name
활용 사례
- 사내 네트워크에서만 관리자 접근 허용
- 특정 공인 IP에서만 운영 리소스 접근 허용
6. Dynamic Groups
Principal 개념 정리
- User Principal
- Instance Principal
- Service Principal
- Ephemeral Principal
Dynamic Group 개요
- 리소스를 사용자처럼 그룹화
- 매칭 룰 기반 자동 멤버십 관리
매칭 룰 예시
- 특정 Compartment의 모든 Instance
- 특정 Resource Type (DB, Function 등)
- 특정 Resource OCID
사용 흐름
- Dynamic Group 생성
- Matching Rule 정의
- Policy 작성
→ 정책 없으면 아무 동작도 불가
7. IAM Policy Optimization – Part 1
왜 최적화가 필요한가
- 정책 수 제한 존재
- API 성능 영향
- 관리·감사 복잡도 증가
중복 제거 전략
- 동일 정책 중복 제거
- 상속 구조 고려
- 상위 Compartment 정책 우선
중요한 원칙
- 가장 강한 권한이 항상 우선
- 조건으로 상위 권한을 제한할 수 없음
8. IAM Policy Optimization – Part 2
Policy 병합 전략
- 동일 Group + 다른 Resource → 하나의 Policy로 병합
- Verb 대신 Permission 명시
Least Privilege 적용
- 실제 필요한 Permission만 명시
- 불필요한 Verb 사용 제거
Pattern 활용
- Compartment 이름 패턴 기반 접근 제어
- Dev / Prod 정책 통합 관리
9. Object-Level IAM (Object Storage)
Object Storage 구조
Object-Level 제어 필요성
- Data Lake
- Big Data
- IoT
- 대규모 공유 Bucket
Object-Level 정책 변수
활용 예시
- 특정 폴더만 접근 허용 (
prod/*)
- 읽기 전용 / Write-once
- 특정 사용자 + 특정 파일 유형(
*.pdf) 제한
Identity and Access Management – Advanced 정리
- 정책은 상위 Compartment에서 하위 Compartment로 상속됨 (Policy Inheritance)
- 정책 부착 위치에 따라 수정·삭제 가능한 관리자 범위가 결정됨 (Policy - Attachment)
- 조건부 정책(where 절)을 통해 요청 주체·대상 리소스 기준의 세밀한 접근 제어 가능
- Verb 기반 정책은 내부적으로 다수의 Permission(API Operation) 포함
- Advanced Policy를 통해 Verb를 해체하고 Permission 단위로 최소 권한 설계 가능
- Tag-Based Access Control로 정책을 재사용하고 접근 제어를 태그 중심으로 단순화 가능
- Network Source를 활용해 요청 IP 기반 접근 통제 가능
- Dynamic Group을 통해 Instance·Service·Function을 주체(Principal)로 정책 적용 가능
- 정책 최적화를 통해 중복 정책 제거, 상속 구조 활용, Policy 수 제한 대응 가능
- Object-Level IAM으로 Bucket 내부 객체 단위까지 세밀한 접근 제어 가능