Repository navigation
Description
Feature Description
Add a declarative YAML-driven folder, project, and policy-exception factory stage (fast/stages-aw/2-project-factory, aligned with upstream Cloud Foundation Fabric FAST) paired with an end-to-end Day-2 GitOps CI/CD change-management workflow so operators can provision custom folders and projects or adapt scoped organization policy, firewall, and VPC-SC exceptions through self-contained pull requests without modifying core Stage 0/1 Terraform HCL.
Use Case
Stellar Engine optimizes for initial Day-0/Day-1 greenfield provisioning (0-bootstrap through 3-security) but provides no low-friction Day-2 change-management pathway when mission requirements, organizational structures, or compliance policies evolve:
- Rigid Folder and Project Topology:
fast/stages-aw/1-resmanhardcodes folders into fixed Terraform branches (branch-envs.tf,branch-tenants.tf,branch-teams.tf,branch-data-platform.tf,branch-gke.tf,branch-gcve.tf,branch-networking.tf,branch-security.tf,branch-sandbox.tf), and lightweight tenants (var.tenantsinbranch-tenants.tf) enforce a fixed two-project layout (iac-core-0andmain-0). Althoughfast/stages-aw/1-resman/branch-project-factory.tfandcicd-project-factory.tfcreatedev-resman-pf-0andprod-resman-pf-0automation service accounts behindvar.fast_features.project_factory,fast/stages-aw/omits the actual2-project-factorystage that consumes them. Adding a single folder or non-standard workload project today requires editing Stage 1 HCL, running a privilegedprod-resman-0plan/apply against the entire resource hierarchy state, and manually re-threading outputs into Stage 2 Shared VPC attachments and Stage 3 VPC-SC boundaries. - Inflexible Policy Adaptation and Waiver Tracking:
0-bootstrapapplies organization-wide policy YAML sets (data/org-policies/anddata/custom-org-policies/), while #294 addedfactories_config.org_policiesoverrides only for lightweight tenant projects in1-resman. Operators lack a declarative folder-scoped and project-scoped exception mechanism with structured audit metadata (approver, ticket/POA&M reference, justification, NIST control impact, and expiration date) to safely accommodate customer or mission policy exceptions without editing Stage 0 baseline files. - Missing Day-2 GitOps Change Control Pipeline: CI/CD templates in
0-bootstrap/templates/and1-resman/templates/lack automated pull-request plan diffing, compliance-guardrail impact summaries (highlighting diffs touchingorgpolicy,vpc-sc, KMS, IAM, or firewall policies for ISSO/AO review), Secure Source Manager + Cloud Build workflows (#198), andCODEOWNERSseparation between routine Day-2 folder/project provisioning and privileged Stage 0/1/3 security boundary changes. As a result, routine tasks such as creating a new program folder or granting a scoped policy override turn into multi-week manual change cycles.
Proposed Solution
- Add
fast/stages-aw/2-project-factory(Declarative Folder Hierarchy and Project Factory): Port and adapt upstream Cloud Foundation Fabric FAST2-project-factory(backed by the existingmodules/project-factorymodule and thebranch-pf-*service accounts in1-resman/branch-project-factory.tf) to manage arbitrary nested folders (data/hierarchy/*.yaml) and workload projects (data/projects/*.yaml) underneath the Assured Workloads compliant folder hierarchy with zero HCL changes. Each YAML definition should declaratively handle folder/project creation, billing linkage and budgets, API activation, CMEK service-agent key grants, Shared VPC host/subnet IAM attachment, group IAM bindings, Secure Tag bindings, and outputs consumed by VPC-SC. - Scoped Policy Exception Factory with Governance Schema (
fast/assets/schemas/): Support declarative folder-level and project-level organization policy overrides (data/org-policies/), firewall policy rule packs, and VPC-SC ingress/egress exception files validated against JSON schemas that support structured governance fields (change_id,approved_by,justification,controls,expires_at), with CI checks alerting on expired waivers or undocumented relaxations of Assured Workloads guardrails. - Day-2 GitOps CI/CD Workflows and Blast-Radius Isolation: Provide ready-to-run pull-request
plan(using*-0rread-only service accounts) and post-approvalapply(using*-0service accounts) pipelines for GitHub Actions, GitLab CI, and Secure Source Manager + Cloud Build (#198), including automated PR plan comments, JSON/YAML schema validation,CODEOWNERSapproval gates separating platform operators (2-project-factory/data/**) from security/compliance approvers (0-bootstrap/**,3-security/**, and policy override paths), and integration with out-of-band drift alerting (#46). - Day-2 Operations and Change Management Guide (
docs/): Add a dedicated Day-2 change-management guide walking through common operational workflows (creating a new folder branch, onboarding a project, applying a time-bounded folder/project org policy exception, and onboarding a new SaaS/PaaS API into VPC-SC and Shared VPC) in a single pull request, mapping PR review records directly to NISTCM-3/ FedRAMP continuous monitoring evidence.
Compliance & Deployment Context
- Target Deployment Type(s):
- US Region Restricted (e.g., Access Policy constraint)
- FedRAMP Moderate
- FedRAMP High
- DoD IL4
- DoD IL5
- All / General
- Relevant NIST 800-53r5 Controls: CM-2 (Baseline Configuration), CM-3 (Configuration Change Control), CM-4 (Impact Analyses), CM-6 (Configuration Settings), AC-6 (Least Privilege), AU-2 (Event Logging).
Reusability Check
Stellar Engine prioritizes reusability.
- I have checked if this functionality can be achieved by extending an existing module or blueprint.
- I have verified that this does not duplicate existing functionality.
modules/project-factory and modules/folder already exist in google/stellar-engine (with full upstream CFF sync tracked in #308), and fast/stages-aw/1-resman/branch-project-factory.tf already provisions the automation service accounts and GCS state buckets intended for a project-factory stage. Extending #294 and #381 into a dedicated YAML-driven 2-project-factory stage and GitOps workflow fills the missing operational layer without duplicating #46, #198, #306, or #388.
Alternatives Considered
- Continuing to expand
var.tenantsand add bespokebranch-*.tffiles insidefast/stages-aw/1-resmancouples every Day-2 folder or project request to privileged Stage 1 Terraform state and custom HCL modifications. - Allowing operators to create folders or adjust organization policies manually in the Google Cloud Console introduces untracked configuration drift and breaks ATO continuous-monitoring evidence chains.
Additional Context
- Affects
fast/stages-aw/1-resman, a newfast/stages-aw/2-project-factorystage,fast/assets/schemas/,fast/assets/templates/, anddocs/. - Relates to #46 (Out-of-Band Drift Alerting), #198 (Secure Source Manager CI/CD migration), #294 (tenant project org policy overrides), #306 (
stellarCLI), #388 (multi-tenant single-org support), and #399 (Zero Trust access and tag-based microsegmentation).
Activity