모든 주체(사용자 또는 그룹)는 Management API 서버 및 Kubernetes 클러스터에 액세스하기 위해 다음 두 단계를 따릅니다.
관리 API 서버 액세스:
ClusterRoleBinding또는RoleBinding를 사용하여 관리 API 서버의 권한이 있는 주체에 미리 정의된ClusterRole를 부여합니다.Kubernetes 클러스터 액세스: 네임스페이스별 액세스 또는 클러스터 전체 액세스 권한을 부여합니다.
네임스페이스별 액세스: 클러스터 내 특정 프로젝트의 네임스페이스에 대한 액세스 권한을 부여하려면
ProjectRole및 해당ProjectRoleBinding을 만듭니다. 이 프로세스는 KubernetesRole및RoleBinding을 클러스터의 KubernetesNamespace에 전파합니다. 이는ProjectRole및ProjectRoleBinding이 연결된Project에 해당합니다.클러스터 전체 액세스: 클러스터 내의 모든 네임스페이스에 대한 액세스 권한을 부여하려면
OrganizationRole및 해당OrganizationRoleBinding을 만듭니다. 이 프로세스는 KubernetesClusterRole및ClusterRoleBinding를 전체 Kubernetes 클러스터에 전파합니다.
이 페이지는 조직 내에서 권한을 관리하는 플랫폼 관리자 그룹의 사용자를 대상으로 합니다.
조직 IAM 관리자와 프로젝트 IAM 관리자 모두 더 많은 프로젝트 역할과 프로젝트 역할 바인딩을 만들어 프로젝트별 권한을 추가로 부여할 수 있습니다. 하지만 조직 IAM 관리자는 모든 프로젝트에 대해 프로젝트 역할과 프로젝트 역할 바인딩을 만들 수 있습니다. 반면 프로젝트 IAM 관리자는 액세스 권한이 있는 프로젝트에 대해서만 프로젝트 역할과 프로젝트 역할 바인딩을 만들 수 있습니다.
시작하기 전에
역할 바인딩을 관리하거나 액세스 권한을 취소하기 전에 필요한 권한을 요청하고 환경을 준비해야 합니다. 필요한 특정 역할은 역할 바인딩을 관리하는지 아니면 사용자 액세스 권한을 취소하는지에 따라 다릅니다.
IAM 역할 요청
조직 IAM 관리자에게 연락하여 수행해야 하는 작업에 따라 역할을 요청하세요.
- 조직 IAM 관리자 (
organization-iam-admin): 조직 및 프로젝트 수준에서 역할 바인딩을 만들고, 업데이트하고, 삭제합니다. - 조직 세션 관리자 (
org-session-admin): 특정 영역 내에서 사용자의 활성 세션 및 액세스 권한을 취소합니다.
개발 환경 준비
명령줄 도구를 사용하여 역할 바인딩을 관리하거나 액세스 권한을 취소하려면 다음 설정을 완료하세요.
역할 바인딩 설정
팀 구성원에게 조직 또는 프로젝트 수준에서 리소스에 대한 액세스 권한을 부여하는 역할 바인딩을 설정할 수 있습니다.
역할 바인딩을 설정하는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 조직 IAM 관리자 역할을 부여해 달라고 요청하세요.
승인된 회원에게 역할을 할당하려면 다음 단계를 따르세요.
콘솔
- GDC 콘솔에 로그인합니다.
- 프로젝트 선택을 클릭하여 조직 또는 프로젝트를 선택합니다.
- 조직의 역할 바인딩을 설정하려면 조직을 선택합니다.
- 프로젝트의 역할 바인딩을 설정하려면 프로젝트를 선택하세요.
- 탐색 메뉴에서 ID 및 액세스 > 액세스를 클릭합니다.
- 구성원 추가를 클릭합니다.
- ID 공급업체 목록에서 ID 공급업체를 선택합니다.
- 개별 사용자 또는 그룹을 추가할지 선택합니다.
- 사용자 이름 또는 그룹 별칭 필드에 사용자 이름, 이메일 주소 또는 별칭을 입력합니다.
- 역할 목록에서 사용자 또는 그룹에 할당할 역할을 선택합니다(예: 조직 수준의 조직 뷰어 또는 프로젝트 수준의 프로젝트 생성자).
- 추가를 클릭합니다.
회원이 승인된 회원 목록에 표시됩니다.
gdcloud
gdcloud CLI가 설치되어 있는지 확인합니다.
gdcloud auth login명령어를 사용하여 ID 공급업체에 인증하여 로그인합니다. 자세한 내용은 gdcloud CLI 인증을 참고하세요.역할 바인딩을 설정합니다.
조직의 역할 바인딩을 설정합니다.
gdcloud organizations add-iam-policy-binding root \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE다음 변수를 바꿉니다.
USER_ACCOUNT: 역할을 부여할 사용자 계정입니다. 이 플래그는 ID 공급자 접두사(user:idpprefix-user@example.com)가 있는 사용자 이메일 주소 또는 서비스 계정 프로젝트(serviceAccount:projectName:serviceAccountName)가 있는 서비스 계정 이름을 허용합니다.ROLE_TYPE: 역할 바인딩을 설정할ClusterRole,Role또는OrganizationRole입니다.ROLE: 사용자에게 할당하려는 사전 정의된 역할 또는 맞춤 역할의 이름입니다 (예:project-creator).
프로젝트의 역할 바인딩을 설정합니다.
gdcloud projects add-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE다음 변수를 바꿉니다.
PROJECT: 역할 바인딩을 설정할 프로젝트의 이름입니다.USER_ACCOUNT: 역할을 부여할 사용자 계정입니다. 이 플래그는 ID 공급자 접두사(user:idpprefix-user@example.com)가 있는 사용자 이메일 주소 또는 서비스 계정 프로젝트(serviceAccount:projectName:serviceAccountName)가 있는 서비스 계정 이름을 허용합니다.ROLE_TYPE: 역할 바인딩을 설정할Role또는ProjectRole입니다.ROLE: 사용자에게 할당하려는 사전 정의된 역할 또는 맞춤 역할의 이름입니다 (예:project-viewer).
API
역할 바인딩의 환경 변수를 내보냅니다.
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG export USERNAME=IDP_PREFIX-USERNAME export ROLE_NAME=ROLE_NAME export USER_EMAIL=IDP_PREFIX-USER_EMAIL다음을 바꿉니다.
YOUR_IAM_ADMIN_KUBECONFIG: IAM 관리자의 kubeconfig 파일 경로입니다.IDP_PREFIX: ID 공급업체 접두사USERNAME:@기호 앞의 사용자 이메일 주소 중 사용자 이름 부분 (예:paul@example.com의paul)ROLE_NAME: 사용자에게 필요한 역할의 이름입니다(예:project-creator). 역할에 관한 자세한 내용은 역할 정의를 참고하세요.USER_EMAIL: 역할을 할당할 사용자 계정의 이메일 주소 (예:paul@example.com)
ClusterRole,Role,ProjectRole또는OrganizationRole에 사용자를 할당합니다.사용자를
ClusterRole에 할당합니다.kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ clusterrolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USER_EMAIL}ClusterRole에ClusterRoleBinding대신RoleBinding이 필요한 경우 역할 정의를 참고하여 역할에 필요한 바인딩 유형을 확인하고 네임스페이스gpc-system에 RoleBinding을 만드세요.kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USER_EMAIL} --namespace=gpc-system사용자를
Role에 할당합니다.바인딩을 만들어야 하는 네임스페이스를 내보냅니다.
export BINDING_NAMESPACE=BINDING_NAMESPACE다음 명령어를 실행하여
RoleBinding를 만듭니다.kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --role=${ROLE_NAME} --user=${USER_EMAIL} --namespace=${BINDING_NAMESPACE}
사용자를
ProjectRole에 할당합니다.projectrolebinding.yaml파일을 만듭니다.apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectRoleBinding metadata: name: BINDING_NAME namespace: PROJECT_NAME spec: roleRef: apiGroup: resourcemanager.gdc.goog kind: ProjectRole name: ROLE_NAME subjects: - apiGroup: rbac.authorization.k8s.io kind: USER_KIND name: IDP_PREFIX-USER_EMAIL다음을 바꿉니다.
BINDING_NAME: 사용자가 맞춤설정할 수 있는 바인딩의 이름 (예:user-project-creator-binding)PROJECT_NAME: 역할을 부여할 프로젝트의 이름입니다.ROLE_NAME: 사용자에게 할당할ProjectRole의 이름입니다.USER_KIND: 사용자 종류입니다.User,Group또는ServiceAccount일 수 있습니다.IDP_PREFIX: ID 공급업체 접두사USER_EMAIL: 역할을 할당할 사용자 계정의 이메일 주소입니다 (예:paul@example.com).
projectrolebinding.yaml파일을 적용합니다.kubectl create -f projectrolebinding.yaml
OrganizationRole에 사용자 할당:organizationrolebinding.yaml파일을 만듭니다.apiVersion: resourcemanager.gdc.goog/v1 kind: OrganizationRoleBinding metadata: name: BINDING_NAME namespace: gpc-system spec: roleRef: apiGroup: resourcemanager.gdc.goog kind: OrganizationRole name: ROLE_NAME subjects: - apiGroup: rbac.authorization.k8s.io kind: USER_KIND name: IDP_PREFIX-USER_EMAIL다음을 바꿉니다.
BINDING_NAME: 사용자가 맞춤설정할 수 있는 바인딩의 이름 (예:user-organization-creator-binding)ROLE_NAME: 사용자에게 할당할OrganizationRole의 이름입니다.USER_KIND: 사용자 종류입니다.User,Group또는ServiceAccount일 수 있습니다.IDP_PREFIX: ID 공급업체 접두사USER_EMAIL: 역할을 할당할 사용자 계정의 이메일 주소입니다 (예:paul@example.com).
organizationrolebinding.yamlYAML 파일을 적용합니다.kubectl create -f organizationrolebinding.yaml
역할 바인딩 삭제
액세스가 더 이상 필요하지 않으면 구성원과 연결된 역할, 권한, 액세스를 삭제합니다.
구성원을 삭제하려면 다음 단계를 따르세요.
콘솔
- GDC 콘솔에 로그인합니다.
- 탐색 메뉴에서 ID 및 액세스 > 액세스를 클릭합니다.
- 승인된 구성원 목록에서 구성원을 선택합니다.
- 구성원 삭제를 클릭합니다.
- 메시지가 표시되면 구성원 삭제를 클릭하여 확인합니다.
gdcloud
gdcloud CLI가 설치되어 있는지 확인합니다.
gdcloud auth login명령어를 사용하여 ID 공급업체에 인증하여 로그인합니다. 자세한 내용은 gdcloud CLI 인증을 참고하세요.역할 바인딩을 삭제합니다.
조직의 역할 바인딩을 삭제합니다.
gdcloud organizations remove-iam-policy-binding root \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE다음 변수를 바꿉니다.
USER_ACCOUNT: 역할을 삭제할 사용자 계정입니다. 이 플래그는 ID 공급자 접두사(user:idpprefix-user@example.com)가 있는 사용자 이메일 주소 또는 서비스 계정 프로젝트(serviceAccount:projectName:serviceAccountName)가 있는 서비스 계정 이름을 허용합니다.ROLE_TYPE: 역할 바인딩을 삭제할ClusterRole,Role또는OrganizationRole입니다.ROLE: 사용자 계정에서 삭제할 사전 정의된 역할 또는 맞춤 역할의 이름입니다 (예:project-creator).
프로젝트의 역할 바인딩을 삭제합니다.
gdcloud projects remove-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE다음 변수를 바꿉니다.
PROJECT: 역할 바인딩을 삭제할 프로젝트의 이름입니다.USER_ACCOUNT: 역할을 삭제할 사용자 계정입니다. 이 플래그는 ID 공급자 접두사(user:idpprefix-user@example.com)가 있는 사용자 이메일 주소 또는 서비스 계정 프로젝트(serviceAccount:projectName:serviceAccountName)가 있는 서비스 계정 이름을 허용합니다.ROLE_TYPE: 역할 바인딩을 삭제할Role또는ProjectRole입니다.ROLE: 사용자 계정에서 삭제할 사전 정의된 역할 또는 맞춤 역할의 이름입니다 (예:project-viewer).
API
역할 바인딩의 환경 변수를 내보냅니다.
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG export USERNAME=IDP_PREFIX-USERNAME export BINDING_NAMESPACE=BINDING_NAMESPACE다음을 바꿉니다.
YOUR_IAM_ADMIN_KUBECONFIG: IAM 관리자의 kubeconfig 파일 경로입니다.IDP_PREFIX: ID 공급업체 접두사USERNAME:@기호 앞의 사용자 이메일 주소 중 사용자 이름 부분 (예:paul@example.com의paul)BINDING_NAMESPACE: 바인딩이 삭제되는 네임스페이스입니다.
ClusterRoleBinding,RoleBinding,ProjectRoleBinding또는OrganizationRoleBinding를 삭제하여 사용자 계정에 부여된 권한을 취소합니다.사용자 계정에서
ClusterRoleBinding를 삭제합니다.kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete clusterrolebinding ${USERNAME}-pa사용자 계정에서
RoleBinding를 삭제합니다.kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete rolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}사용자 계정에서
ProjectRoleBinding를 삭제합니다.kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete projectrolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}사용자 계정에서
OrganizationRoleBinding를 삭제합니다.kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete organizationrolebinding ${USERNAME}-pa \ --namespace=gpc-system
사용자 액세스 권한 취소
구성원이 조직이나 팀을 떠나면 Google Distributed Cloud (GDC) 에어갭 어플라이언스에 대한 액세스 권한을 취소할 수 있습니다. 사용자의 액세스 권한을 취소하면 GDC 에어 갭 어플라이언스에서 로그아웃되고 역할과 권한이 삭제됩니다. 시작 시간과 종료 시간을 기준으로 사용자의 활동과 세션을 나열할 수도 있습니다.
사용자의 액세스 권한을 취소하려면 다음 단계를 따르세요.
사용자를 취소하는 데 필요한 권한을 가져옵니다. 조직 IAM 관리자에게 조직 세션 관리자(
org-session-admin) 역할을 부여해 달라고 요청하세요.사용자의 액세스 권한을 취소합니다.
gdcloud admin auth revoke --accounts USER_EMAILUSER_EMAIL를 액세스 권한을 취소할 사용자의 이메일로 바꿉니다.
명령어를 실행하면 다음과 비슷한 출력이 표시됩니다. 이 예에서는 사용자
ariel@example.com의 액세스 권한을 취소합니다.Success: NUMBER of sessions revoked for user ariel@example.com이 예에서 변수 NUMBER는 사용자가 보유한 활성 세션 수를 나타냅니다.
gdcloud admin auth revoke명령어를 다시 실행하여 사용자의 액세스 권한이 취소되었는지 확인합니다. 성공하면 다음이 표시됩니다.No sessions found for account: ariel@example.com
취소된 모든 사용자 나열
취소된 모든 사용자와 해당 활동 및 세션을 보려면 다음 단계를 따르세요.
시작 시간과 종료 시간으로 취소된 모든 사용자를 나열합니다.
gdcloud admin auth list --format="csv(ACCOUNT, IDENTITY_PROVIDER, CREATION_TIME, EXPIRATION_TIME)"성공하면 다음과 비슷한 출력이 표시됩니다.
account,identity_provider,creation_time,expiration_time ariel@example.com,example-idp,2023-02-15 22:10:52,2023-02-15 23:10:52