레거시 ABAC를 활성화한 GKE 클러스터 설정

GKE의 레거시 ABAC는 IAM과 RBAC로 부여한 것 외의 권한을 추가합니다. 필요한 권한을 준비한 뒤 ABAC를 비활성화하고 실제 접근을 확인하세요.

설명

ABAC는 속성 기반 접근 제어 방식입니다. GKE의 레거시 ABAC를 켜면 서비스 계정, 노드와 컨트롤러 등의 주체에 IAM이나 RBAC로 부여한 것 외의 고정된 권한이 추가됩니다. 따라서 RBAC 바인딩만 좁게 설정해도 이 추가 권한이 사라지지는 않습니다. Google은 ABAC를 비활성화하고 IAM과 RBAC로 접근을 관리하도록 권장합니다. 현재 GKE에서는 기본적으로 비활성화되어 있으며 Autopilot에서는 활성화할 수 없습니다.

잠재적 영향

  • IAM과 RBAC에서 의도한 범위를 넘어서는 작업이 허용될 수 있습니다. 영향을 받는 사용자나 서비스 계정의 자격 증명이 침해되면 불필요한 추가 권한이 피해 범위를 넓힐 수 있습니다.
  • 인증과 인가는 별개입니다. ABAC 활성화만으로 인터넷에서 인증 없이 클러스터에 접근할 수 있다고 단정해서는 안 됩니다.
  • ABAC에 의존하던 권한을 대체하지 않고 해제하면 운영자, 워크로드 또는 자동화 작업의 접근이 중단될 수 있습니다. 필요한 권한을 먼저 확인해야 합니다.

해결 방법

  1. 실제 클러스터의 ABAC 상태와 필요한 접근 주체·작업을 확인하세요. 과도한 권한을 그대로 복제하지 말고 필요한 IAM 권한과 RBAC 역할·바인딩을 준비하세요. GKE에서는 IAM과 RBAC 중 어느 한쪽에서 허용한 권한도 적용될 수 있으므로 둘 다 검토하세요.
  2. 새 클러스터 설정에서는 legacy_abac.enabled를 false로 유지하세요. 기존 클러스터에는 Google이 지원하는 변경 절차를 사용하세요. 예를 들어 대상 프로젝트와 위치를 확인한 뒤 gcloud container clusters update의 --no-enable-legacy-authorization 옵션이나 setLegacyAbac API로 비활성화할 수 있습니다.
  3. 작업 완료 후 실제 legacyAbac.enabled 값을 다시 확인하고, 운영자·서비스 계정·자동화가 필요한 작업을 계속 수행할 수 있는지 시험하세요. 불필요한 작업이 허용되지 않는지도 확인하세요. 구성 파일만 수정하지 말고 실제 클러스터에 변경이 적용됐는지 확인하세요.

예시

변경 전

yaml
- name: create a cluster
  google.cloud.gcp_container_cluster:
    name: my-cluster
    initial_node_count: 2
    master_auth:
      username: cluster_admin
      password: my-secret-password
    node_config:
      machine_type: n1-standard-4
      disk_size_gb: 500
    location: us-central1-a
    project: test_project
    auth_kind: serviceaccount
    service_account_file: "/tmp/auth.pem"
    state: present
    legacy_abac:
      enabled: yes

변경 후

yaml
- name: create a cluster
  google.cloud.gcp_container_cluster:
    name: my-cluster
    initial_node_count: 2
    master_auth:
      username: cluster_admin
      password: my-secret-password
    node_config:
      machine_type: n1-standard-4
      disk_size_gb: 500
    location: us-central1-a
    project: test_project
    auth_kind: serviceaccount
    service_account_file: /tmp/auth.pem
    state: present
    legacy_abac:
      enabled: no

설명:

  • 변경 전: enabled: yes는 레거시 ABAC를 활성화하는 설정입니다.
  • 변경 후: enabled: no는 ABAC를 끄려는 설정입니다. 필요한 IAM과 RBAC 구성은 별도로 준비해야 합니다. 기존 클러스터에는 앞서 설명한 변경 절차를 적용하고 결과를 확인하세요.
  • 두 예시에는 master_auth의 username과 password가 남아 있습니다. 이 기본 인증 방식은 GKE 1.19에서 제거되었으므로, 예시를 현재 환경의 완전한 배포 구성으로 사용하지 마세요. 프로젝트, 비밀번호, 서비스 계정 파일 경로도 실제 환경에 맞게 검토해야 합니다.

참조