diff --git a/blueprints/fedramp-high/app-engine/README.md b/blueprints/fedramp-high/app-engine/README.md index 7342bfa1d..58812d1d8 100644 --- a/blueprints/fedramp-high/app-engine/README.md +++ b/blueprints/fedramp-high/app-engine/README.md @@ -37,6 +37,38 @@ You should see this README and some terraform files. Use the GCP consule to verify if the resources have been created. ```To verify the creation of Instance classes: Go to Instances in your landing project```
+ +## Deployer Permissions + +The service account or identity deploying this blueprint requires the following roles: +- **Workload Project (`main_project_id`):** + - `roles/appengine.appCreator` or `roles/appengine.appAdmin` + - `roles/serviceusage.serviceUsageAdmin` + +### Impersonated Deployment Configuration + +When deploying through service account impersonation, the Terraform `google` and `google-beta` providers must specify `user_project_override = true` and `billing_project` set to the workload project. Without this setting, provider-level quota and API enablement checks resolve against the deploying service account's project rather than the target workload project, leading to false `SERVICE_DISABLED` errors. + +Example provider configuration: + +```hcl +provider "google" { + project = "" + region = "" + impersonate_service_account = "@.iam.gserviceaccount.com" + user_project_override = true + billing_project = "" +} + +provider "google-beta" { + project = "" + region = "" + impersonate_service_account = "@.iam.gserviceaccount.com" + user_project_override = true + billing_project = "" +} +``` + ## Variables diff --git a/blueprints/il5/postgresql/README.md b/blueprints/il5/postgresql/README.md index 7ecc85c20..b18cd7dfb 100644 --- a/blueprints/il5/postgresql/README.md +++ b/blueprints/il5/postgresql/README.md @@ -17,8 +17,42 @@ limitations under the License. 1. Copy terraform.tfvars.sample to terraform.tfvars 1. Updated terraform.tfvars -## Notes -1. This blueprint consumes the shared `cloudsql-instance` module and attaches to an existing Private Service Access (PSA) connection via `psa_config.private_network`. It does not create or manage the underlying IP address reservation or VPC peering connection. +## Deployer Permissions + +The service account or identity deploying this blueprint requires the following roles: +- **Workload Project (`main_project_id`):** + - `roles/cloudsql.admin` + - `roles/serviceusage.serviceUsageAdmin` +- **Network Host Project (`network_project_id`):** + - `roles/compute.networkUser` + - `roles/compute.securityAdmin` (for managing the firewall rule) +- **KMS Project / Key (`kms_key_name`):** + - `roles/cloudkms.cryptoKeyEncrypterDecrypter` + +### Impersonated Deployment Configuration + +When deploying through service account impersonation, the Terraform `google` and `google-beta` providers must specify `user_project_override = true` and `billing_project` set to the workload project. Without this setting, provider-level quota and API enablement checks resolve against the deploying service account's project rather than the target workload project, leading to false `SERVICE_DISABLED` errors. + +Example provider configuration: + +```hcl +provider "google" { + project = "" + region = "" + impersonate_service_account = "@.iam.gserviceaccount.com" + user_project_override = true + billing_project = "" +} + +provider "google-beta" { + project = "" + region = "" + impersonate_service_account = "@.iam.gserviceaccount.com" + user_project_override = true + billing_project = "" +} +``` + ## Variables diff --git a/fast/stages-aw/0-bootstrap/data/custom-org-policies/platform_policy.yaml b/fast/stages-aw/0-bootstrap/data/custom-org-policies/platform_policy.yaml index 8252a2bf9..972f06110 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-org-policies/platform_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-org-policies/platform_policy.yaml @@ -98,6 +98,7 @@ iam.allowedPolicyMemberDomains: essentialcontacts.managed.allowedContactDomains: rules: - enforce: true + parameters: '{"allowedDomains":["@${domain_name}"]}' %{ if !contains(["FEDRAMP_MODERATE"], regime) ~}