事前準備
設定或編輯 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 程式碼庫和存取權杖。
您可以使用機構政策服務建立機構政策,限制 Dataform 可連線的 Git 存放區網址。
在 Dataform 中限制遠端 Git 存放區的限制條件如下:
constraints/dataform.restrictGitRemotes
如要使用這項限制,請建立組織政策,並在其中加入 allowedValues
清單,列出可連線至 Dataform 存放區的遠端 Git 存放區網址。系統會透過遠端 Git 存放區的完整網址來識別。
dataform.restrictGitRemotes
政策具有可溯及既往的效果,也就是說限制會影響先前建立的 Dataform 存放區。
機構政策生效後,Dataform 存放區只能連線至 allowedValues
清單中列出的遠端 Git 存放區。系統禁止連結至未在機構政策中明確定義的遠端 Git 存放區。
如果您未設定 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
。您或具備必要權限的管理員必須管理及維護政策。請確保貴機構內的政策管理員已收到相關通知。
在機構層級設定機構政策限制
主控台
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
限制套用至機構的要求,其中所選的遠端 Git 存放區 Dataform 存放區可連線至:
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
清單。如果您想對大部分的資源階層設定機構政策,但要豁免某些專案,請使用
setOrgPolicy
方法還原預設機構政策,方法是指定restoreDefault
物件,允許專案中的所有 Dataform 存放區連線至遠端 Git 存放區。此預設設定不會影響專案當前的政策。請搭配使用機構政策和身分與存取權管理角色,進一步控管 Dataform 程式碼集的存取權。
在已啟用機構政策的機構或專案中,任何 Dataform 存放區都必須符合此政策。如果這會造成問題,建議您在未套用機構政策的不同專案中設定其他服務和產品,並在需要時使用共用虛擬私有雲。
設定
dataform.restrictGitRemotes
政策前,請務必與貴機構內的組織政策和管理員進行溝通。您或具備必要權限的管理員必須管理及維護政策。
後續步驟
- 如要進一步瞭解機構政策,請參閱「機構政策服務簡介」。
- 如要進一步瞭解機構政策限制,請參閱「機構政策限制」。
- 如要瞭解如何使用 Resource Manager 管理 Google Cloud 資源,請參閱「管理您的 Google Cloud 資源」。