事前準備
設定或編輯 dataform.restrictGitRemotes
政策前,請找出要加入允許清單的遠端 Git 存放區完整網址。
如要找出已連線至 Dataform 存放區的遠端 Git 存放區完整網址,請按照下列步驟操作:
前往 Google Cloud 控制台的「Dataform」頁面。
選取存放區,然後按一下「設定」。
請注意,Dataform 頁面顯示的遠端存放區網址會經過縮短,無法用於
dataform.restrictGitRemotes
政策。在「設定」頁面的「Git 連線設定」下方,複製「存放區來源」值。
「存放區來源」值是遠端存放區的完整網址。 您可以在「
dataform.restrictGitRemotes
」政策中使用這個網址。
必要的角色
如要取得管理機構政策所需的權限,請要求管理員為您授予機構的機構政策管理員 (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
關於限制遠端 Git 存放區
您可以將 Dataform 存放區連結至 GitHub 或 GitLab 存放區。
您可能想限制 Dataform 存放區可連線的遠端存放區集區,避免惡意行為者透過存放區的未受保護副本,存取您的 Dataform 程式碼庫和存取權杖。
您可以使用 Organization Policy Service 建立機構政策,限制 Dataform 可連線的 Git 存放區網址。
限制 Dataform 中遠端 Git 存放區的限制條件為:
constraints/dataform.restrictGitRemotes
如要使用這項限制,請建立機構政策,並提供可連線至 Dataform 存放區的遠端 Git 存放區網址 allowedValues
清單。遠端 Git 存放區會以完整網址識別。
這項dataform.restrictGitRemotes
政策具有追溯效力,因此限制會影響現有的 Dataform 存放區。
如果已設定機構政策,Dataform 存放區只能連線至 allowedValues
清單中列出的遠端 Git 存放區。如果遠端 Git 存放區未在機構政策中明確定義,就無法連線至 Dataform 存放區。
如未設定 dataform.restrictGitRemotes
政策,Dataform 存放區和遠端 Git 存放區之間的通訊就不會受到限制。
您可以透過下列方式使用 dataform.restrictGitRemotes
政策:
Allow all
- Dataform 存放區可連線至所有遠端存放區網址。如果貴機構不想封鎖與遠端存放區的任何通訊,請選取這個選項。或者,如要允許所有遠端存放區網址,可以將組織政策設為未設定。
allowedValues
網址清單- Dataform 存放區只能連線至允許清單中的遠端存放區。選取這個選項可防止資料外洩。
Deny all
- Dataform 存放區不得連線至任何遠端網址。 如果貴機構想封鎖所有通訊並使用 Dataform 存放區,請選取這個選項。
允許清單中遠端 Git 存放區的規格
您只能將此清單限制套用至 GitHub 和 GitLab 存放區。
機構政策會追溯套用,並影響現有的 Dataform 存放區。
這項限制接受
allowedValues
,可封鎖與所有其他遠端 Git 存放區的連線,或接受Deny all
。預設值為Allow all
,如果未設定機構政策,即可與所有遠端 Git 存放區通訊。建議您將機構政策設為allowedValues
。政策必須由您或具有必要權限的管理員來管理和維護。確保貴機構內已發布政策管理員的相關資訊。
在機構層級設定機構政策限制
主控台
- 前往「/Organizational Policies/Organization Policies」(/機構政策/機構政策) 頁面。
- 如有必要,請從專案下拉式選單中選取所需機構。
- 按一下「限制在 Dataform 中對存放區使用 Git 遠端指令」。
- 按一下「管理政策」。如果無法點選「管理政策」按鈕,表示您沒有適當的權限。
選取「自訂」,即可針對特定遠端 Git 存放區設定機構政策。
選取所需的「政策強制執行」和「政策類型」。
在「政策值」部分,選取「自訂」。
輸入遠端 Git 存放區的完整網址。
按一下「新政策值」,然後視需要輸入遠端 Git 存放區的完整網址。
按一下「儲存」即可套用限制。
gcloud
如要為遠端 Git 存放區設定限制,您必須先取得機構 ID。執行 organizations list
指令,並在回應中尋找數字 ID,即可找到機構 ID:
gcloud organizations list
gcloud CLI 會傳回組織清單,格式如下:
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
使用 gcloud resource-manager org-policies set-policy
指令設定機構政策。您必須以 JSON 或 YAML 檔案格式來提供政策。
以以下格式建立 JSON 檔案:
{ "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
將 ORGANIZATION_ID
替換為機構的數字 ID。
如果您不希望 Dataform 存放區連線至任何遠端 Git 存放區,可以將 denyAll
設為 true
,藉此設定機構政策:
{ "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "denyAll": true } ] } }
將 ORGANIZATION_ID
替換為機構的數字 ID。
API
使用 setOrgPolicy()
API 定義限制。Dataform 可以連線至您指定 allowedValue
清單中的遠端 Git 存放區網址。
舉例來說,以下要求會將 dataform.restrictGitRemotes
限制套用至機構,允許 Dataform 存放區連線至所選遠端 Git 存放區:
POST https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies
其中 ORGANIZATION_ID
是機構的數字 ID。
請在要求主體中,提供這項限制的所需組織政策:
{ "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.
如果您不希望 Dataform 存放區連線至任何遠端 Git 存放區,可以將具有 denyAll
的機構政策設為 true
:
{ "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "denyAll": true } ] } }
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.
如果已設定機構政策,您需要以機構政策定義做為要求主體,執行下列要求:
PATCH https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes
在專案層級設定機構政策
在專案層級設定的機構政策會覆寫或合併機構層級的機構政策。如果發生合併,denyAll
的優先順序會高於 allowedValues
。舉例來說,如果機構層級的機構政策設為 denyAll
,且專案層級的合併政策在 allowedValues
清單中列出遠端存放區網址,則 Dataform 無法連線至遠端存放區。在這種情況下,專案層級的機構政策必須覆寫機構層級的政策,Dataform 才能連線至遠端存放區。如要進一步瞭解機構政策階層,請參閱「瞭解階層評估」。
主控台
按照在機構層級設定機構政策限制所記錄的相同程序進行,但要從專案選取器 (而不是從機構中) 選擇所需的專案。
gcloud
使用 gcloud resource-manager org-policies set-policy
指令設定機構政策。您必須以 JSON 或 YAML 檔案格式來提供政策。
以以下格式建立 JSON 檔案:
{ "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
將 PROJECT_ID_OR_NUMBER
替換為這個機構政策的專案 ID 或專案編號。
接著,使用要求傳入檔案:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=PROJECT_ID
API
使用 setOrgPolicy()
API 定義限制。Dataform 可以連線至您指定 allowedValue
清單中的遠端 Git 存放區網址。
舉例來說,以下要求會將 dataform.restrictGitRemotes
限制套用至機構,讓 Dataform 存放區只能連線至所選的遠端 Git 存放區,且尚未設定 constraints/dataform.restrictGitRemotes
政策:
POST https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies
要求內容中包含這項限制的所需機構政策:
{ "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
將 PROJECT_ID_OR_NUMBER
替換為這項要求的專案 ID 或專案編號。
以下是要求對機構套用 dataform.restrictGitRemotes
限制的範例,其中 Dataform 存放區只能連線至選取的遠端 Git 存放區,且已設定 constraints/dataform.restrictGitRemotes
政策:
PATCH https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes
要求內容中包含這項限制的所需機構政策:
{ "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
將 PROJECT_ID_OR_NUMBER
替換為這項要求的專案 ID 或專案編號。
將 Git 遠端項目加入許可清單的最佳做法
為降低資料竊取風險,請明確設定
dataform.restrictGitRemotes
限制,將選定的可信遠端 Git 存放區加入允許清單。如果您只使用未連線至遠端 Git 存放區的 Dataform 存放區,請將
dataform.restrictGitRemotes
限制設為Deny All
。如有這項限制,請避免使用
deniedValues
清單。如果您在deniedValues
清單中定義值,這表示只有deniedValues
清單中的遠端 Git 存放區禁止連線。如果您想要精確控制 Dataform 可連線至哪些遠端 Git 存放區,這可能會是安全疑慮。如要從allowedValues
清單移除特定遠端 Git 存放區,請更新現有機構政策,從allowedValues
清單移除這些存放區,而不是從較低階層將遠端存放區納入deniedValues
清單。如果您想對大部分的資源階層設定機構政策,但要豁免某些專案,請透過指定
restoreDefault
物件使用setOrgPolicy
方法還原預設機構政策,允許專案中的所有 Dataform 存放區連線至遠端 Git 存放區。專案當前的政策不會受到預設設定影響。搭配使用機構政策和身分與存取權管理角色,進一步控管 Dataform 程式碼集的存取權。
在已啟用機構政策的機構或專案中,任何 Dataform 存放區都必須符合此政策。如果這會造成問題,建議您在未套用機構政策的不同專案中設定其他服務和產品,並在需要時使用共用 VPC。
設定
dataform.restrictGitRemotes
政策前,請確保貴機構已發布機構政策和管理員的相關公告。政策必須由您或具有必要權限的管理員來管理和維護。
後續步驟
- 如要進一步瞭解機構政策,請參閱機構政策服務簡介。
- 如要進一步瞭解機構政策限制,請參閱機構政策限制。
- 如要瞭解如何使用 Resource Manager 管理 Google Cloud 資源,請參閱「管理 Google Cloud 資源」。