UI はローカライズ済みです。スキルの紹介と説明文書は選択した言語へ AI が自動翻訳し、コード・コマンド・パス・専門用語は原文のままです。原作者の文書が優先されます。
スキルを探す
生産性・共同作業 · SKILL.md

implementing-gcp-organization-policy-constraints

implementing-gcp-organization-policy-constraints

实施 GCP 组织策略约束,在整个资源层次结构中强制执行安全防护栏,限制危险配置并在组织、文件夹和项目级别确保合规性。

Independent GitHub snapshot · Automated classification · Original documentation governs

スキルの説明

GitHub

name: implementing-gcp-organization-policy-constraints description: 实施 GCP 组织策略约束,在整个资源层次结构中强制执行安全防护栏,限制危险配置并在组织、文件夹和项目级别确保合规性。 domain: cybersecurity subdomain: cloud-security tags: [gcp, organization-policy, constraints, governance, compliance, cloud-security, resource-manager] version: "1.0" author: mahipal license: Apache-2.0

实施 GCP 组织策略约束

概述

GCP 组织策略服务(Organization Policy Service)对云资源提供集中化和程序化的控制。组织策略通过配置约束来限制一个或多个 Google Cloud 服务,可在组织、文件夹或项目级别强制执行。它们通过阻止外部 IP、要求加密和最小化未授权访问来提升安全性。策略变更可能需要最多 15 分钟才能生效。

前置条件

  • 拥有 Organization Administrator 角色的 GCP 组织
  • 已配置并完成身份验证的 gcloud CLI
  • 用于策略管理的 Terraform 或 gcloud
  • 组织策略管理员 IAM 角色(roles/orgpolicy.policyAdmin)

核心概念

约束类型

  1. 列表约束(List Constraints):允许或拒绝特定值(如允许的区域)
  2. 布尔约束(Boolean Constraints):启用或禁用某项功能(如禁用串行端口访问)
  3. 自定义约束(Custom Constraints):针对特定资源字段的用户自定义规则(预览版)

策略继承

策略从具有强制执行策略的最低祖先节点继承。如果没有祖先节点配置策略,则应用 Google 的托管默认行为。

核心安全约束

限制 VM 外部 IP 地址

# 拒绝所有 VM 使用外部 IP 地址
gcloud resource-manager org-policies set-policy \
  --organization=ORGANIZATION_ID \
  policy.yaml

policy.yaml:

constraint: constraints/compute.vmExternalIpAccess
listPolicy:
  allValues: DENY

限制资源位置

gcloud org-policies set-policy \
  --organization=ORGANIZATION_ID \
  location-policy.yaml

location-policy.yaml:

constraint: constraints/gcp.resourceLocations
listPolicy:
  allowedValues:
    - "in:us-locations"
    - "in:eu-locations"

禁用默认服务账号创建

constraint: constraints/iam.automaticIamGrantsForDefaultServiceAccounts
booleanPolicy:
  enforced: true

要求 SSH 使用 OS Login

constraint: constraints/compute.requireOsLogin
booleanPolicy:
  enforced: true

禁用串行端口访问

constraint: constraints/compute.disableSerialPortAccess
booleanPolicy:
  enforced: true

强制统一存储桶级访问

constraint: constraints/storage.uniformBucketLevelAccess
booleanPolicy:
  enforced: true

限制 Cloud SQL 公共 IP

constraint: constraints/sql.restrictPublicIp
booleanPolicy:
  enforced: true

禁用服务账号密钥创建

constraint: constraints/iam.disableServiceAccountKeyCreation
booleanPolicy:
  enforced: true

Terraform 实现

resource "google_organization_policy" "restrict_vm_external_ip" {
  org_id     = var.org_id
  constraint = "constraints/compute.vmExternalIpAccess"

  list_policy {
    deny {
      all = true
    }
  }
}

resource "google_organization_policy" "restrict_locations" {
  org_id     = var.org_id
  constraint = "constraints/gcp.resourceLocations"

  list_policy {
    allow {
      values = ["in:us-locations", "in:eu-locations"]
    }
  }
}

resource "google_organization_policy" "require_os_login" {
  org_id     = var.org_id
  constraint = "constraints/compute.requireOsLogin"

  boolean_policy {
    enforced = true
  }
}

resource "google_folder_organization_policy" "dev_folder_external_ip" {
  folder     = google_folder.dev.name
  constraint = "constraints/compute.vmExternalIpAccess"

  list_policy {
    allow {
      values = ["projects/dev-project/zones/us-central1-a/instances/bastion-host"]
    }
  }
}

试运行测试

在强制执行前,使用 Policy Intelligence 工具测试变更影响:

# 创建试运行策略以监控影响
gcloud org-policies set-policy \
  --organization=ORGANIZATION_ID \
  dry-run-policy.yaml

dry-run-policy.yaml:

constraint: constraints/compute.vmExternalIpAccess
listPolicy:
  allValues: DENY
dryRunSpec: true
# 检查试运行策略的违规情况
gcloud org-policies list-custom-constraints \
  --organization=ORGANIZATION_ID

自定义约束

# custom-constraint.yaml
name: organizations/ORGANIZATION_ID/customConstraints/custom.disableGKEAutoUpgrade
resourceTypes:
  - container.googleapis.com/NodePool
methodTypes:
  - CREATE
  - UPDATE
condition: "resource.management.autoUpgrade == true"
actionType: DENY
displayName: 拒绝 GKE 节点池自动升级
description: 防止在 GKE 节点池上启用自动升级,以实现受控升级
gcloud org-policies set-custom-constraint custom-constraint.yaml

监控与合规

列出活跃策略

gcloud org-policies list --organization=ORGANIZATION_ID

描述特定策略

gcloud org-policies describe constraints/compute.vmExternalIpAccess \
  --organization=ORGANIZATION_ID

使用 Cloud Asset Inventory 审计策略违规

gcloud asset search-all-resources \
  --scope=organizations/ORGANIZATION_ID \
  --query="policy:constraints/compute.vmExternalIpAccess"

推荐基线策略

约束类型范围用途
compute.vmExternalIpAccess列表/拒绝组织防止 VM 使用公网 IP
gcp.resourceLocations列表/允许组织限制为已批准区域
iam.disableServiceAccountKeyCreation布尔组织强制使用 Workload Identity
compute.requireOsLogin布尔组织强制 SSH 使用 OS Login
storage.uniformBucketLevelAccess布尔组织强制统一存储桶访问
sql.restrictPublicIp布尔组织禁止 Cloud SQL 公网访问
compute.disableSerialPortAccess布尔组织禁用串行端口
compute.disableNestedVirtualization布尔组织禁止嵌套虚拟化

参考资料

保存したスキル