每個主體 (使用者或群組) 都必須經過兩步驟程序,才能存取 Management API 伺服器和 Kubernetes 叢集:
管理 API 伺服器存取權:使用
ClusterRoleBinding
或RoleBinding
,在管理 API 伺服器中授予主體權限,以存取預先定義的ClusterRole
。Kubernetes 叢集存取權:授予命名空間專屬存取權或叢集範圍存取權。
針對特定命名空間授予存取權:如要授予叢集中特定專案命名空間的存取權,請建立
ProjectRole
和對應的ProjectRoleBinding
。這個程序會將 KubernetesRole
和RoleBinding
傳播至叢集中的 KubernetesNamespace
,這對應於與ProjectRole
和ProjectRoleBinding
相關聯的Project
。全叢集存取權:如要授予叢集中所有命名空間的存取權,請建立
OrganizationRole
和對應的OrganizationRoleBinding
。這個程序會將 KubernetesClusterRole
和ClusterRoleBinding
傳播至整個 Kubernetes 叢集。
角色 (IO、PA、AO) 並非角色,而是對應至特定權限並指派給個別使用者的使用者角色集合。
機構身分與存取權管理員和專案身分與存取權管理員都可以建立更多專案角色和專案角色繫結,以授予專案專屬的額外權限。不過,機構 IAM 管理員可以為任何專案建立專案角色和專案角色繫結。另一方面,專案 IAM 管理員只能為他們有權存取的專案建立專案角色和專案角色繫結。
設定角色繫結
您可以設定角色繫結,讓團隊成員在機構或專案層級存取資源。
如要取得設定角色繫結所需的權限,請要求機構 IAM 管理員授予您機構 IAM 管理員角色。
如要指派角色給授權成員,請按照下列步驟操作:
控制台
- 登入 GDC 控制台。
- 按一下「選取專案」,選取機構或專案。
- 如要為機構設定角色繫結,請選取機構。
- 如要為專案設定角色繫結,請選取專案。
- 在導覽選單中,依序點選「Identity and Access」>「Access」。
- 按一下「新增成員」。
- 在「Identity provider」(識別資訊提供者) 清單中,選取識別資訊提供者。
- 選擇要新增個別使用者或群組。
- 在「使用者名稱或群組別名」欄位中,輸入使用者名稱、電子郵件地址或別名。
- 在「角色」清單中,選取要指派給使用者或群組的角色,例如機構層級的「機構檢視者」或專案層級的「專案建立者」。
- 按一下「新增」。
該成員會顯示在「已授權成員」清單中。
gdcloud
請確認已安裝 gcloud CLI。
使用
gdcloud auth login
指令登入,向身分識別提供者驗證身分。詳情請參閱 gdcloud CLI 驗證。設定角色繫結。
為機構設定角色繫結:
gdcloud organizations add-iam-policy-binding root \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE
請替換下列變數:
USER_ACCOUNT
:要授予角色的使用者帳戶。這個標記接受含有身分識別提供者前置字元 (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
:要授予角色的使用者帳戶。這個標記接受含有身分識別提供者前置字元 (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
匯出要指派角色的使用者帳戶,包括身分識別提供者前置字元 (例如
idpprefix-paul@example.com
):export USERNAME=IDP_PREFIX-USER_EMAIL
匯出使用者需要的角色名稱,例如
project-creator
。如要瞭解角色詳情,請參閱「角色定義」。export ROLE_NAME=ROLE_NAME
將使用者指派給
ClusterRole
、Role
、ProjectRole
或OrganizationRole
:將使用者指派給
ClusterRole
:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ clusterrolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME}
如果
ClusterRole
需要RoleBinding
而非ClusterRoleBinding
,請參閱「角色定義」,瞭解角色需要的繫結類型,並在gpc-system
命名空間中建立 RoleBinding:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME} --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=${USERNAME} --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: USERNAME
更改下列內容:
BINDING_NAME
:使用者可自訂的繫結名稱 (例如user-project-creator-binding
)。PROJECT_NAME
:您要授予角色的專案名稱。ROLE_NAME
:您要指派給使用者的ProjectRole
名稱。USER_KIND
:使用者類型,可以是User
、Group
或ServiceAccount
。USERNAME
:您要指派角色的使用者電子郵件地址,包括身分識別提供者前置字元 (例如idpprefix-paul@example.com
)。這必須與匯出的USERNAME
相符。
套用
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: USERNAME
更改下列內容:
BINDING_NAME
:使用者可自訂的繫結名稱 (例如user-organization-creator-binding
)。ROLE_NAME
:您要指派給使用者的OrganizationRole
名稱。USER_KIND
:使用者類型,可以是User
、Group
或ServiceAccount
。USERNAME
:您要指派角色的使用者電子郵件地址,包括身分識別提供者前置字元 (例如idpprefix-paul@example.com
)。這必須與匯出的USERNAME
相符。
套用
organizationrolebinding.yaml
YAML 檔案:kubectl create -f organizationrolebinding.yaml
移除角色繫結
不再需要存取權時,請移除成員和相關聯的角色、權限和存取權。
如要移除成員,請按照下列步驟操作:
控制台
- 登入 GDC 控制台。
- 在導覽選單中,依序點選「Identity and Access」>「Access」。
- 在「授權成員」清單中選取成員。
- 按一下 [Remove member]。
- 系統提示時,按一下「移除成員」加以確認。
gdcloud
請確認已安裝 gcloud CLI。
使用
gdcloud auth login
指令登入,透過身分識別提供者進行驗證。詳情請參閱 gdcloud CLI 驗證。移除角色繫結。
移除機構的角色繫結:
gdcloud organizations remove-iam-policy-binding root \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE
請替換下列變數:
USER_ACCOUNT
:要移除角色的使用者帳戶。這個標記接受含有身分識別提供者前置字元 (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
:要移除角色的使用者帳戶。這個標記接受含有身分識別提供者前置字元 (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
匯出要移除角色的使用者帳戶,包括身分識別提供者前置字元 (例如
idpprefix-paul@example.com
):export USERNAME=IDP_PREFIX-USER_EMAIL
匯出要移除繫結的命名空間:
export BINDING_NAMESPACE=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_EMAIL
將 USER_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