本文說明如何管理現有的存取權繫結,這些繫結會定義如何將存取權政策套用至使用者群組或服務帳戶。您可以視需要查看、修改及刪除這些繫結。存取權繫結會決定如何將存取層級和工作階段控制項套用至使用者群組或服務帳戶。
如要瞭解如何為使用者建立存取權繫結,以及存取層級和工作階段控管的詳細資訊,請參閱「透過存取權繫結將政策套用至使用者群組」。
如要進一步瞭解如何為服務帳戶建立存取權繫結,請參閱為服務帳戶設定情境感知存取權。
列出存取權繫結
如要列出使用者群組先前建立的所有存取權繫結,請執行下列操作:
gcloud
如要使用 gcloud CLI 列出所有使用者存取權繫結,請執行下列指令。如要列出服務帳戶的存取權繫結,請務必使用篩選器。
gcloud access-context-manager cloud-bindings list \
--organization ORGANIZATION_ID
ORG_ID:您的機構 ID。
如果尚未設定 access-context-manager/organization 屬性,請將選用 --organization 旗標中的 ORG_ID 替換為您建立 GcpAccessAdmin 角色時使用的機構 ID。
如要列出特定資源的存取權繫結,可以使用篩選器旗標。
--filter="FILTER"
將 FILTER 替換為描述存取權政策所繫結資源的篩選器,例如:
- 使用者群組:
principal:group_key
服務帳戶:
principal:service_account OR principal:service_account_project_number
REST API
如要列出所有 USER_LOGIN 存取權繫結,請執行下列指令:
curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings"
如要列出特定資源的存取權繫結,可以使用篩選參數。
curl -H "X-Goog-User-Project: PROJECT_ID" -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings?filter=FILTER"
更改下列內容:
PROJECT_ID:專案 IDORGANIZATION_ID:機構 IDFILTER:描述存取政策所繫結資源的篩選條件,例如:使用者群組:
principal:group_key服務帳戶:
principal:service_account OR principal:service_account_project_number
查看存取權繫結
為使用者群組建立存取繫結後,系統會根據繫結的存取層級是否符合條件,控管使用者對Google Cloud 控制台和 Google Cloud API 的存取權。
您可以查看、編輯或刪除您建立的存取權繫結詳細資料。
控制台
前往 Google Cloud 控制台的「Access Context Manager」頁面。
系統顯示提示時,請選取專案。存取權繫結會列在 Access Context Manager 頁面上。
gcloud
如要查看存取權繫結的詳細資料,請執行下列指令:
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_ID
BINDING_ID 是存取權繫結的 ID 或完整 ID。
API
查看存取權繫結的詳細資料:
HTTP 方法和網址:
GET https://accesscontextmanager.googleapis.com/v1/BINDING_ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/BINDING_ID"
PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/BINDING_ID" | Select-Object -Expand Content
您應該會收到如下的 JSON 回覆:
{
"name": "organizations/427391306986/gcpUserAccessBindings/aAQS-YRSviv2hC12vZFUN3AZzvwa6KV2hJ89iMytB_nHUcT1l",
"groupKey": "045jfvxd0ybeul8",
"accessLevels": [
"accessPolicies/305009197125/accessLevels/device_lock"
],
"dryRunAccessLevels": [
"accessPolicies/305009197125/accessLevels/another"
]
}
更新存取權繫結
您可以更新存取權繫結,執行下列操作:
- 新增、移除或變更套用政策的應用程式。
- 修改使用者群組中應用程式的存取層級。
- 新增模擬測試存取層級,或將現有層級升級為正式層級。
控制台
前往 Google Cloud 控制台的「Access Context Manager」頁面。
系統顯示提示時,請選取專案。
在 Access Context Manager 頁面中選取存取權繫結,然後按一下「編輯」即可更新。
您無法在 Google Cloud 控制台中,使用模擬測試存取層級或工作階段控制項更新存取權繫結。
gcloud
建立 YAML 繫結檔案。
gcloud access-context-manager cloud-bindings update \ --binding=ACCESS_BINDING \ --binding-file=BINDING_FILE_PATH \ --level=DEFAULT_ACCESS_LEVEL \ --dry-run-level=DEFAULT_DRY_RUN_ACCESS_LEVEL [ --session-length=DEFAULT_SESSION_LENGTH ] [ --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD ]更改下列內容:
-
ACCESS_BINDING的形式為organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME。 -
BINDING_FILE_PATH:包含存取權繫結結構定義的 YAML 檔案路徑。繫結檔案僅支援
scopedAccessSettings。 -
DEFAULT_ACCESS_LEVEL:選用的存取層級名稱,格式為
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。將POLICY_ID替換為存取權政策 ID,並將ACCESS_LEVEL_NAME替換為存取層級名稱。 - DEFAULT_DRY_RUN_ACCESS_LEVEL_2:選用的存取層級名稱,格式為 `accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME`。如果 YAML 中未指定應用程式,請加入這個標記,預設將指定的試執行存取層級套用至所有應用程式。
-
DEFAULT_SESSION_LENGTH:以小時為單位的選用工作階段持續時間,例如
15h代表 15 小時,2h代表 2 小時。 -
DEFAULT_SESSION_REAUTH_METHOD:這個選用方法會要求使用者重新驗證身分,且必須符合下列條件:
LOGIN:套用標準登入程序,可能包含多重驗證或其他 Workspace 定義的因素。PASSWORD:即使定義了其他因素,也只會要求輸入密碼。如果密碼是由外部 IdP 管理,系統會將使用者重新導向至該 IdP。如果 IdP 工作階段仍處於有效狀態,使用者會隱含地重新通過驗證。如果 IdP 未上線,使用者必須透過 IdP 登入。SECURITY_KEY:必須使用實體安全金鑰。
--level和--binding-file引數如何搭配運作- 如果您只使用
--binding-file,則只有檔案中的應用程式會套用政策。 - 如果您只使用
--level,存取層級會套用至所有應用程式。 - 如果同時使用,系統會合併規則。
--level值會套用至所有應用程式,而--binding-file指定的 YAML 檔案中的政策只會套用至檔案中定義的應用程式。
使用工作階段控制項
- 如要為所有應用程式設定預設工作階段控制項,請使用
--session-length和--session-reauth-method。 - 如果您也在 YAML 檔案中定義工作階段控制項,這些控制項會覆寫特定應用程式的預設設定。
- 你必須同時使用
--session-length和--session-reauth-method。
如要移除預設存取層級或預設模擬測試存取層級,請提供空字串,例如
--level=或--dry-run-level=。如果未提供這些引數,update指令就不會進行任何變更。如要移除工作階段控制項,請設定
--session-length=0。-
API
建立 JSON 主體。
{ "accessLevels": [ "DEFAULT_ACCESS_LEVEL" ], "scopedAccessSettings": [ { "scope": { "clientScope": { "restrictedClientApplication": { "clientId": "CLIENT_ID" } } }, "activeSettings": { "accessLevels": [ "ACCESS_LEVEL_A" ], "sessionSettings": { "sessionLength": "SESSION_LENGTH", "sessionReauthMethod": "SESSION_REAUTH_METHOD", "sessionLengthEnabled": true } } }, { "scope": { "clientScope": { "restrictedClientApplication": { "name": "CLIENT_NAME" } } }, "activeSettings": { "accessLevels": [ "ACCESS_LEVEL_C" ] } } ] }更改下列內容:
-
DEFAULT_ACCESS_LEVEL:選用的存取層級名稱,格式為
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。將POLICY_ID替換為存取權政策 ID,並將ACCESS_LEVEL_NAME替換為存取層級名稱。 - CLIENT_ID:OAuth 用戶端 ID。如果應用程式包含
sessionSettings,可以使用clientId或name。 - ACCESS_LEVEL_A:存取層級名稱,格式為
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。 - SESSION_LENGTH:工作階段持續時間,採用 ISO 8601 時間長度格式,例如
30m代表 30 分鐘,2h代表兩小時。 SESSION_REAUTH_METHOD:選用方法,可要求使用者重新驗證身分,必須是下列其中一種:
LOGIN:套用標準登入程序,可能包含多重驗證或其他 Workspace 定義的因素。PASSWORD:只要求輸入密碼,即使已定義其他因素也一樣。如果密碼是由外部 IdP 管理,使用者會重新導向至該 IdP。如果 IdP 工作階段有效,使用者會隱含地重新驗證身分。如果 IdP 未上線,使用者必須透過 IdP 登入。SECURITY_KEY:必須使用實體安全金鑰。
CLIENT_NAME:用戶端名稱。如果應用程式包含
sessionSettings,可以使用name或clientId。ACCESS_LEVEL_C:存取層級名稱,格式為
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME。
-
DEFAULT_ACCESS_LEVEL:選用的存取層級名稱,格式為
傳送 PATCH 要求。
PATCH https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING?updateMask=FIELD_MASK更改下列內容:
-
ACCESS_BINDING的形式為organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME。 - FIELD_MASK:必要欄位,以半形逗號分隔,列出要更新的欄位。這會告知 API 要修改存取權繫結的哪些部分。
fieldMask應包含要求主體中要更新的頂層 JSON 金鑰,其中可包含accessLevels、dryRunAccessLevels和scopedAccessSettings。如果成功,您應該會收到 JSON 物件的表示法。 如有問題,系統會顯示錯誤訊息。
-
刪除存取繫結
控制台
前往 Google Cloud 控制台的「Access Context Manager」頁面。
系統顯示提示時,請選取專案。
在 Access Context Manager 頁面中選取存取權繫結,然後按一下「Delete」(刪除)。
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding ACCESS_BINDING
更改下列內容:
-
ACCESS_BINDING的形式為organizations/ORG_ID/gcpUserAccessBindings/ACCESS_BINDING_NAME。 -
ACCESS_BINDING_NAME是建立存取權繫結時,為nameID 傳回的專屬字串。
API
使用任何要求資料之前,請先修改下列項目的值:
-
ACCESS_BINDING_NAME是建立存取權繫結時,為nameID 傳回的專屬字串。
HTTP 方法和網址:
DELETE https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME"
PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://accesscontextmanager.googleapis.com/v1/ACCESS_BINDING_NAME" | Select-Object -Expand Content
您應該會收到執行成功的狀態碼 (2xx) 和空白回應。