准备工作
在设置或修改 dataform.restrictGitRemotes 政策之前,请找到要添加到许可名单的远程 Git 代码库的完整网址。
如需查找已连接到 Dataform 代码库的远程 Git 代码库的完整网址,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Dataform 页面。
选择一个代码库,然后点击设置 。
请注意, Dataform 页面上显示的远程代码库的网址是缩短的,不能在
dataform.restrictGitRemotes政策中使用。在 设置 页面上,在 Git 连接设置 下, 复制 代码库来源 值。
代码库来源 值是远程代码库的完整网址。您可以在
dataform.restrictGitRemotes政策中使用此网址。
所需的角色
如需获得管理组织政策所需的权限,请让您的管理员为您授予组织的Organization Policy Administrator (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
如需使用此限制条件,您可以创建一个组织政策,其中包含可连接到 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 页面。
- 如有必要,请从项目下拉菜单中选择所需的组织。
- 点击 Restrict git remotes for repositories in Dataform 。
- 点击管理政策 。如果您无法点击 管理政策 按钮,则说明您没有正确的 权限。
选择自定义 ,为特定远程 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 可以连接到您在 allowedValues 列表中指定的远程 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 可以连接到您在 allowedValues 列表中指定的远程 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 代码库都受此政策的约束。如果因此导致问题, 我们建议在未应用组织政策的其他 项目中设置其他服务和产品,并根据需要使用 共享 VPC。
在设置
dataform.restrictGitRemotes政策之前,请确保组织内就组织政策及其管理员进行沟通。 由您或拥有所需权限的管理员负责管理和维护政策。
后续步骤
- 如需详细了解组织政策,请参阅 组织政策服务简介。
- 如需详细了解组织政策限制条件,请参阅 组织政策限制条件。
- 如需了解如何使用 Resource Manager 管理 Google Cloud 资源,请参阅 管理您的 Google Cloud 资源。