本頁說明如何在試執行模式下使用機構政策,監控政策變更對工作流程的影響,再強制執行變更。
模擬測試模式下的機構政策建立和強制執行方式,與其他機構政策類似,且系統會稽核記錄違反政策的行為,但不會拒絕這類行為。
事前準備
如要在模擬測試模式下使用機構政策,您必須為 Google Cloud 專案啟用計費功能。如要瞭解如何檢查專案是否已啟用帳單功能,請參閱驗證專案的帳單狀態。
如要進一步瞭解機構政策和限制條件的定義和運作方式,請參閱「機構政策服務簡介」。
必要的角色
如要取得管理機構政策所需的權限,請要求管理員為您授予機構的機構政策管理員 (roles/orgpolicy.policyAdmin
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色具備管理機構政策所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要管理組織政策,您必須具備下列權限:
-
orgpolicy.constraints.list
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
您可以將身分與存取權管理條件新增至機構政策管理員角色繫結,藉此委派機構政策的管理權。如要控管主體可管理機構政策的資源,您可以根據特定標記設定角色繫結條件。詳情請參閱「使用限制」一文。
限制
模擬測試組織政策只能使用下列機構政策限制:
如果嘗試使用任何其他限制,以模擬測試模式建立機構政策,就會發生錯誤。
在模擬測試模式下建立組織政策
使用清單參數
您可以使用Google Cloud 控制台或 Google Cloud CLI,以試執行模式為限制條件建立機構政策。以下範例說明如何在試執行模式中建立機構政策,稽核 compute.managed.restrictProtocolForwardingCreationForTypes
管理限制的效果。
主控台
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
在專案選擇工具中,選取要設定機構政策的資源。
從「機構政策」頁面上的清單中,選取「限制使用通訊協定轉送」限制。
選取「試營運」分頁標籤。
按一下「管理模擬測試政策」。
在「編輯模擬測試政策」頁面,選取「覆寫上層政策」。
按一下 [新增規則]。
在「Enforcement」(強制執行) 下方,選取 [On] (開啟)。
在「參數」下方,選取「編輯」圖示
。在「編輯參數值」窗格中,選取「使用者定義」。
在「User-defined values」(使用者定義的值) 方塊中輸入
EXTERNAL
,然後按一下「Save」(儲存)。按一下「測試變更」,模擬這項機構政策的效果。詳情請參閱「使用 Policy Simulator 測試組織政策變更」。
如要在模擬測試模式下強制執行機構政策,請按一下「設定模擬測試政策」。你也可以點選「設定政策」設定直播政策。
如要驗證模擬測試模式下的機構政策狀態,請前往機構政策限制的「模擬測試」分頁。
如果專案套用了處於模擬測試模式的機構政策,您可以按一下「查看拒絕記錄」,查看稽核記錄。對於這項機構政策,稽核記錄會顯示違規事項,彷彿系統強制執行「限制使用通訊協定轉送」限制,只允許 EXTERNAL
通訊協定轉送部署作業。
gcloud
如要在模擬執行模式下建立機構政策,請建立 YAML 檔案,並使用 dryRunSpec
定義限制。例如:
name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.restrictProtocolForwardingCreationForTypes dryRunSpec: rules: - enforce: true parameters: allowedSchemes: - EXTERNAL
更改下列內容:
RESOURCE_TYPE
,搭配organizations
、folders
或projects
。RESOURCE_ID
,視RESOURCE_TYPE
中指定的資源類型而定,可以是機構 ID、資料夾 ID、專案 ID 或專案編號。
這項機構政策不會強制執行
compute.managed.restrictProtocolForwardingCreationForTypes
限制,但稽核記錄會顯示違規事項,彷彿政策已強制執行。
如果您同時定義 spec
和 dryRunSpec
,可以在同一個 YAML 檔案中設定正式版和試執行版組織政策。例如:
name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.restrictProtocolForwardingCreationForTypes spec: rules: - values: allowedValues: - INTERNAL - EXTERNAL dryRunSpec: rules: - values: allowedValues: - INTERNAL
如要在模擬測試模式中強制執行組織政策,請使用 org-policies set policy
指令。如要使用新限制,以模擬執行模式更新現有機構政策,請使用 --update-mask
旗標。例如:
gcloud org-policies set-policy POLICY_PATH \ --update-mask=UPDATE_MASK
更改下列內容:
POLICY_PATH
,並提供機構政策 YAML 檔案的完整路徑。UPDATE_MASK
,以便只更新即時政策,或dryRunSpec
,以便只在模擬執行模式下更新機構政策。spec
您也可以使用*
同時更新spec
和dryRunSpec
欄位。如果更新現有機構政策時未設定這個欄位,這項指令會導致錯誤,且機構政策不會更新。
您可以使用 org-policies describe
指令,確認是否已在模擬執行模式中設定機構政策。只有在機構政策中存在 dryRunSpec
欄位時,才會顯示該欄位。
這項機構政策會強制執行 compute.managed.restrictProtocolForwardingCreationForTypes
限制,允許所有值。不過,稽核記錄會顯示違規事項,彷彿只允許 INTERNAL
通訊協定轉送部署作業。
使用布林規則
您可以使用 Google Cloud 控制台或 Google Cloud CLI,為具有布林值規則的限制條件,以模擬執行模式建立機構政策。下列範例說明如何在試執行模式下建立組織政策,稽核自訂組織政策的影響。
主控台
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
在專案選擇工具中,選取要設定機構政策的資源。
在「Organization policies」(機構政策) 頁面上的清單中,選取要強制執行的自訂機構政策。
選取「試營運」分頁標籤。
按一下「管理模擬測試政策」。
在「編輯模擬測試政策」頁面中,選取「覆寫上層政策」。
按一下 [新增規則]。
在「Enforcement」(強制執行) 下方,選取「On」(開啟),然後按一下「Done」(完成)。
如要在模擬測試模式下強制執行機構政策,請按一下「設定模擬測試政策」。確認機構政策在模擬執行模式中運作正常後,即可按一下「設定政策」,設定正式政策。
如要驗證模擬測試模式下的機構政策狀態,請前往機構政策限制的「模擬測試」分頁。
如果專案套用了處於模擬測試模式的機構政策,您可以按一下「查看拒絕記錄」,查看稽核記錄。對於這項機構政策,稽核記錄會顯示違規事項,就好像自訂機構政策已強制執行一樣。
gcloud
如要在模擬執行模式下建立機構政策,請建立 YAML 檔案,並使用 dryRunSpec
定義限制。例如:
name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME dryRunSpec: rules: - enforce: true
更改下列內容:
RESOURCE_TYPE
,搭配organizations
、folders
或projects
。RESOURCE_ID
,視RESOURCE_TYPE
中指定的資源類型而定,可以是機構 ID、資料夾 ID、專案 ID 或專案編號。將
CONSTRAINT_NAME
替換為自訂限制的名稱。例如:custom.disableGkeAutoUpgrade
。
這項機構政策不會強制執行自訂限制,但稽核記錄會顯示違規事項,就好像政策已強制執行一樣。
如果您同時定義 spec
和 dryRunSpec
,可以在同一個 YAML 檔案中設定正式機構政策和試執行模式的機構政策。例如:
name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: false dryRunSpec: rules: - enforce: true
如要在模擬測試模式中強制執行組織政策,請使用 org-policies set policy
指令。如要使用新限制,以模擬執行模式更新現有機構政策,請使用 --update-mask
旗標。例如:
gcloud org-policies set-policy POLICY_PATH \ --update-mask=UPDATE_MASK
更改下列內容:
POLICY_PATH
,並提供機構政策 YAML 檔案的完整路徑。UPDATE_MASK
,以便只更新即時政策,或dryRunSpec
,以便只在模擬執行模式下更新機構政策。spec
您也可以使用*
同時更新spec
和dryRunSpec
欄位。如果更新現有機構政策時未設定這個欄位,這項指令會導致錯誤,且機構政策不會更新。
如要確認是否已設定處於試執行模式的機構政策,請使用 org-policies describe
指令。只有在機構政策中存在 dryRunSpec
欄位時,才會顯示該欄位。
這項機構政策不會強制執行自訂限制。 不過,稽核記錄會顯示違反自訂限制的項目。
從現行政策建立模擬測試模式的組織政策
您可以將現有的機構政策做為起點,在模擬測試模式中建立機構政策。您可能想這麼做,瞭解變更現有政策對環境的影響。
您可以使用 Google Cloud 控制台或 Google Cloud CLI,根據現有政策以模擬執行模式建立機構政策。
主控台
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
從專案挑選器中,選取已設定「Restrict Resource Service Usage」(限制資源服務用量) 限制的資源。
在「Organization policies」(機構政策) 頁面上的清單中,選取「Restrict Resource Service Usage」(限制資源服務用量) 限制。
選取「直播」分頁標籤。
按一下「管理政策」。
按一下 [新增規則]。
在「政策值」下方,選取「自訂」。
從「政策類型」選取「拒絕」。
在「Custom values」(自訂值) 方塊中輸入
appengine.googleapis.com
。按一下「完成」,然後「設定試營運政策」。
gcloud
如要根據現有的有效機構政策,以模擬執行模式建立機構政策,請使用 org-policies describe
指令取得資源的現行政策。例如:
gcloud org-policies describe gcp.restrictServiceUsage \ --project=PROJECT_ID
將 PROJECT_ID
替換為設定此機構政策的專案 ID 或專案編號。
輸出內容應如下所示:
name: projects/123456789012/policies/gcp.restrictServiceUsage spec: etag: CJy93KEGEKCJw/QB rules: - values: allowedValues: - compute.googleapis.com updateTime: '2023-04-12T21:11:56.512804Z'
將這項指令的輸出內容複製到暫存檔案。編輯這個檔案,移除 etag
和 updateTime
欄位,並將 spec
欄位變更為 dryRunSpec
。在模擬測試模式下,對組織政策中的限制設定進行任何變更,以利測試。
完成的 YAML 檔案應類似下列內容:
name: projects/123456789012/policies/gcp.restrictServiceUsage dryRunSpec: rules: - values: allowedValues: - compute.googleapis.com - appengine.googleapis.com
如要在模擬測試模式中強制執行機構政策,請使用 org-policies set policy
和 --update-mask
旗標。例如:
gcloud org-policies set-policy POLICY_PATH \ --update-mask=dryRunSpec
將 POLICY_PATH
替換為臨時機構政策 YAML 檔案的完整路徑。
刪除模擬測試模式下的組織政策
您可以使用 Google Cloud 控制台或 Google Cloud CLI,以模擬執行模式刪除機構政策。
主控台
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
在專案選擇工具中,選取要設定機構政策的資源。
在「Organization policies」(機構政策) 頁面上的清單中,選取「Restrict Resource Service Usage」(限制資源服務用量) 限制。
選取「試營運」分頁標籤。
按一下「刪除模擬測試政策」。
gcloud
如要刪除模擬測試模式下的機構政策,請建立 YAML 檔案,定義不含模擬測試規格的機構政策。例如:
name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictServiceUsage spec: rules: - values: allowedValues: - container.googleapis.com
更改下列內容:
RESOURCE_TYPE
搭配organizations
、folders
或projects
。RESOURCE_ID
,視RESOURCE_TYPE
中指定的資源類型而定,可以是機構 ID、資料夾 ID、專案 ID 或專案編號。
接著,請使用 org-policies set policy
指令,並將 --update-mask
旗標設為 dryRunSpec
。例如:
gcloud org-policies set-policy POLICY_PATH \ --update-mask=dryRunSpec
這會更新現有組織政策,移除試營運規格,並忽略規格的正式部分。
如要同時刪除正式版和試執行模式的組織政策,請使用 org-policies delete
指令。例如:
gcloud org-policies delete CONSTRAINT_NAME \ --RESOURCE_TYPE=RESOURCE_ID
更改下列內容:
CONSTRAINT_NAME
,其中CONSTRAINT_NAME
是要刪除的限制名稱。例如:gcp.restrictServiceUsage
。RESOURCE_TYPE
搭配organizations
、folders
或projects
。RESOURCE_ID
,視RESOURCE_TYPE
中指定的資源類型而定,可以是機構 ID、資料夾 ID、專案 ID 或專案編號。
在模擬測試模式下有效評估機構政策
模擬測試模式下的機構政策,繼承方式與其他機構政策類似。如果機構資源設有試執行模式的機構政策,所有子系資源都會沿用該政策,除非在階層的較低層級覆寫政策。
有效政策評估會顯示合併至該資源的機構政策結果。因此,如果模擬測試模式政策是繼承而來,而非在本機設定,則對即時機構政策所做的調整,會反映在模擬測試模式的有效機構政策中。
舉例來說,假設有個機構資源 Organization A
,其中一個機構政策設為 enforced: false
(有效),另一個機構政策則設為 enforced: true
(模擬執行模式)。子資源 Folder B
也會將正式機構政策設為 enforced: false
,並沿用模擬測試模式下的機構政策。在 Folder B
中,設定為有效政策表示模擬測試模式中組織政策的有效政策評估結果也是 enforce: false
,會覆寫上層機構中設定的模擬測試模式組織政策。
Folder B
的子項資源 Project X
會將即時政策設為 enforced: true
。與 Folder B
上的行為類似,由於已設定即時政策,因此 Project X
模擬測試模式中組織政策的有效評估結果為 enforced: true
。
Folder B
的另一個子項資源 Project Y
會將機構政策設為模擬測試模式 enforced: true
。該資源會沿用父項資源的機構政策,因此有效評估結果為:現行政策 enforced: false
,模擬測試模式下的機構政策 enforced: true
。
資源 | 設定即時機構政策 | 有效的即時機構政策 | 在模擬測試模式下設定機構政策 | 模擬測試模式下的有效組織政策 |
---|---|---|---|---|
機構 A | enforced: false |
enforced: false |
enforced: true |
enforced: true |
資料夾 B | enforced: false |
enforced: false |
無 | enforced: false |
資料夾 C | 無 | enforced: false |
無 | enforced: true |
Project X | enforced: true |
enforced: true |
無 | enforced: true |
Project Y | 無 | enforced: false |
enforced: true |
enforced: true |
在模擬測試模式下分析機構政策的影響
模擬測試模式下的機構政策不會在強制執行時封鎖任何作業。如要查看機構政策的影響,請查看機構政策稽核記錄。
系統會根據在指定資源上強制執行的政策是否允許或拒絕作業,產生有效機構政策和模擬測試模式機構政策的稽核記錄。下表說明系統產生機構政策稽核記錄檔的情況:
有效機構政策 | 模擬測試模式下的組織政策 | 產生稽核記錄 |
---|---|---|
允許 | 允許 | 否 |
允許 | 拒絕 | 僅在模擬測試模式下提供稽核記錄 |
拒絕 | 允許 | 即時和模擬測試模式下的稽核記錄 |
拒絕 | 拒絕 | 即時和模擬測試模式下的稽核記錄 |
模擬測試模式下的機構政策違規事項,會與稽核記錄中即時模式下的違規事項一併顯示。例如:
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"status": {
"code": 7,
"message": "PERMISSION_DENIED"
},
"authenticationInfo": {},
"requestMetadata": {
"callerIp": "1.2.3.4",
"requestAttributes": {},
"destinationAttributes": {}
},
"serviceName": "appengine.googleapis.com",
"methodName": "google.api.appengine.v1.appengine.apps.services.get",
"resourceName": "projects/sur-project-test-3",
"metadata": {
"constraint": "constraints/gcp.restrictServiceUsage",
"checkedValue": "appengine.googleapis.com",
"liveResult": "ALLOWED",
"@type": "type.googleapis.com/google.cloud.audit.OrgPolicyDryRunAuditMetadata",
"dryRunResult": "DENIED"
}
},
"insertId": "1f2bvoxcmg1",
"resource": {
"type": "audited_resource",
"labels": {
"project_id": "sur-project-test-3",
"service": "appengine.googleapis.com",
"method": "google.api.appengine.v1.appengine.apps.services.get"
}
},
"timestamp": "2022-06-16T19:42:58.244990928Z",
"severity": "WARNING",
"logName": "projects/sur-project-test-3/logs/cloudaudit.googleapis.com%2Fpolicy",
"receiveTimestamp": "2022-06-16T19:42:59.572025716Z"
}
您只能使用記錄檔探索工具,查詢機構政策在模擬執行模式下違反的情形。
控制台
在 Google Cloud 控制台中,您可以使用「記錄檔探索工具」擷取 Google Cloud 專案、資料夾或機構的稽核記錄項目:
前往 Google Cloud 控制台的「記錄」>「記錄檔探索工具」頁面。
選取現有的 Google Cloud 專案、資料夾或機構。
在「查詢建立工具」窗格中,執行下列操作:
在「資源類型」中,選取要查看稽核記錄的 Google Cloud 資源。
在「記錄檔名稱」中,選取「政策」稽核記錄類型。
在「Query」(查詢) 窗格中,輸入下列內容:
protoPayload.metadata.dryRunResult = "DENIED" AND \ protoPayload.metadata.liveResult = "ALLOWED"
如果無法在記錄檔探索工具中查看記錄,請參閱疑難排解資訊。
如要進一步瞭解如何使用記錄檔探索工具查詢,請參閱「在記錄檔探索工具中建構查詢」。
gcloud
Google Cloud CLI 提供 Logging API 的指令列介面。並在每個記錄名稱中提供有效的資源 ID。舉例來說,如果查詢包含專案 ID,您提供的專案 ID 必須參照目前所選的專案名稱。
如要讀取機構政策的稽核記錄項目,瞭解模擬執行模式違規情形,請執行下列指令:
gcloud logging read protoPayload.metadata.dryRunResult = "DENIED" AND \ protoPayload.metadata.liveResult = "ALLOWED" \ --RESOURCE_TYPE=RESOURCE_ID \
更改下列內容:
RESOURCE_TYPE
搭配organization
、folder
或project
。RESOURCE_ID
,視RESOURCE_TYPE
中指定的資源類型而定,可以是機構 ID、資料夾 ID、專案 ID 或專案編號。
在指令中加入 --freshness
旗標,即可讀取超過 1 天前的記錄。
如要進一步瞭解如何使用 gcloud CLI,請參閱
gcloud logging read
。
如果機構底下有許多專案,可以使用匯總接收器,將機構底下所有專案的稽核記錄項目匯總並傳送至 BigQuery 資料表。如要進一步瞭解如何建立匯總接收器,請參閱「將機構層級記錄檔彙整並傳送至支援的目的地」。
後續步驟
如要進一步瞭解如何建立及管理機構政策限制,請參閱「使用限制」一文。