4. 4
IAM = Identity and Access Management
● 정의
○ 조직이 필요로 하는 보안 정책을 수립하고 정책에 따라 자동으로 사용자의 계정과 권한을
관리하는 솔루션
○ 누가(who = identity) 어떤 자원에 대해서(which resource) 무엇을(what) 할 수 있는지 검사
(permission)
Who can do what on which resource
5. 5
Authentication and Authorization (A&A)
● Authentication
○ 로그인 및 접근 하는 사람이 누구인지 확인(인증)하는 과정
○ 계정(identity) 및 암호(credential)
● Authorization
○ 인증(authentication)이 완료된 계정(identity)이
특정 자원에 권한이 있는지 확인하는 과정
6. 6
클라우드 IAM 요구사항
● 세부적인 권한 제어
○ 예: 운영팀은 시스템 로그를 볼 수 있지만, DB 데이터 접근 불가
○ 예: 장애복구를 위한 VM 재시작 가능하지만, 디스크 액세스 불가
7. 7
클라우드 IAM 요구사항
● 중앙 집중식 관리
○ 회사 전체의 프로젝트와 정책(policy)에 대한 관리
○ 여러 프로젝트에 적용할 표준 정책(예: 이미지, 권한, 보안) 정의
8. 8
클라우드 IAM 요구사항
● 빌링 관리
○ 회사 내에서 부서 또는 프로젝트 단위의 독립된 과금
○ 클라우드 리소스 사용자(예: IT 팀)와 비용처리 조직(예: 재무팀)의 분리
○ 리셀러를 통한 비용 지불
Finance
9. 9
클라우드 IAM 요구사항
● 애플리케이션에서 API를 통한 서비스 접근 권한 체크
● 보안 관점에서 사고 발생 시 피해가 훨씬 큼
Application
10. 10
클라우드 운영 조직 관리
● 부서나 서비스 단위로 독립적인 프로젝트
및 빌링 관리
● 실제 회사의 조직을 클라우드 운영 조직에
맵핑
12. 12
GCP Identity and Access Management (IAM)
● IAM = 구글 클라우드의 기본 계정 및 권한 관리
● 누구에게 어떤 자원에 대해 어떤 활동을 할 수 있는지 검사
○ 예: 사용자에게 VM(Compute Engine) 생성 권한이 있는지 검사
13. 13
GCP Identity and Access Management (IAM)
● 하나의 동작에 대해 여러 번 권한 검사가 발생하는 경우
15. 15
GCP IAM에서 사용하는 계정 (Authentication)
● 사용자 계정
○ 구글 메일 계정 (Google Account)
○ 회사(G-Suite Domain) 계정
○ 구글 그룹(Google Group)
● 서비스 계정 (Service Account)
○ 애플리케이션 또는 VM(Compute Engine)이 사용하는 계정
○ 애플리케이션 또는 VM에서 GCP 리소스에 접근하고자 할 때 사용 (예: VM 내에서 BigQuery
접근)
○ 서비스 별로 기본 생성된 계정들 존재 (새로 생성 및 변경 가능)
○ 서비스 계정의 권한을 사용자에게 부여 가능 (Identity이자 Resource)
16. 16
GCP IAM의 권한 관리 (Authorization)
● GCP 서비스에 대한 접근 권한(Permission) 관리
● 프로젝트 또는 리소스(예: Compute) 수준의 권한 제어
● 권한들을 묶어 Role로 관리 (예: Compute 인스턴스 관리자 - 인스턴스 관련
권한)
○ Role을 할당 계정 또는 그룹에 할당
Role Permissions Project
User
17. 17
GCP IAM Role의 종류
Primitive Roles
● 범위가 큼
● 여러 서비스 권한
● 3가지 역할
○ Owner
○ Editor
○ Viewer
Predefined Roles
● 세밀한 범위
● 단일 서비스에 대한 권한
● 70개 이상의 역할
○ BigQuery Admin
○ Compute Instance Admin
○ Compute Network Admin
등
Custom Roles
● 정확한 범위
● 새로 생성하거나 기존의
Role에서 복사해서 생성
● 예
○ Compute Instance
Admin without
“외부 IP 할당" 권한
More granularity
18. 18
GCP IAM의 리소스 관리
● 계층형 리소스(조직 모델) or
플랫 구조(프로젝트 단위)
● 계층형에서 최상위는 회사
(Organization)
○ 상위 객체로부터 권한 상속
○ Cloud ID 또는 G-Suite 계정
○ 외부 독립 프로젝트
마이그레이션 가능 (승인 필요)
○ 외부 G-Mail 계정 권한 부여 가능
(승인 필요)
19. 19
Cloud ID or G-Suite 계정
● 계층형 모델을 사용하기 위해 필요
● G-Suite: 구글 기업용 애플리케이션 (구 Google Apps)
● Cloud ID: G-Suite 없이 클라우드의 계층형 리소스 관리를 위한 계정
20. 20
GCP IAM의 리소스 관리 - 조직 모델
● 폴더
○ 여러 프로젝트들을 묶어 하나로
관리(권한 부여)
○ 실제 조직의 부서에 해당
● 프로젝트
○ 리소스들을 묶어 독립적으로
관리
○ 실제 프로젝트 또는 서비스에
해당
○ 과금 단위
● 리소스
○ GCP가 제공하는 서비스
21. 21
● 사용자가 아닌 애플리케이션이나 VM에 속한 계정
○ VM(Compute Instance)이나 애플리케이션에서 API 호출 시 사용되는 ID
○ 사용자 계정 대신 사용 ⇒ 권한도 서비스 계정에 부여
● 자동으로 디폴트 생성되고 추가 생성 및 권한 변경 가능
서비스 계정(Service Account)
프로그램
VM
22. 22
● 애플리케이션에서는 서비스 계정의 API
Key를 사용하여 인증(authentication)
● VM 내부 애플리케이션은 Google
Managed Key (별도 Key 관리 불필요)
● 독립 애플리케이션 User Managed Key
서비스 계정(Service Account) 사용 방법
23. 23
● Google Cloud API를 사용하는 애플리케이션의 권한 제어
● 서비스 계정을 업무 별로 생성하고 최소한의 권한 부여
● Service Account Actor Role을 User
또는 Group에 부여
○ 해당 User/Group이 생성한 VM 내부의
애플리케이션이 서비스 계정의 권한 부여
○ 예: VM 내에서 API로 새로운 VM 생성
○ 관리자가 실행하는 App이 막강한
관리자의 모든 권한을 가질 필요 없음
서비스 계정(Service Account) 활용 Tips
29. 29
중앙집중식 관리
● 조직과 Cloud 자원 구조 맵핑
● 폴더를 팀으로 (또는 공유 자원)
● 프로젝트를 서비스 단위로
30. 30
기업 계정 동기화
● Google Cloud Directory Sync (GCDS)
● LDAP 또는 Active Directory의 계정 단방향 동기화
31. 31
애플리케이션 코드에 API Key 포함하지 않도록
● Compute VM 내에서 실행되는 경우 자동으로 Service Account Actor Role
권한
○ Google Managed Key
● 독립 애플리케이션에서는 GOOGLE_APPLICATION_CREDENTIALS 환경
변수
○ User Managed Key
32. 32
인증 보안 강화
● Multi-Factor Authentication
● Root 계정 및 텍스트 암호를 통한 인증 비활성화
33. 33
최소한의 필요한 권한만 부여
● 리소스(서비스) 별 권한 부여
● 슈퍼 관리자 지양 ⇒ 업무 별 관리자
● 최소한의 권한 부여 후, 요청이 있을 때 추가 권한 부여
34. 34
User 대신 Group에 권한 부여
● 유연한 권한 관리 가능
● 일관된(consistent) 권한 가능 (예) Admin들에게는 동일한 권한
35. 35
Audit Log
● 권한 침해 문제 발생을 빠르게 발견 및 정확한 분석 가능
● GCP Logging 서비스 이용
○ Stackdriver Agent를 이용하여 중앙에 수집
● 로깅 대상
○ 리소스 접근 시도 및 결과
○ IAM Policy 변경
○ 애플리케이션에 의한 액세스 포함
36. 36
서비스 계정 또는 SSH Key Rotate
● Key 유출로 인한 피해 최소화
● Google Managed Key의 경우 GCP에 의해 자동 Rotation
● User Managed Key는 API를 사용하여 자동 Rotation 구현
● API를 사용하여 SSH Key
자동 Rotation 구현
37. 37
빌링
ProjectProjectProject
Billing Account
Project level bill Project level bill Project level bill
Bills itemised by resource type
● 빌링 계정
○ 빌링 정보(예: 신용카드)
○ 조직(또는 계정) 내에 여러 개 생성
가능
● 프로젝트 단위 빌링
○ 프로젝트 당 한 개의 빌링 계정
선택
○ 리소스 타입에 따라 빌링 아이템
구분
38. 38
빌링 관련 권한
● Billing Admin (조직 레벨)
○ Manage payment information
○ Setup cost controls and alerts
○ Setup billing exports
○ Create new billed projects
○ View costs
■ Invoices
■ Credits
■ History
■ Data exports
● Project Billing Manager (프로젝트 레벨)
○ 프로젝트의 빌링 계정 변경
39. 39
표준 VM Image 공유
● 표준 VM Image를 여러 프로젝트에서 사용
● Image 공유 프로젝트를 통해 공유
○ Image User IAM Role
40. 40
프로젝트 관리자 역할 분리
● 하나의 프로젝트에 대한 “네트워크/보안 관리자” 역할과 “인스턴스 관리자”
역할 분리
● 다른 지식과 목표를 가지는 관리자
42. 42
요약
● 클라우드 IAM 요구사항
○ 세부적인 권한 제어
○ 중앙 집중식 관리
○ 빌링 관리
○ 애플리케이션의 API 접근 권한 체크
○ 클라우드 운영 조직 관리
43. 43
요약
● GCP IAM
○ 계정 관리: Google Account, Service Account, G Suite Domain, Google Groups
○ 권한 관리: Primitive/Predefined/Custom Role
○ 리소스 관리: 계층형(조직 모델) 구조 vs 플랫 구조
○ 서비스 계정: Google Cloud API를 사용하는 애플리케이션과 VM의 권한 제어
44. 44
요약
● Cross Project Networking (XPN)
● GCP IAM 기반 계정 및 권한 관리 Best Practice
○ 중앙집중식 관리
○ 기업 계정 동기화
○ API Key 관리
○ 인증 보안 강화
○ 최소한의 권한 부여
○ User 대신 Group 권한 부여
○ Audit Log
○ Key Rotation
○ 빌링