Distributed Cloud 사용자 관리

이 페이지에서는 Distributed Cloud에서 사용자를 관리하는 방법을 설명합니다.

Distributed Cloud 클러스터를 만들면 클러스터를 만드는 데 사용한 사용자 계정에만 해당 클러스터에 대한 액세스 권한이 부여됩니다. 더 많은 사용자에게 클러스터 액세스 권한을 부여하려면 다음 중 하나를 수행하면 됩니다.

Kubernetes RBAC를 사용하여 필요한 권한 부여

이 섹션에서는 Kubernetes 역할 기반 액세스 제어 (RBAC)를 사용하여 사용자의 비즈니스 요구사항에 필요한 권한을 사용자의 계정에 부여하는 방법을 설명합니다. 이러한 권한은 여러 역할로 캡슐화됩니다. 사용자 계정에 적절한 역할을 부여한 후 해당 계정을 타겟 Distributed Cloud 클러스터에 추가할 수 있습니다.

Distributed Cloud는 Distributed Cloud 클러스터에서 Kubernetes RBAC와 함께 사용할 Identity and Access Management 그룹 또는 서드 파티 ID 공급업체를 지원하지 않습니다.

사용자에게 역할을 부여하려면 다음 Kubernetes 리소스를 사용해야 합니다.

  • ClusterRole: 클러스터의 모든 네임스페이스에 권한 집합을 적용할 수 있으며 클러스터 전체 리소스에 대한 액세스 권한도 부여합니다.
  • ClusterRoleBinding: ClusterRole 리소스를 사용자 계정에 바인딩합니다.
  • Role: 특정 네임스페이스에 권한 집합을 적용할 수 있습니다.
  • RoleBinding: 특정 네임스페이스의 사용자 계정에 Role 또는 ClusterRole 리소스를 바인딩합니다.

클러스터 관리자 권한 부여

Distributed Cloud 클러스터를 만들면 클러스터를 만드는 데 사용한 사용자 계정이 자동으로 클러스터 관리자가 됩니다. 추가 사용자에게 클러스터 관리자 권한을 부여하려면 ClusterRoleBinding 리소스를 만들어 대상 사용자 계정을 cluster-admin 역할에 바인딩하고 클러스터에 적용합니다.

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: BINDING_NAME
subjects:
  kind: User
  name: ACCOUNT_NAME
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io    

다음을 바꿉니다.

  • BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.
  • ACCOUNT_NAME: 대상 사용자 계정의 이름입니다.

다음 kubectl 명령어를 사용할 수도 있습니다.

kubectl create clusterrolebinding "BINDING_NAME" \
  --clusterrole cluster-admin --user "ACCOUNT_NAME"

다음을 바꿉니다.

  • BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.
  • ACCOUNT_NAME: 대상 사용자 계정의 이름입니다.

애플리케이션 개발자 권한 부여

애플리케이션 개발자에게 대상 클러스터에 워크로드를 배포하는 데 필요한 권한을 부여하려면 다음 단계를 따르세요.

  1. 타겟 네임스페이스에서 포드, 서비스, 배포를 만들고 관리할 수 있는 권한을 부여하는 Role 리소스를 만들고 클러스터에 적용합니다.

    apiVersion: rbac.authorization.k8s.io/v1
     kind: Role
     metadata:
       namespace: NAMESPACE
       name: ROLE_NAME
     rules:
       apiGroups: ["apps", ""]
       resources: ["pods", "deployments", "services"]
       verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
    

    다음을 바꿉니다.

    • NAMESPACE: 타겟 네임스페이스의 이름입니다.
    • ROLE_NAME: 이 역할을 고유하게 식별하는 이름입니다.
  2. 이전 단계에서 만든 역할에 타겟 사용자 계정을 바인딩하는 RoleBinding 리소스를 만들고 클러스터에 적용합니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
     namespace: NAMESPACE
     name: BINDING_NAME
    subjects:
     kind: User
     name: ACCOUNT_NAME
     kind: User
     name: ACCOUNT_NAME
    roleRef:
     kind: Role
     name: ROLE_NAME
     apiGroup: rbac.authorization.k8s.io  
    

    다음을 바꿉니다.

    • BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.
    • NAMESPACE: 타겟 네임스페이스의 이름입니다.
    • ACCOUNT_NAME: 대상 사용자 계정의 이름입니다.
    • ROLE_NAME: 대상 역할의 이름입니다.

Cloud Build 서비스 에이전트에 권한 부여

