RBAC용 Google 그룹스 구성


이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터에서 Kubernetes 역할 기반 액세스 제어(RBAC)를 사용하도록 Google 그룹스를 설정하는 방법을 보여줍니다.

개요

RBAC용 Google 그룹스를 사용하면 Google Workspace에서 Google 그룹스 구성원에 RBAC 권한을 할당할 수 있습니다. Google Workspace 관리자는 사용자 및 그룹을 완전히 GKE 또는 Google Cloud 콘솔 외부에서 유지 관리합니다. 따라서 클러스터 관리자는 사용자에 대한 세부 정보가 필요하지 않습니다.

또한 RBAC용 Google 그룹스를 사용하면 퇴사자에 대한 액세스 권한 해지와 같은 기존 사용자 계정 관리 방식과 통합할 수 있습니다.

RBAC용 Google 그룹스를 사용하려면 다음 태스크를 완료하세요.

  1. 요구사항을 충족합니다.
  2. Google 그룹스를 설정합니다.
  3. 클러스터에서 RBAC용 Google 그룹스를 사용 설정합니다.
  4. Google 그룹스에 RBAC 권한을 정의하고 할당합니다.

요구사항

RBAC용 Google 그룹스를 사용하려면 Google Workspace 또는 Cloud ID 버전에 대한 액세스 권한이 있어야 합니다.

그룹을 만들고 사용자를 구성원으로 추가할 때 Google 그룹스 한도를 숙지해야 합니다.

제한사항

  • GKE는 RBAC용 Google 그룹스를 통해 중첩 멤버십을 비롯해 보안 그룹에 포함된 최대 2,000개 그룹의 멤버십을 사용자에게 지원합니다.

Google 그룹스 설정

다음 단계에서는 Google 그룹스에서 RBAC로 작동하는 그룹을 설정하는 방법을 보여줍니다.

  1. gke-security-groups라는 도메인에 그룹을 만듭니다. gke-security-groups 이름은 필수입니다. 그룹에 그룹 구성원에 대해 구성원 보기 권한이 선택되었는지 확인합니다. 자세한 내용은 구성원 및 콘텐츠 관리를 위한 권한 설정을 참조하세요.

  2. 개발자 및 클러스터 관리자와 같이 클러스터에 대해 다른 권한을 가져야 하는 사용자 집합을 나타내는 그룹이 아직 없으면 만듭니다. 각 그룹에는 그룹 구성원에 대해 구성원 보기 권한이 있어야 합니다.

  3. 그룹을 gke-security-groups 그룹에 중첩된 그룹으로 추가합니다. 개별 사용자는 gke-security-groups의 구성원으로 추가하지 마세요.

Google 그룹스 관리에 대한 자세한 내용은 Google 그룹스 고객센터를 참고하세요.

특정 사용자가 클러스터 리소스에서 작업을 수행할 수 있는지 여부를 확인하기 위해 GKE는 사용자가 액세스 권한이 있는 그룹의 구성원이고 해당 그룹이 gke-security-groups 그룹에 중첩되어 있는지 확인합니다.

Google 그룹스 멤버십에 대한 정보는 잠시 동안 캐시됩니다. 그룹 멤버십의 변경사항이 모든 클러스터에 전파되려면 몇 분 정도 걸릴 수 있습니다. 그룹 변경 시의 지연 시간 외에도 클러스터에서 사용자 인증 정보를 표준 캐시하는 데 약 1시간 정도 걸립니다.

클러스터에서 RBAC용 Google 그룹스 사용 설정

Google Cloud CLI 또는 Google Cloud 콘솔을 사용하여 신규 및 기존 GKE Standard 및 Autopilot 클러스터에서 RBAC용 Google 그룹스를 사용 설정할 수 있습니다.

새 클러스터 만들기

gcloud

Standard

새 Standard 클러스터를 만들고 RBAC용 Google 그룹스를 사용 설정하려면 다음 명령어를 실행합니다.

gcloud container clusters create CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --security-group="gke-security-groups@DOMAIN"

다음을 바꿉니다.

  • CLUSTER_NAME: 새 클러스터의 이름입니다.
  • COMPUTE_REGION: 새 클러스터의 Compute Engine 리전입니다. 영역 클러스터의 경우 --zone=COMPUTE_ZONE을 사용합니다.
  • DOMAIN: 만든 gke-security-groups 그룹의 도메인 이름입니다.

Autopilot

새 Autopilot 클러스터를 만들고 RBAC용 Google 그룹스를 사용 설정하려면 다음 명령어를 실행합니다.

gcloud container clusters create-auto CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --security-group="gke-security-groups@DOMAIN"

콘솔

새 클러스터를 만들고 RBAC용 Google 그룹스 기능을 사용 설정하려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭합니다.

  3. 사용할 클러스터 모드에서 구성을 클릭합니다.

  4. Autopilot 클러스터의 경우 고급 옵션 섹션을 확장하여 보안 옵션을 찾습니다.

  5. Standard 클러스터의 경우 클러스터 섹션에서 보안을 클릭합니다.

  6. RBAC용 Google 그룹스 사용 설정 체크박스를 선택합니다.

  7. gke-security-groups@DOMAIN으로 보안 그룹을 입력합니다.

  8. 만들기를 클릭합니다.

기존 클러스터 업데이트

gcloud

기존 클러스터를 업데이트하여 RBAC용 Google 그룹스를 사용 설정하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --security-group="gke-security-groups@DOMAIN"

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • COMPUTE_REGION: 클러스터의 Compute Engine 리전입니다. 영역 클러스터의 경우 --zone=COMPUTE_ZONE을 사용합니다.
  • DOMAIN: 만든 gke-security-groups 그룹의 도메인 이름입니다.

