為使用者群組強制執行憑證式存取

本頁面說明如何使用以使用者群組為依據的情境感知存取權政策,強制執行憑證式存取權 (CBA)。

您可以將 CBA 存取層級繫結至使用者群組,限制所有 Google Cloud 服務的存取權。這項限制適用於所有呼叫 Google Cloud API 的用戶端應用程式。

您也可以選擇將限制套用至特定用戶端應用程式,或豁免特定應用程式。這些應用程式包括第三方應用程式,以及 Google 建構的第一方應用程式,例如 Cloud Console (適用於 Google Cloud 控制台) 和 Google Cloud SDK (適用於 Google Cloud CLI)。

事前準備

建立 CBA 存取層級,在判斷資源存取權時需要憑證。

建立使用者群組

建立使用者群組,內含應根據 CBA 存取層級授予存取權的成員。

指派 Cloud 存取權繫結管理員角色

將 Cloud Access Binding Admin 角色指派給使用者群組。

您必須具備足夠的權限,才能在機構層級新增 IAM 權限。您至少需要機構管理員和 Cloud Access Binding 管理員角色。

控制台

  1. 前往控制台的「IAM」。

    前往「IAM」頁面

  2. 在「Permissions」(權限) 分頁中,按一下「Grant access」(授予存取權限),然後設定下列項目:

    1. 「New principals」(新增主體):指定要授予角色的群組。
    2. 在「請選擇角色」選項中,依序選取「Access Context Manager」>「Cloud Access Binding Admin」(Cloud Access Binding 管理員)。
    3. 按一下 [儲存]。

gcloud

  1. 登入:

    gcloud auth login
    
  2. 執行下列指令,指派 GcpAccessAdmin 角色:

    gcloud organizations add-iam-policy-binding ORG_ID \
      --member=user:EMAIL \
      --role=roles/accesscontextmanager.gcpAccessAdmin
    
    • ORG_ID 是貴機構的 ID。如果還沒有機構 ID,可以使用下列指令尋找:

       gcloud organizations list
      
    • EMAIL 是要授予角色的使用者或群組電子郵件地址。

將 CBA 存取層級繫結至使用者群組

在這個繫結選項中,CBA 存取層級會套用至您指定使用者群組的所有用戶端應用程式。

  1. 在控制台中,前往「控制台和 API 存取權政策」頁面:

    前往「控制台和 API 存取權政策」

  2. 選擇機構,然後按一下「選取」。

  3. 按一下「管理存取權」,選擇應具備存取權的使用者群組。

  4. 按一下「新增」,然後設定下列項目:

    1. 成員群組:指定要授予存取權的群組。您只能選取尚未繫結至存取層級的群組。
    2. 選取存取層級:選取要套用至群組的 CBA 存取層級。
    3. 按一下 [儲存]。

將 CBA 存取層級繫結至使用者群組和特定應用程式

在某些用途中 (例如支援用戶端憑證的應用程式),將 CBA 存取層級繫結至使用者群組可能過於廣泛。您可以透過這個選項,將 CBA 存取層級套用至支援用戶端憑證的應用程式。

以下範例會將 CBA 存取層級繫結至 Google Cloud console、gcloud CLI 和使用者的 OAuth 應用程式。

  1. 登入 gcloud CLI。

    gcloud auth application-default login
    
  2. 建立 policy_file.yaml 檔案。

    您可以透過 OAuth 用戶端 ID 指定應用程式。如要指定 Google 應用程式,請使用應用程式名稱,例如 Cloud Console 代表Google Cloud 控制台。僅支援 Google Cloud 控制台和 Google Cloud SDK Google 應用程式。

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedClientApplication:
            name: Cloud Console
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            name: Google Cloud SDK
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            clientId: CLIENT_ID_1
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    

    更改下列內容:

    • CLIENT_ID_1:OAuth 用戶端 ID。
    • CBA_ACCESS_LEVEL:CBA 存取層級名稱,格式為 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。
  3. 建立 CBA 存取層級繫結。

    gcloud access-context-manager cloud-bindings create \
       --group-key='GROUP_KEY' \
       --organization='ORG_ID' \
       --binding-file=policy_file.yaml
    

    更改下列內容:

    • GROUP_KEY:專屬群組 ID
    • ORG_ID:機構 ID

    gcloud

    您可以將專屬群組 ID 做為 GROUP_KEY。如要取得專屬群組 ID,請使用下列指令:

    gcloud identity groups describe EMAIL
    

    將 EMAIL 替換為群組的電子郵件地址。不重複群組 ID 是群組名稱中 / 後方傳回的值。舉例來說,groups/01gf8i8311xalqg 中的專屬群組 ID 為 01gf8i8311xalqg。

    REST

    您可以將專屬群組 ID 做為 GROUP_KEY。如要使用 REST API 取得專屬群組 ID,請在群組資源上呼叫 get 方法。群組資源的 id 欄位會傳回專屬群組 ID。

  4. 選用:更新現有的存取層級繫結。

    gcloud access-context-manager cloud-bindings update \
       --binding='BINDING_NAME' \
       --binding-file=policy_file.yaml
    

    將 BINDING_NAME 替換為建立繫結時自動產生的繫結名稱。

豁免應用程式的繫結

如要套用 CBA 存取層級,但不想封鎖不支援用戶端憑證的用戶端應用程式,可以將這些應用程式排除在政策之外。

下列步驟假設您先前已建立 CBA 存取層級,該層級會要求提供憑證,以判斷資源存取權。

  1. 使用下列任一方法建立豁免存取層級。

  2. 建立 exemption_file.yaml 檔案。

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedClientApplication:
            clientId: CLIENT_ID_2
      activeSettings:
        accessLevels:
        - EXEMPT_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            name: APPLICATION_NAME_2
      activeSettings:
        accessLevels:
        - EXEMPT_ACCESS_LEVEL
    

    更改下列內容:

    • CLIENT_ID_2:OAuth 用戶端 ID
    • APPLICATION_NAME_2:應用程式名稱
    • EXEMPT_ACCESS_LEVEL:豁免存取層級名稱,格式為 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。
  3. 建立豁免繫結政策。

    gcloud access-context-manager cloud-bindings create \
       --group-key='GROUP_KEY' \
       --organization='ORG_ID' \
       --binding-file=exemption_file.yaml
    

    更改下列內容:

    • GROUP_KEY:專屬群組 ID
    • ORG_ID:機構 ID