IT 지식 및 정보 (구글 클라우드 등)

Google Cloud IAM (Identity and Access Management) 설명

azzaman 2025. 11. 27. 11:06


Google Cloud IAM (Identity and Access Management)은 GCP 리소스에 대한 접근 권한을 중앙에서 관리하는 서비스입니다. 이는 조직의 보안 정책을 기술적으로 구현하는 핵심 레이어입니다. IAM의 접근 통제는 정책(Policy)을 통해 이루어지며, 이 정책은 주체, 역할, 리소스의 세 가지 핵심 요소 간의 바인딩(Binding)으로 구성됩니다.


I. IAM의 핵심 3요소와 구조

IAM 정책은 다음과 같은 구문으로 리소스에 적용됩니다.

주체 (Principal) + 특정 역할 (Role) => 특정 리소스 (Resource)에 대한 권한 부여

1. 주체 (Principal)

권한이 부여되는 실체(Entity)입니다.

  • Google 계정: 일반 사용자 계정입니다.
  • 서비스 계정 (Service Account): 애플리케이션, 가상 머신(VM), 또는 코드가 Google Cloud API에 접근하기 위해 사용하는 비인간(non-human) ID입니다. IAM에서 가장 중요한 ID 유형이며, 코드가 갖는 권한을 분리하여 관리하는 핵심입니다.
  • Google 그룹: 여러 주체를 묶어 한 번에 권한을 관리하는 편리한 방식입니다.

2. 역할 (Role)

특정 리소스에 대해 주체가 수행할 수 있는 권한(Permissions)의 집합입니다.

  • 권한 (Permissions): 리소스에 대한 가장 기본적인 접근 단위입니다 (예: bigquery.tables.getData, storage.objects.create).
  • 역할 유형:
    • 사전 정의된 역할 (Predefined Roles): Google Cloud가 특정 서비스에 대해 미리 정의한 역할입니다 (예: Compute Viewer, BigQuery Data Editor). 대부분의 경우 이를 사용합니다.
    • 커스텀 역할 (Custom Roles): 사전 정의된 역할이 제공하지 않는 특정 권한 조합이 필요할 때 사용자가 직접 정의하는 역할입니다.
    • 기본 역할 (Primitive Roles): 프로젝트 수준에서 Owner, Editor, Viewer로 부여되는 가장 광범위한 권한입니다. 보안 상 사용을 최소화해야 합니다.

3. 리소스 (Resource)

접근이 통제되는 대상입니다 (예: projects/my-project, bigquery/dataset/user-data, storage/bucket/my-files). IAM 정책은 GCP의 계층 구조(조직 -> 폴더 -> 프로젝트 -> 리소스)를 따라 상속됩니다.


II. 🛠️ IAM 정책 설정의 단계적 절차

IAM 정책 설정은 주체와 역할을 리소스에 결합(Binding)시키는 과정입니다.

단계 1: 대상 리소스 식별 및 계층 결정

  • 작업: 권한을 적용할 특정 리소스의 계층적 위치(예: 프로젝트, 데이터세트)를 결정합니다. 권한은 상위에서 하위로 상속되므로, 가장 낮은 계층에서 가장 좁은 범위의 권한을 부여하는 것이 원칙입니다.

단계 2: 서비스 계정(SA) 또는 주체 생성/확보

  • 작업: 권한을 부여받을 주체를 준비합니다. 애플리케이션의 경우 서비스 계정을 새로 생성하고 해당 이메일 주소를 확보합니다. 이는 코드의 ID를 사람의 ID와 분리하여 관리하는 보안 모범 사례입니다.

단계 3: 최소 권한 역할 선택 (Principle of Least Privilege)

  • 작업: 주체가 꼭 필요한 최소한의 작업만 수행할 수 있는 사전 정의된 역할을 선택합니다.
    • 예: 데이터 읽기만 필요하면 Data Viewer 역할, 객체 업로드만 필요하면 Storage Object Creator 역할을 사용합니다.

단계 4: 정책 바인딩 생성 및 적용

  • 작업: 해당 리소스의 IAM 설정(콘솔, gcloud 명령어, API)에서 주체선택된 역할을 묶어 바인딩을 추가합니다.
  • 결과: 리소스의 IAM 정책이 업데이트되며, 이제 주체는 해당 역할에 정의된 권한 내에서만 리소스에 접근하고 조작할 수 있습니다.

단계 5: 조건부 IAM 적용 (선택적 보안 강화)

  • 작업: 바인딩에 조건 (Condition)을 추가하여, 특정 시점이나 환경에서만 권한이 활성화되도록 제어합니다.
    • 예: request.time 속성을 사용하여 특정 근무 시간에만 데이터 수정 권한을 활성화하거나, resource.name 속성을 사용하여 특정 이름의 버킷에만 접근을 허용합니다.

III.  IAM의 역할 및 거버넌스와의 관계

  • 통제점 (Control Point): IAM은 모든 GCP 리소스에 대한 접근 요청을 가로채고, 해당 요청이 IAM 정책을 충족하는지 검사하는 강제 통제점 역할을 수행합니다.
  • 거버넌스 구현: 데이터 거버넌스가 "민감 데이터에 대한 접근은 보안팀만 할 수 있다"는 규칙이라면, IAM은 보안팀의 서비스 계정에게만 해당 데이터에 대한 Data Viewer 역할을 부여함으로써 그 규칙을 기술적으로 실행합니다.

 

관련 링크