授予及撤銷存取權

每個主體 (使用者或群組) 都必須完成兩步驟程序,才能存取全域 API 伺服器。使用 IAMRoleBinding,在全域 API 伺服器中,將權限授予預先定義的 IAMRole。所有角色和角色繫結都是全域資源。

角色 (IO、PA、AO) 並非角色,而是對應至特定權限並指派給個別使用者的使用者角色集合。

設定角色繫結

您可以設定角色繫結,讓團隊成員在機構或專案層級存取資源。

如要取得設定角色繫結所需的權限,請要求機構 IAM 管理員授予您機構 IAM 管理員角色。

如要指派角色給授權成員,請按照下列步驟操作:

控制台

  1. 登入 GDC 控制台。
  2. 從範圍挑選器選取機構或專案。
    • 如要為機構設定角色繫結,請選取機構。
    • 如要為專案設定角色繫結,請選取專案。
  3. 在導覽選單中,依序點選「Identity and Access」>「Access」
  4. 按一下 [Add Member] (新增成員)
  5. 選擇要新增個別使用者或群組。
  6. 在「Identity provider」清單中,選取身分識別提供者。
  7. 在「使用者名稱或群組別名」欄位中,輸入使用者名稱、電子郵件地址或別名。
  8. 在「角色」清單中,選取要指派給使用者或群組的角色,例如機構層級的「機構檢視者」或專案層級的「專案建立者」
  9. 按一下「新增」

該成員會顯示在「已授權成員」清單中。

gdcloud

  1. 請確認已安裝 gcloud CLI

  2. 使用 gdcloud auth login 指令登入,向身分識別提供者進行驗證。詳情請參閱 gdcloud CLI 驗證

  3. 設定角色繫結。

    • 為機構設定角色繫結:

      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

  1. 匯出您使用的使用者憑證:

    export GLOBAL_API_SERVER_KUBECONFIG=GLOBAL_API_SERVER_KUBECONFIG
    
  2. 匯出要指派角色的使用者帳戶,包括身分識別提供者前置字元 (例如 idpprefix-paul@example.com):

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. 匯出使用者需要的角色名稱,例如 project-creator。請參閱「角色定義」一文,找出相應角色。

    export ROLE_NAME=ROLE_NAME
    
  4. 匯出必須建立繫結的命名空間:

    export BINDING_NAMESPACE=BINDING_NAMESPACE
    

    如果是機構範圍的角色,請將 BINDING_NAMESPACE 替換為 platform;如果是專案範圍的角色,請替換為目標專案的命名空間名稱。

    如需角色及其範圍的清單,請參閱「角色定義」。

  5. 建立及套用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
    

移除角色繫結

不再需要存取權時,請移除成員和相關聯的角色、權限和存取權。

如要移除成員,請按照下列步驟操作:

控制台

  1. 登入 GDC 控制台。
  2. 在導覽選單中,依序點選「Identity and Access」>「Access」
  3. 在「授權成員」清單中選取成員。
  4. 按一下 [Remove member]。
  5. 系統提示時,按一下「移除成員」加以確認。

gdcloud

  1. 請確認已安裝 gcloud CLI

  2. 使用 gdcloud auth login 指令登入,向身分識別提供者進行驗證。詳情請參閱 gdcloud CLI 驗證

  3. 移除角色繫結。

    • 移除機構的角色繫結:

      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 領域的存取權,必須分別撤銷每個區域的存取權。請為每個區域完成下列步驟:

  1. 請確認您登入的是要撤銷存取權的區域。舉例來說,請為 gdcloud CLI 設定區域網址,然後登入:

    gdcloud config set organization_console_url ZONE_URL
    gdcloud auth login
    

    ZONE_URL 替換為要撤銷使用者存取權的區域 GDC 控制台網址,類似 https://console.ORG_NAME.ZONE_NAME.ORG_SUFFIX

    如要進一步瞭解如何切換區域環境,請參閱跨區域管理資源

  2. 取得撤銷使用者權限所需的權限。請要求機構 IAM 管理員授予您機構工作階段管理員 (org-session-admin) 角色。

  3. 撤銷使用者對區域的存取權:

    gdcloud admin auth revoke --accounts USER_EMAIL
    

    USER_EMAIL 替換為要撤銷存取權的使用者電子郵件地址。

    執行指令後,您會看到類似下列內容的輸出。這個範例會撤銷使用者 ariel@example.com 的存取權:

    Success: NUMBER of sessions revoked for user ariel@example.com
    

    在本例中,變數 NUMBER 是指使用者擁有的活躍工作階段數。

  4. 再次執行 gdcloud admin auth revoke 指令,確認已撤銷使用者的存取權。如果成功,您會看到下列內容:

    No sessions found for account: ariel@example.com
    
  5. 針對宇宙中的每個區域重複上述步驟。