콘솔

기존 클러스터를 업데이트하여 RBAC용 Google 그룹스를 사용 설정하려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 업데이트하려는 클러스터의 이름을 클릭합니다.

  3. 세부정보 탭에서 보안 섹션을 찾습니다.

  4. RBAC용 Google 그룹스 필드에서 RBAC용 Google 그룹스 수정을 클릭합니다.

  5. RBAC용 Google 그룹스 사용 설정 체크박스를 선택합니다.

  6. gke-security-groups@DOMAIN으로 보안 그룹을 입력합니다.

  7. 변경사항 저장을 클릭합니다.

권한 정의 및 할당

RBAC용 Google 그룹스를 만들고 구성한 후 역할 및 역할 바인딩을 사용해서 RBAC 권한을 정의하고 이 권한을 gke-security-groups 그룹의 구성원인 Google 그룹스에 할당합니다. 자세한 내용은 권한 정의 및 할당을 참조하세요.

RBAC용 Google 그룹스 구성 확인

다음 섹션에서는 gcloud CLI 또는 Google Cloud 콘솔을 사용하여 RBAC용 Google 그룹스 구성이 성공했는지 확인하는 방법을 보여줍니다.

gcloud CLI를 사용하여 확인

kubectl can-i 명령어를 실행하여 특정 Kubernetes 리소스에 대해 특정 작업을 실행할 수 있는지 확인합니다. 이 메서드를 사용하면 RBAC 액세스 테스트를 CI/CD 워크플로의 일부로 자동화할 수 있습니다. 예를 들어 다음 명령어는 dev 네임스페이스의 pods 리소스에 대한 get 액세스를 테스트합니다.

kubectl auth can-i get pods \
    --namespace=dev \
    --as=USER \
    --as-group=GROUP

다음을 바꿉니다.

  • USER: 가장할 사용자의 이름(예: gke-user@example.com). 지정된 사용자는 액세스를 테스트하는 그룹의 구성원이어야 합니다.
  • GROUP: 명의 도용할 그룹의 이름(예: gke-dev-users@example.com).

USER에 액세스 권한이 있으면 출력은 yes입니다. 그렇지 않은 경우 출력은 no입니다.

Google Cloud 콘솔을 사용하여 확인

클러스터에 대해 kubectl 명령어를 실행하고 로그를 확인하여 RBAC 액세스를 확인할 수도 있습니다.

시작하기 전에

시작하기 전에 다음 사항을 확인하세요.

  • 테스트하려는 클러스터와 적어도 1시간 동안 상호작용하지 않았습니다(예: kubectl 명령어 실행 안함). 인증은 1시간 동안 캐시됩니다. 캐시된 사용자 인증 정보가 만료되도록 허용하면 요청이 수행될 때 로깅됩니다.
  • 사용자가 gke-security-groups 그룹의 구성원인 그룹스 중 하나의 구성원이고, 일부 Google 그룹스 정보가 로깅됩니다.

로그 사용 설정 및 테스트 명령어 실행

  1. Google Cloud 프로젝트에 데이터 액세스 로깅을 사용 설정합니다. 로깅을 사용 설정하려면 다음 안내를 따르세요.

    1. Google Cloud 콘솔에서 감사 로그 페이지로 이동합니다.

      감사 로그로 이동

    2. 표에서 Kubernetes Engine API를 선택합니다.

    3. 로그 유형 메뉴에서 다음을 선택합니다.

      • 관리자 읽기
      • 데이터 읽기
      • 데이터 쓰기
    4. 저장을 클릭합니다.

    감사 로깅 사용 설정에 대한 자세한 내용은 Cloud 콘솔로 데이터 액세스 로그 구성을 참조하세요.

  2. 다음과 같이 클러스터에서 kubectl을 사용하여 명령어를 실행합니다.

    kubectl create ns helloworld
    
  3. 로그 탐색기 페이지에서 커스텀 쿼리를 입력합니다. 쿼리를 실행하려면 다음 안내를 따르세요.

    1. Google Cloud 콘솔의 로그 탐색기 페이지로 이동합니다.

      로그 탐색기로 이동

    2. 페이지 상단의 쿼리 미리보기 상자에서 화살표를 클릭합니다.

    3. 표시되는 드롭다운 상자에 다음 쿼리를 지정합니다.

      resource.type="k8s_cluster"
      resource.labels.location="CLUSTER_LOCATION"
      resource.labels.cluster_name="CLUSTER_NAME"
      protoPayload.resourceName="authorization.k8s.io/v1beta1/subjectaccessreviews"
      protoPayload.response.spec.user="EMAIL_ADDRESS"
      

      다음을 바꿉니다.

      • CLUSTER_LOCATION: 클러스터의 리전 또는 영역입니다.
      • CLUSTER_NAME: 클러스터 이름입니다.
      • EMAIL_ADDRESS: Google 계정의 등록된 이메일 주소입니다.
    4. 쿼리 실행을 선택합니다. 결과가 하나 이상 표시됩니다. 결과가 없으면 기간을 늘려보세요.

    5. 검사할 클러스터를 선택합니다.

    6. 중첩 필드 확장을 클릭합니다.

    7. protoPayload.request.spec.group 필드에는 다음과 같은 그룹이 포함됩니다.

      • 그룹이 gke-security-group에 속합니다.
      • 사용자는 그룹에 속합니다.

      이 목록은 사용자가 속한 그룹 집합과 일치해야 합니다. 그룹이 없으면 그룹 설정 방법에 문제가 있을 수 있습니다.

  4. 선택적으로 추가 요금이 청구되지 않도록 데이터 액세스 로깅을 이전 설정으로 복원합니다.

다음 단계