事前準備
設定或編輯 dataform.restrictGitRemotes 政策前,請先找出要加入允許清單的遠端 Git 存放區完整網址。
如要找出已連線至 Dataform 存放區的遠端 Git 存放區完整網址,請按照下列步驟操作:
前往 Google Cloud 控制台的「Dataform」頁面。
選取存放區,然後按一下「Settings」。
請注意,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 限制套用至機構,允許所選遠端 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清單。如果您想對大部分的資源階層設定機構政策,但要豁免某些專案,請透過指定
restoreDefault物件使用setOrgPolicy方法還原預設機構政策,允許專案中的所有 Dataform 存放區連線至遠端 Git 存放區。專案當前的政策不會受到預設設定影響。在已啟用機構政策的機構或專案中,任何 Dataform 存放區都必須符合此政策。如果這會造成問題,建議您在未套用機構政策的不同專案中設定其他服務和產品,並在需要時使用共用 VPC。
設定
dataform.restrictGitRemotes政策前,請確保貴機構已發布機構政策和管理員的相關通訊。政策必須由您或具有必要權限的管理員來管理和維護。
後續步驟
- 如要進一步瞭解機構政策,請參閱機構政策服務簡介。
- 如要進一步瞭解機構政策限制,請參閱機構政策限制。
- 如要瞭解如何使用 Resource Manager 管理 Google Cloud 資源,請參閱「管理 Google Cloud 資源」。