From 558e552b5e01bfd7a3028fae218af46407b6d45f Mon Sep 17 00:00:00 2001 From: Ludovico Magnocavallo Date: Mon, 19 Jan 2026 16:35:44 +0100 Subject: [PATCH] Support org-level logging cmek config in schema, use context for org-level logging config, update schema docs. (#3657) * support org-level logging cmek config in schema, update schema docs * fix org logging identity context --- fast/stages/0-org-setup/factory.tf | 5 ++++- .../stages/0-org-setup/schemas/folder.schema.md | 13 +++++++++++++ .../schemas/organization.schema.json | 3 +++ .../0-org-setup/schemas/organization.schema.md | 14 ++++++++++++++ .../0-org-setup/schemas/project.schema.md | 13 +++++++++++++ .../2-networking/schemas/folder.schema.md | 13 +++++++++++++ .../2-networking/schemas/project.schema.md | 13 +++++++++++++ fast/stages/2-networking/schemas/vpc.schema.md | 17 +++++++++++++++++ .../2-project-factory/schemas/folder.schema.md | 13 +++++++++++++ .../2-project-factory/schemas/project.schema.md | 13 +++++++++++++ fast/stages/2-security/schemas/folder.schema.md | 13 +++++++++++++ .../stages/2-security/schemas/project.schema.md | 13 +++++++++++++ 12 files changed, 142 insertions(+), 1 deletion(-) diff --git a/fast/stages/0-org-setup/factory.tf b/fast/stages/0-org-setup/factory.tf index 668553fc9..25554c76f 100644 --- a/fast/stages/0-org-setup/factory.tf +++ b/fast/stages/0-org-setup/factory.tf @@ -51,7 +51,10 @@ module "factory" { } ) iam_principals = merge( - local.org_logging_identities, + { + for k, v in local.org_logging_identities : + k => "serviceAccount:${v}" if v != null + }, local.iam_principals ) tag_values = merge( diff --git a/fast/stages/0-org-setup/schemas/folder.schema.md b/fast/stages/0-org-setup/schemas/folder.schema.md index e388835c1..52c48b342 100644 --- a/fast/stages/0-org-setup/schemas/folder.schema.md +++ b/fast/stages/0-org-setup/schemas/folder.schema.md @@ -62,6 +62,7 @@ - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_conditional**: *reference([iam_by_principals_conditional](#refs-iam_by_principals_conditional))* - **name**: *string* - **org_policies**: *object*
*additional properties: false* @@ -157,6 +158,18 @@ - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:)`**: *array* - items: *string*
*pattern: ^(?:roles/|\$custom_roles:)* +- **iam_by_principals_conditional**: *object* +
*additional properties: false* + - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:)`**: *object* +
*additional properties: false* + - ⁺**condition**: *object* +
*additional properties: false* + - ⁺**expression**: *string* + - ⁺**title**: *string* + - **description**: *string* + - ⁺**roles**: *array* + - items: *string* +
*pattern: ^(?:roles/|\$custom_roles:)* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* diff --git a/fast/stages/0-org-setup/schemas/organization.schema.json b/fast/stages/0-org-setup/schemas/organization.schema.json index 3bb6b2085..15de3782e 100644 --- a/fast/stages/0-org-setup/schemas/organization.schema.json +++ b/fast/stages/0-org-setup/schemas/organization.schema.json @@ -98,6 +98,9 @@ "type": "object", "additionalProperties": false, "properties": { + "kms_key_name": { + "type": "string" + }, "storage_location": { "type": "string" }, diff --git a/fast/stages/0-org-setup/schemas/organization.schema.md b/fast/stages/0-org-setup/schemas/organization.schema.md index fa52a77bc..093a4021e 100644 --- a/fast/stages/0-org-setup/schemas/organization.schema.md +++ b/fast/stages/0-org-setup/schemas/organization.schema.md @@ -32,9 +32,11 @@ - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_conditional**: *reference([iam_by_principals_conditional](#refs-iam_by_principals_conditional))* - **iam_by_principals_additive**: *reference([iam_by_principals](#refs-iam_by_principals))* - **logging**: *object*
*additional properties: false* + - **kms_key_name**: *string* - **storage_location**: *string* - **sinks**: *object*
*additional properties: false* @@ -133,6 +135,18 @@ - **`^(?:\$[a-z_-]+:|domain:|group:|serviceAccount:|user:|principal:|principalSet:)`**: *array* - items: *string*
*pattern: ^(?:roles/|\$custom_roles:)* +- **iam_by_principals_conditional**: *object* +
*additional properties: false* + - **`^(?:\$[a-z_-]+:|domain:|group:|serviceAccount:|user:|principal:|principalSet:)`**: *object* +
*additional properties: false* + - ⁺**condition**: *object* +
*additional properties: false* + - ⁺**expression**: *string* + - ⁺**title**: *string* + - **description**: *string* + - ⁺**roles**: *array* + - items: *string* +
*pattern: ^(?:roles/|\$custom_roles:)* - **pam_entitlements**: *object*
*additional properties: false* - **`^[a-z][a-z0-9-]{0,61}[a-z0-9]$`**: *object* diff --git a/fast/stages/0-org-setup/schemas/project.schema.md b/fast/stages/0-org-setup/schemas/project.schema.md index 137ad054f..a31495b7e 100644 --- a/fast/stages/0-org-setup/schemas/project.schema.md +++ b/fast/stages/0-org-setup/schemas/project.schema.md @@ -71,6 +71,7 @@ - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_conditional**: *reference([iam_by_principals_conditional](#refs-iam_by_principals_conditional))* - **iam_by_principals_additive**: *reference([iam_by_principals](#refs-iam_by_principals))* - **kms**: *object*
*additional properties: false* @@ -342,6 +343,18 @@ - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:[a-z0-9_-]+)`**: *array* - items: *string*
*pattern: ^(?:roles/|\$custom_roles:)* +- **iam_by_principals_conditional**: *object* +
*additional properties: false* + - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:[a-z0-9_-]+)`**: *object* +
*additional properties: false* + - ⁺**condition**: *object* +
*additional properties: false* + - ⁺**expression**: *string* + - ⁺**title**: *string* + - **description**: *string* + - ⁺**roles**: *array* + - items: *string* +
*pattern: ^(?:roles/|\$custom_roles:)* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* diff --git a/fast/stages/2-networking/schemas/folder.schema.md b/fast/stages/2-networking/schemas/folder.schema.md index e388835c1..52c48b342 100644 --- a/fast/stages/2-networking/schemas/folder.schema.md +++ b/fast/stages/2-networking/schemas/folder.schema.md @@ -62,6 +62,7 @@ - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_conditional**: *reference([iam_by_principals_conditional](#refs-iam_by_principals_conditional))* - **name**: *string* - **org_policies**: *object*
*additional properties: false* @@ -157,6 +158,18 @@ - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:)`**: *array* - items: *string*
*pattern: ^(?:roles/|\$custom_roles:)* +- **iam_by_principals_conditional**: *object* +
*additional properties: false* + - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:)`**: *object* +
*additional properties: false* + - ⁺**condition**: *object* +
*additional properties: false* + - ⁺**expression**: *string* + - ⁺**title**: *string* + - **description**: *string* + - ⁺**roles**: *array* + - items: *string* +
*pattern: ^(?:roles/|\$custom_roles:)* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* diff --git a/fast/stages/2-networking/schemas/project.schema.md b/fast/stages/2-networking/schemas/project.schema.md index 137ad054f..a31495b7e 100644 --- a/fast/stages/2-networking/schemas/project.schema.md +++ b/fast/stages/2-networking/schemas/project.schema.md @@ -71,6 +71,7 @@ - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_conditional**: *reference([iam_by_principals_conditional](#refs-iam_by_principals_conditional))* - **iam_by_principals_additive**: *reference([iam_by_principals](#refs-iam_by_principals))* - **kms**: *object*
*additional properties: false* @@ -342,6 +343,18 @@ - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:[a-z0-9_-]+)`**: *array* - items: *string*
*pattern: ^(?:roles/|\$custom_roles:)* +- **iam_by_principals_conditional**: *object* +
*additional properties: false* + - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:[a-z0-9_-]+)`**: *object* +
*additional properties: false* + - ⁺**condition**: *object* +
*additional properties: false* + - ⁺**expression**: *string* + - ⁺**title**: *string* + - **description**: *string* + - ⁺**roles**: *array* + - items: *string* +
*pattern: ^(?:roles/|\$custom_roles:)* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* diff --git a/fast/stages/2-networking/schemas/vpc.schema.md b/fast/stages/2-networking/schemas/vpc.schema.md index 82620a37e..d8c001fe5 100644 --- a/fast/stages/2-networking/schemas/vpc.schema.md +++ b/fast/stages/2-networking/schemas/vpc.schema.md @@ -79,6 +79,23 @@ - **import_routes**: *boolean* - **policy_based_routes**: *object* - **`^[a-z0-9-]+$`**: *object* +
*additional properties: false* + - **description**: *string* + - **filter**: *object* +
*additional properties: false* + - **dest_range**: *string* + - **ip_protocol**: *string* + - **src_range**: *string* + - **labels**: *object* +
*additional properties: string* + - **next_hop_ilb_ip**: *string* + - **priority**: *number* + - **target**: *object* +
*additional properties: false* + - **interconnect_attachment**: *string* + - **tags**: *array* + - items: *string* + - **use_default_routing**: *boolean* - **psa_config**: *object* - **deletion_policy**: *string* - **ranges**: *object* diff --git a/fast/stages/2-project-factory/schemas/folder.schema.md b/fast/stages/2-project-factory/schemas/folder.schema.md index e388835c1..52c48b342 100644 --- a/fast/stages/2-project-factory/schemas/folder.schema.md +++ b/fast/stages/2-project-factory/schemas/folder.schema.md @@ -62,6 +62,7 @@ - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_conditional**: *reference([iam_by_principals_conditional](#refs-iam_by_principals_conditional))* - **name**: *string* - **org_policies**: *object*
*additional properties: false* @@ -157,6 +158,18 @@ - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:)`**: *array* - items: *string*
*pattern: ^(?:roles/|\$custom_roles:)* +- **iam_by_principals_conditional**: *object* +
*additional properties: false* + - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:)`**: *object* +
*additional properties: false* + - ⁺**condition**: *object* +
*additional properties: false* + - ⁺**expression**: *string* + - ⁺**title**: *string* + - **description**: *string* + - ⁺**roles**: *array* + - items: *string* +
*pattern: ^(?:roles/|\$custom_roles:)* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* diff --git a/fast/stages/2-project-factory/schemas/project.schema.md b/fast/stages/2-project-factory/schemas/project.schema.md index 137ad054f..a31495b7e 100644 --- a/fast/stages/2-project-factory/schemas/project.schema.md +++ b/fast/stages/2-project-factory/schemas/project.schema.md @@ -71,6 +71,7 @@ - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_conditional**: *reference([iam_by_principals_conditional](#refs-iam_by_principals_conditional))* - **iam_by_principals_additive**: *reference([iam_by_principals](#refs-iam_by_principals))* - **kms**: *object*
*additional properties: false* @@ -342,6 +343,18 @@ - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:[a-z0-9_-]+)`**: *array* - items: *string*
*pattern: ^(?:roles/|\$custom_roles:)* +- **iam_by_principals_conditional**: *object* +
*additional properties: false* + - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:[a-z0-9_-]+)`**: *object* +
*additional properties: false* + - ⁺**condition**: *object* +
*additional properties: false* + - ⁺**expression**: *string* + - ⁺**title**: *string* + - **description**: *string* + - ⁺**roles**: *array* + - items: *string* +
*pattern: ^(?:roles/|\$custom_roles:)* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* diff --git a/fast/stages/2-security/schemas/folder.schema.md b/fast/stages/2-security/schemas/folder.schema.md index e388835c1..52c48b342 100644 --- a/fast/stages/2-security/schemas/folder.schema.md +++ b/fast/stages/2-security/schemas/folder.schema.md @@ -62,6 +62,7 @@ - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_conditional**: *reference([iam_by_principals_conditional](#refs-iam_by_principals_conditional))* - **name**: *string* - **org_policies**: *object*
*additional properties: false* @@ -157,6 +158,18 @@ - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:)`**: *array* - items: *string*
*pattern: ^(?:roles/|\$custom_roles:)* +- **iam_by_principals_conditional**: *object* +
*additional properties: false* + - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:)`**: *object* +
*additional properties: false* + - ⁺**condition**: *object* +
*additional properties: false* + - ⁺**expression**: *string* + - ⁺**title**: *string* + - **description**: *string* + - ⁺**roles**: *array* + - items: *string* +
*pattern: ^(?:roles/|\$custom_roles:)* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array* diff --git a/fast/stages/2-security/schemas/project.schema.md b/fast/stages/2-security/schemas/project.schema.md index 137ad054f..a31495b7e 100644 --- a/fast/stages/2-security/schemas/project.schema.md +++ b/fast/stages/2-security/schemas/project.schema.md @@ -71,6 +71,7 @@ - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* +- **iam_by_principals_conditional**: *reference([iam_by_principals_conditional](#refs-iam_by_principals_conditional))* - **iam_by_principals_additive**: *reference([iam_by_principals](#refs-iam_by_principals))* - **kms**: *object*
*additional properties: false* @@ -342,6 +343,18 @@ - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:[a-z0-9_-]+)`**: *array* - items: *string*
*pattern: ^(?:roles/|\$custom_roles:)* +- **iam_by_principals_conditional**: *object* +
*additional properties: false* + - **`^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|\$iam_principals:[a-z0-9_-]+)`**: *object* +
*additional properties: false* + - ⁺**condition**: *object* +
*additional properties: false* + - ⁺**expression**: *string* + - ⁺**title**: *string* + - **description**: *string* + - ⁺**roles**: *array* + - items: *string* +
*pattern: ^(?:roles/|\$custom_roles:)* - **iam_billing_roles**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *array*