本頁面說明如何使用以使用者群組為依據的情境感知存取權政策,強制執行憑證式存取權 (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 管理員角色。
控制台
前往控制台的「IAM」。
在「Permissions」分頁中,按一下「Grant access」,然後設定下列項目:
- 「New principals」(新增主體):指定要授予角色的群組。
- 在「請選擇角色」選項中,依序選取「Access Context Manager」>「Cloud Access Binding Admin」。
- 按一下 [儲存]。
gcloud
登入:
gcloud auth login執行下列指令來指派
GcpAccessAdmin角色:gcloud organizations add-iam-policy-binding ORG_ID \ --member=user:EMAIL \ --role=roles/accesscontextmanager.gcpAccessAdminORG_ID是貴機構的 ID。如果還沒有機構 ID,可以使用下列指令尋找:gcloud organizations listEMAIL是要授予角色的使用者或群組電子郵件地址。
將 CBA 存取層級繫結至使用者群組
在這個繫結選項中,CBA 存取層級會套用至您指定使用者群組的所有用戶端應用程式。
在控制台中,前往「Chrome Enterprise 進階版」。
選擇機構,然後按一下「選取」。
按一下「管理存取權」,選擇應具備存取權的使用者群組。
按一下「新增」,然後設定下列項目:
- 成員群組:指定要授予存取權的群組。您只能選取尚未繫結至存取層級的群組。
- 選取存取層級:選取要套用至群組的 CBA 存取層級。
- 按一下 [儲存]。
將 CBA 存取層級繫結至使用者群組和特定應用程式
在某些用途中 (例如支援用戶端憑證的應用程式),將 CBA 存取層級繫結至使用者群組可能過於廣泛。您可以透過這個選項,將 CBA 存取層級套用至支援用戶端憑證的應用程式。
以下範例會將 CBA 存取層級繫結至 Google Cloud console、gcloud CLI 和使用者的 OAuth 應用程式。
登入 gcloud CLI。
gcloud auth application-default login建立
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。
建立 CBA 存取層級繫結。
gcloud access-context-manager cloud-bindings create \ --group-key='GROUP_KEY' \ --organization='ORG_ID' \ --binding-file=.../policy_file.yaml
將 GROUP_KEY 替換為情境感知存取權群組,並將 ORG_ID 替換為您的機構 ID。
如果沒有 GROUP_KEY,可以對群組資源呼叫
get方法來擷取。(選用) 更新現有的存取層級繫結。
gcloud access-context-manager cloud-bindings update \ --binding='BINDING_NAME' \ --binding-file=.../policy_file.yaml
將 BINDING_NAME 替換為建立繫結時自動產生的繫結名稱。
豁免應用程式的繫結
如要套用 CBA 存取層級,但不想封鎖不支援用戶端憑證的用戶端應用程式,可以將這些應用程式排除在政策之外。
下列步驟假設您先前已建立 CBA 存取層級,該層級在判斷資源存取權時需要憑證。
使用下列任一方法建立豁免存取層級。
- 自訂存取層級:在 CEL 運算式條件中提供
true做為值。 - 基本存取層級:
提供 IP 子網路
0.0.0.0/0和::/0(分別對應 IPv4 和 IPv6),建立以 IP 範圍為準的存取層級。
- 自訂存取層級:在 CEL 運算式條件中提供
建立
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。
建立豁免繫結政策。
gcloud access-context-manager cloud-bindings create \ --group-key='GROUP_KEY' \ --organization='ORG_ID' \ --binding-file=.../exemption_file.yaml
將 GROUP_KEY 替換為情境感知存取權群組,並將 ORG_ID 替換為您的機構 ID。
如果沒有 GROUP_KEY,可以對群組資源呼叫
get方法來擷取。