每個主體 (使用者或群組) 都必須完成兩步驟程序,才能存取全域 API 伺服器。使用 IAMRoleBinding
,在全域 API 伺服器中,將權限授予預先定義的 IAMRole
。所有角色和角色繫結都是全域資源。
角色 (IO、PA、AO) 並非角色,而是對應至特定權限並指派給個別使用者的使用者角色集合。
設定角色繫結
您可以設定角色繫結,讓團隊成員在機構或專案層級存取資源。
如要取得設定角色繫結所需的權限,請要求機構 IAM 管理員授予您機構 IAM 管理員角色。
如要指派角色給授權成員,請按照下列步驟操作:
控制台
- 登入 GDC 控制台。
- 從範圍挑選器選取機構或專案。
- 如要為機構設定角色繫結,請選取機構。
- 如要為專案設定角色繫結,請選取專案。
- 在導覽選單中,依序點選「Identity and Access」>「Access」。
- 按一下 [Add Member] (新增成員)。
- 選擇要新增個別使用者或群組。
- 在「Identity provider」清單中,選取身分識別提供者。
- 在「使用者名稱或群組別名」欄位中,輸入使用者名稱、電子郵件地址或別名。
- 在「角色」清單中,選取要指派給使用者或群組的角色,例如機構層級的「機構檢視者」或專案層級的「專案建立者」。
- 按一下「新增」。
該成員會顯示在「已授權成員」清單中。
gdcloud
請確認已安裝 gcloud CLI。
使用
gdcloud auth login
指令登入,向身分識別提供者進行驗證。詳情請參閱 gdcloud CLI 驗證。設定角色繫結。
為機構設定角色繫結:
gdcloud organizations add-iam-policy-binding ORGANIZATION \ --member=USER_ACCOUNT \ --role=ROLE
請替換下列變數:
ORGANIZATION
:您要為哪個機構設定角色繫結。USER_ACCOUNT
:要授予角色的使用者帳戶。這個標記接受含有身分識別提供者前置字元 (user:idpprefix-user@example.com
) 的使用者電子郵件地址,或含有服務帳戶專案 (serviceAccount:projectName:serviceAccountName
) 的服務帳戶名稱。ROLE
:要指派給使用者的預先定義或自訂角色名稱。
為專案設定角色繫結:
gdcloud projects add-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE
請替換下列變數:
PROJECT
:您要為哪個專案設定角色繫結。USER_ACCOUNT
:要授予角色的使用者帳戶。這個標記接受含有身分識別提供者前置字元 (user:idpprefix-user@example.com
) 的使用者電子郵件地址,或含有服務帳戶專案 (serviceAccount:projectName:serviceAccountName
) 的服務帳戶名稱。ROLE
:要指派給使用者的預先定義或自訂角色名稱。
API
匯出您使用的使用者憑證:
export GLOBAL_API_SERVER_KUBECONFIG=GLOBAL_API_SERVER_KUBECONFIG
匯出要指派角色的使用者帳戶,包括身分識別提供者前置字元 (例如
idpprefix-paul@example.com
):export USERNAME=IDP_PREFIX-USER_EMAIL
匯出使用者需要的角色名稱,例如
project-creator
。請參閱「角色定義」一文,找出相應角色。export ROLE_NAME=ROLE_NAME
匯出必須建立繫結的命名空間:
export BINDING_NAMESPACE=BINDING_NAMESPACE
如果是機構範圍的角色,請將 BINDING_NAMESPACE 替換為
platform
;如果是專案範圍的角色,請替換為目標專案的命名空間名稱。如需角色及其範圍的清單,請參閱「角色定義」。
建立及套用
IAMRoleBinding
自訂資源:cat <<EOF | kubectl --kubeconfig ${GLOBAL_API_SERVER_KUBECONFIG} apply -f - apiVersion: iam.global.gdc.goog/v1 kind: IAMRoleBinding metadata: name: ${USERNAME}-${ROLE_NAME}-binding namespace: ${BINDING_NAMESPACE} spec: roleRef: apiGroup: iam.global.gdc.goog kind: IAMRole name: ${ROLE_NAME} subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: ${USERNAME} EOF
移除角色繫結
不再需要存取權時,請移除成員和相關聯的角色、權限和存取權。
如要移除成員,請按照下列步驟操作:
控制台
- 登入 GDC 控制台。
- 在導覽選單中,依序點選「Identity and Access」>「Access」。
- 在「授權成員」清單中選取成員。
- 按一下 [Remove member]。
- 系統提示時,按一下「移除成員」加以確認。
gdcloud
請確認已安裝 gcloud CLI。
使用
gdcloud auth login
指令登入,向身分識別提供者進行驗證。詳情請參閱 gdcloud CLI 驗證。移除角色繫結。
移除機構的角色繫結:
gdcloud organizations remove-iam-policy-binding ORGANIZATION \ --member=USER_ACCOUNT \ --role=ROLE
請替換下列變數:
ORGANIZATION
:您要從中移除角色繫結的機構名稱。USER_ACCOUNT
:要移除角色的使用者帳戶。這個標記接受含有身分識別提供者前置字元 (user:idpprefix-user@example.com
) 的使用者電子郵件地址,或含有服務帳戶專案 (serviceAccount:projectName:serviceAccountName
) 的服務帳戶名稱。ROLE
:要從使用者帳戶中移除的預先定義或自訂角色名稱。
移除專案的角色繫結:
gdcloud projects remove-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE
請替換下列變數:
PROJECT
:您要從中移除角色繫結的專案名稱。USER_ACCOUNT
:要移除角色的使用者帳戶。這個標記接受含有身分識別提供者前置字元 (user:idpprefix-user@example.com
) 的使用者電子郵件地址,或含有服務帳戶專案 (serviceAccount:projectName:serviceAccountName
) 的服務帳戶名稱。ROLE
:要從使用者帳戶中移除的預先定義或自訂角色名稱。
API
刪除 IAMRoleBinding
,撤銷授予 PA 帳戶的權限:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG \
delete iamrolebinding USERNAME-ROLE_NAME-binding -n BINDING_NAMESPACE
更改下列內容:
- GLOBAL_API_SERVER_KUBECONFIG:用於存取 Global API 伺服器的 kubeconfig 檔案路徑。
- USERNAME:要移除角色的使用者帳戶,包括身分識別提供者前置字串 (例如
idpprefix-paul@example.com
)。 - ROLE_NAME:要移除的角色名稱,例如
project-creator
。 - BINDING_NAMESPACE:如果是機構範圍的角色,請替換為
platform
;如果是專案範圍的角色,請替換為目標專案的命名空間名稱。
撤銷使用者存取權
如果成員離開貴機構或團隊,您可以撤銷他們對 Google Distributed Cloud (GDC) Air-gapped 的存取權。撤銷使用者的存取權後,系統會將他們登出 Distributed Cloud,並移除其角色和權限。您也可以列出使用者在開始和結束時間內的活動和工作階段。
如要撤銷使用者在整個 GDC 領域的存取權,必須分別撤銷每個區域的存取權。請為每個區域完成下列步驟:
請確認您登入的是要撤銷存取權的區域。舉例來說,請為 gdcloud CLI 設定區域網址,然後登入:
gdcloud config set organization_console_url ZONE_URL gdcloud auth login
將
ZONE_URL
替換為要撤銷使用者存取權的區域 GDC 控制台網址,類似https://console.ORG_NAME.ZONE_NAME.ORG_SUFFIX
。如要進一步瞭解如何切換區域環境,請參閱跨區域管理資源。
取得撤銷使用者權限所需的權限。請要求機構 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
針對宇宙中的每個區域重複上述步驟。