运维部署
新建 Google Cloud…
在全新 Google Cloud Organization 上建立企业级安全着陆区基础:配置 17 条组织策略护栏、创建 4 个文件夹与对应项目、关联结算账号、启用 API,并搭建集中式日志桶与跨项目监控范围。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
新建 Google Cloud 组织时如特定
解决思路
- 先收集必要信息:运行 `gcloud organizations list` 列出组织并让用户选择目标 Organization ID;运行 `gcloud billing accounts list --filter=open=true` 列出活跃结算账号并让用户选择 Billing Account ID;询问项目 ID 后缀偏好(默认用前缀+共享的 8 位随机串,如 `prod-ab12cd34`);询问日志桶区域是否覆盖默认的 `global`。
- 确认组织元数据:运行 `gcloud organizations describe [ORGANIZATION_ID]`,从输出中取 `displayName` 作为域名([ORG_NAME]),取 `owner.directoryCustomerId` 作为 Directory Customer ID。
- 向用户展示部署蓝图摘要并等待明确批准后再执行:包含 17 条组织策略(13 条布尔、4 条列表)、4 个文件夹(Common、Production、Non-Production、Development)、4 个项目(logging-[SUFFIX]、prod-[SUFFIX]、non-prod-[SUFFIX]、dev-[SUFFIX])、结算账号关联、启用 Logging/Monitoring API、部署 global 日志桶(30 天保留)、组织级日志汇和跨项目指标范围。用户拒绝则中止。
- 采用“惰性角色修复”策略而非预先权限检查:直接执行各步骤,遇到 `Permission Denied` 时自行修复并重试。修复方式为运行 `gcloud organizations add-iam-policy-binding` 或 `gcloud billing accounts add-iam-policy-binding`,把对应管理组的所有角色授予当前身份,然后重试失败命令。
- 按失败阶段映射修复:组织策略 `gcloud org-policies set-policy` 失败→在组织级授予整个 Organization Admin Group(9 个角色);文件夹/项目创建失败→同样授予 Organization Admin Group;`gcloud billing projects link` 失败→在结算账号级授予 Billing Admin Group(3 个角色),并确保在组织级授予含 `roles/billing.user` 的 Organization Admin Group;组织级日志汇创建失败→授予 Logging/Monitoring Admin Group(`roles/logging.admin`、`roles/monitoring.admin`)和 Security Admin Group(9 个角色)。
- 若修复授权命令本身失败(如缺少 setIamPolicy 权限),立即停止执行并让用户联系组织/结算管理员手动授予整个管理组角色。
- 应用 17 条基线安全组织策略:先生成各策略的 YAML 配置文件(布尔与列表约束模板),再逐条运行 `gcloud org-policies set-policy [POLICY_FILE_NAME].yaml`。注意先应用 `iam.allowedPolicyMemberDomains` 可能锁死部署身份,需先确认部署身份所在域被允许。
- 创建资源层级文件夹:对 Common、Production、Non-Production、Development 四个文件夹分别先用 `gcloud resource-manager folders list --organization=[ORGANIZATION_ID] --filter="display_name=XXX"` 检查是否已存在;已存在则复用,缺失则用 `gcloud resource-manager folders create --display-name="XXX" --organization=[ORGANIZATION_ID]` 顺序创建。
- 创建项目并立即关联结算与启用 API:先按显示名检查项目是否已存在(如 `gcloud projects list --filter="parent.id=[FOLDER_ID] AND parent.type=folder AND name=central-logging-monitoring"`);不存在则生成共享 8 位随机后缀,依次执行 `gcloud projects create logging-[SUFFIX] --name="central-logging-monitoring" --folder=[COMMON_FOLDER_ID]`、`gcloud billing projects link logging-[SUFFIX] --billing-account=[BILLING_ACCOUNT_ID]`、`gcloud services enable ... --project=logging-[SUFFIX]`。对 prod-[SUFFIX]、non-prod-[SUFFIX]、dev-[SUFFIX] 重复同样流程(各自在对应文件夹中,启用各自所需 API 列表)。
- 在 `logging-[SUFFIX]` 项目中配置集中日志与监控:创建中央日志桶、创建组织级日志汇、为日志汇授予所需 IAM 权限、配置跨项目监控指标范围。
- 执行验证清单:用 `gcloud org-policies list --organization=[ORGANIZATION_ID]` 确认 17 条策略已生效;确认 4 个文件夹存在;用 `gcloud billing projects list` 确认 4 个项目均已关联结算;确认日志桶 `[ORG_NAME]-logging` 位于 `global` 且保留期为 30 天;用 `gcloud logging sinks describe` 确认组织级日志汇将审计日志路由到该桶且持有标准 writerIdentity;用 `gcloud beta monitoring metrics-scopes describe` 确认 dev、non-prod、prod 项目出现在中央 logging 项目的监控列表中。
适用边界 · 注意事项
- 不适用于单个项目的接入/上线(应使用 google-cloud-recipe-onboarding 或具体产品技能)。
- 需要 Google Cloud Organization 资源、管理员 IAM 权限以及已安装并授权的 gcloud CLI,缺少这些前提时无法使用。
- 该技能处于预览状态,缺少高级功能;需要更多选项时应改用 Google Cloud Setup。