표준 클러스터에 대한 액세스 관리

이 문서에서는 Google Distributed Cloud (GDC) 에어갭의 표준 클러스터 내에서 액세스 권한을 부여하고 권한을 관리하는 방법을 설명합니다. Standard 클러스터는 프로젝트 범위의 구성 가능한 Kubernetes 환경으로, 최소한의 기본 서비스를 통해 맞춤 워크로드에 더 큰 유연성과 제어 기능을 제공합니다.

클러스터 만들기 또는 삭제와 같은 표준 클러스터 수명 주기를 관리하는 방법에 대한 자세한 내용은 표준 클러스터 만들기 및 표준 클러스터 삭제를 참고하세요.

표준 클러스터 및 기타 클러스터 유형에 대한 자세한 내용은 Kubernetes 클러스터 구성을 참고하세요.

이 문서는 GDC 프로젝트 내에서 리소스를 관리하고 보호해야 하는 애플리케이션 운영자 그룹(예: 개발자 운영 또는 데이터 과학자)을 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.

시작하기 전에

표준 클러스터에 대한 액세스 권한을 관리하려면 필요한 권한이 있어야 하며 환경을 준비해야 합니다.

IAM 역할 요청

표준 클러스터에 대한 액세스를 관리하는 데 필요한 권한을 얻으려면 수행해야 하는 작업에 따라 다음 역할을 요청하세요.

  • 표준 클러스터의 프로젝트 수준 IAM 정책 바인딩을 부여하고 관리하려면 IAM 조직 관리자에게 연락하여 IAM 프로젝트 관리자 (project-iam-admin) 역할을 요청하세요.
  • 클러스터 내 Kubernetes 역할 기반 액세스 제어 (RBAC)를 관리하고 표준 클러스터 내에 워크로드를 배포하려면 IAM 프로젝트 관리자에게 클러스터 관리자 (cluster-admin) 역할을 부여해 달라고 요청하세요.

개발 환경 준비

표준 클러스터 액세스 권한 부여

IAM 프로젝트 관리자 (project-iam-admin) 역할이 있는 사용자는 표준 클러스터 내에서 액세스를 관리하는 데 필요한 역할을 다른 사용자에게 부여할 수 있습니다.

  1. gdcloud CLI를 사용하여 구성된 ID 공급자로 로그인합니다.

  2. 사용자에게 프로젝트의 클러스터 관리자 (cluster-admin) 역할을 부여합니다. 이 명령어는 사용자를 역할에 바인딩하여 표준 클러스터 내에서 액세스를 관리할 수 있도록 합니다.

    역할에 대한 자세한 내용은 사전 정의된 역할 설명 및 프로젝트의 역할 정의를 참고하세요.

    gdcloud projects add-iam-policy-binding PROJECT \
      --role=ROLE \
      --member=user:USER_ACCOUNT
    

    다음 변수를 바꿉니다.

    • PROJECT: 표준 클러스터가 있는 프로젝트의 이름입니다.
    • ROLE: 부여할 역할의 이름입니다(예: cluster-admin).
    • USER_ACCOUNT: 역할을 부여할 사용자 계정입니다. 조직과 연결된 ID 공급업체 접두사 (예: idpprefix-user@example.com)가 포함됩니다. 사용되는 특정 접두사는 조직의 IdP 구성에 따라 다릅니다. 자세한 내용은 ID 공급업체에 연결을 참고하세요.

    다음 예시에서는 ID 제공업체 접두사가 foo 프로젝트의 경우 fop-이라고 가정할 때 user@example.com에 클러스터 관리자 역할을 부여합니다.

    gdcloud projects add-iam-policy-binding foo \
      --role=cluster-admin \
      --member=user:fop-user@example.com
    

표준 클러스터 내 액세스 관리

클러스터 관리자 (cluster-admin) 역할이 있는 사용자는 표준 클러스터 내에서 액세스 권한을 부여할 수 있습니다.

  1. gdcloud CLI를 사용하여 구성된 ID 공급자로 로그인합니다.

  2. --standard 플래그를 사용하여 Standard 클러스터의 kubeconfig 파일을 생성합니다. 이 플래그는 표준 클러스터를 타겟팅하는 데 필요합니다.

    export KUBECONFIG=KUBECONFIG_FILE
    gdcloud clusters get-credentials STANDARD_CLUSTER_NAME --standard --project=PROJECT
    

    다음 변수를 바꿉니다.

    • KUBECONFIG_FILE: kubeconfig 파일의 경로(예: standard-cluster-kubeconfig.yaml)
    • STANDARD_CLUSTER_NAME: 표준 클러스터의 이름입니다.
    • PROJECT: 표준 클러스터가 있는 프로젝트의 이름입니다.
  3. kubectl을 사용하여 표준 클러스터 내에서 권한을 정의합니다.

    cluster-admin 권한이 있는 사용자는 맞춤 Role 및 ClusterRole 객체를 만들 수 있습니다. 이러한 권한을 부여하려면 역할을 사용자 또는 서비스 계정과 같은 특정 주체에 바인딩하는 해당 Rolebinding 및 ClusterRoleBinding 객체를 만들면 됩니다.

    다음 예에서는 kubectl를 사용하여 test 네임스페이스에 test-role라는 샘플 맞춤 Role를 만듭니다.

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: test-role
      namespace: test
    rules:
    - apiGroups:
      - ""
      resources:
      - configmaps
      verbs:
      - get
    EOF
    

    다음 예시에서는 test 네임스페이스에서 Role의 RoleBinding를 test-role로 만듭니다. fop- ID 공급업체 접두사가 있는 alice@example.com 사용자에게 권한을 부여하고 default 네임스페이스의 my-service-account라는 ServiceAccount에도 권한을 부여합니다.

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: test-role-binding
      namespace: test
    subjects:
    - kind: User
      name: fop-alice@example.com
      apiGroup: rbac.authorization.k8s.io
    - kind: ServiceAccount
      name: my-service-account
      namespace: default
    roleRef:
      kind: Role
      name: test-role
      apiGroup: rbac.authorization.k8s.io
    EOF