Cloud Build 서비스 에이전트에 대상 클러스터에 워크로드를 배포하는 데 필요한 권한을 부여하려면 다음 단계를 따르세요.

  1. 타겟 네임스페이스에서 포드, 서비스, 배포를 만들고 관리할 수 있는 권한을 부여하는 Role 리소스를 만들고 클러스터에 적용합니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
     namespace: NAMESPACE
     name: ROLE_NAME
    rules:
     apiGroups: ["apps", ""]
     resources: ["pods", "deployments", "services"]
     verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
    

    다음을 바꿉니다.

    • NAMESPACE: 타겟 네임스페이스의 이름입니다.
    • ROLE_NAME: 이 역할을 고유하게 식별하는 이름입니다.
  2. 타겟 Cloud Build 서비스 에이전트 계정을 이전 단계에서 만든 역할에 바인딩하고 클러스터에 적용하는 RoleBinding 리소스를 만듭니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
     namespace: NAMESPACE
     name: BINDING_NAME
    subjects:
     kind: User
     name: PROJECT_ID@cloudbuild.gserviceaccount.com
    roleRef:
     kind: Role
     name: ROLE_NAME
     apiGroup: rbac.authorization.k8s.io  
    

    다음을 바꿉니다.

    • BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.
    • NAMESPACE: 타겟 네임스페이스의 이름입니다.
    • PROJECT_ID: 대상 Google Cloud 프로젝트의 ID입니다.
    • ROLE_NAME: 대상 역할의 이름입니다.

Cloud Build 서비스 에이전트에게 대상 클러스터의 모든 네임스페이스에서 워크로드를 배포하고 관리할 권한을 부여해야 하는 경우 RoleRoleBinding 리소스 대신 ClusterRoleClusterRoleBinding 리소스를 만듭니다.

클러스터 정보를 볼 수 있는 권한 부여

Google Cloud 콘솔에서 클러스터에 관한 세부정보를 보는 데 필요한 권한을 부여하려면 다음 단계를 따르세요.

  1. Connect Agent가 Google Cloud 콘솔에서 클러스터 정보를 봐야 하는 사용자를 가장할 수 있는 ClusterRole 리소스를 만듭니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
     name: ROLE_NAME
    rules:
     apiGroups: [""]
     resources: ["users"]
     verbs: ["impersonate"]
     resourceNames: ["ACCOUNT_NAME"]
    

    다음을 바꿉니다.

    • ROLE_NAME: 대상 역할의 이름입니다.
    • ACCOUNT_NAME: 대상 사용자 계정의 이름입니다.
  2. Connect Agent Service Agent 계정을 이전 단계에서 만든 역할에 바인딩하고 클러스터에 적용하는 ClusterRoleBinding 리소스를 만듭니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
     name: BINDING_NAME
    subjects:
     kind: ServiceAccount
     name: ACCOUNT_NAME
    roleRef:
     kind: ClusterRole
     name: ROLE_NAME
     apiGroup: rbac.authorization.k8s.io
    

    다음을 바꿉니다.

    • BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.
    • ACCOUNT_NAME: 대상 서비스 사용자 계정의 이름입니다.
    • ROLE_NAME: 대상 역할의 이름입니다.

영향을 받는 사용자마다 별도의 ClusterRoleClusterRoleBinding 리소스 쌍을 만들어야 합니다.

kubectl 명령줄 도구를 사용하여 클러스터 정보를 보는 데 필요한 권한을 다음과 같이 부여할 수도 있습니다.

  1. Connect Agent가 Google Cloud 콘솔에서 클러스터 정보를 봐야 하는 사용자를 가장할 수 있는 ClusterRole 리소스를 만듭니다.

    kubectl create clusterrole "ROLE_NAME" --verb impersonate \
     --resource users --resource-name "ACCOUNT_NAME"
    

    다음을 바꿉니다.

    • ROLE_NAME: 대상 역할의 이름입니다.
    • ACCOUNT_NAME: 대상 서비스 사용자 계정의 이름입니다.
  2. Connect Agent Service Agent 계정을 이전 단계에서 만든 역할에 바인딩하고 클러스터에 적용하는 ClusterRoleBinding 리소스를 만듭니다.

    kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \
     "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
    

    다음을 바꿉니다.

    • BINDING_NAME: 이 역할 바인딩을 고유하게 식별하는 이름입니다.
    • ACCOUNT_NAME: 대상 서비스 사용자 계정의 이름입니다.
    • ROLE_NAME: 대상 역할의 이름입니다.

연결 게이트웨이를 사용하여 Distributed Cloud 클러스터에 액세스

연결 게이트웨이를 사용하여 Distributed Cloud 클러스터에 액세스할 수 있습니다. 커넥트 게이트웨이 사용자는 비즈니스 요구사항에 따라 다음 역할 중 하나 이상이 필요합니다.

  • Connect Gateway Admin (roles/gkehub.gatewayAdmin): connect gateway API에 대한 액세스 권한을 부여합니다. 이렇게 하면 클러스터 관리에 kubectl 명령줄 도구를 사용할 수 있습니다.
  • 게이트웨이 게이트웨이 편집자 (roles/gkehub.gatewayEditor): 클러스터에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.
  • Connect Gateway 리더 (roles/gkehub.gatewayReader): 클러스터에 대한 읽기 전용 액세스 권한을 부여합니다.
  • GKE 허브 뷰어 (roles/gkehub.viewer): 클러스터에서 kubeconfig 파일을 가져올 수 있는 권한을 부여합니다.

Connect 게이트웨이 사용에 관한 자세한 내용은 다음을 참고하세요.