-
Notifications
You must be signed in to change notification settings - Fork 14
Add support for FedRAMP Moderate Assured Workloads deployments #162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
2eb2b38
dcdf353
f04e2c0
44cd278
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| # Copyright 2025 Google LLC | ||
| # | ||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||
| # you may not use this file except in compliance with the License. | ||
| # You may obtain a copy of the License at | ||
| # | ||
| # http://www.apache.org/licenses/LICENSE-2.0 | ||
| # | ||
| # Unless required by applicable law or agreed to in writing, software | ||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| # See the License for the specific language governing permissions and | ||
| # limitations under the License. | ||
|
|
||
| --- | ||
| %{ if !contains(["FEDRAMP_MODERATE"], regime) ~} | ||
| # This boolean constraint, when enforced, disables creating Cloud Armor security | ||
| # policies. By default, you can create Cloud Armor security policies in any | ||
| # organization, folder, or project. | ||
| # COULD HAVE | ||
| compute.disableGlobalCloudArmorPolicy: | ||
| rules: | ||
| - enforce: true | ||
|
|
||
| # This boolean constraint disables creation of global load balancing products. | ||
| # When enforced, only regional load balancing products without global dependencies | ||
| # can be created. By default, creation of global load balancing is allowed. | ||
| # COULD HAVE | ||
| compute.disableGlobalLoadBalancing: | ||
| rules: | ||
| - enforce: true | ||
|
|
||
| # This boolean constraint, when enforced, disables creation of global | ||
| # self-managed SSL Certificates. Creation of google-managed or regional | ||
| # self-managed certificates is not disabled by this constraint. By default, | ||
| # you can create global self-managed SSL Certificates in any organization, | ||
| # folder, or project. | ||
| # COULD HAVE | ||
| compute.disableGlobalSelfManagedSslCertificate: | ||
| rules: | ||
| - enforce: true | ||
|
|
||
| # This list constraint defines the set of load balancer types which can be | ||
| # created for an organization, folder, or project. Every load balancer type | ||
| # to be allowed or denied must be listed explicitly. By default, creation of | ||
| # all types of load balancers is allowed. The list of allowed or denied values | ||
| # must be identified as the string name of a load balancer, and can only | ||
| # include values from the list below: | ||
| # [ INTERNAL_TCP_UDP, INTERNAL_HTTP_HTTPS, EXTERNAL_NETWORK_TCP_UDP, | ||
| # EXTERNAL_TCP_PROXY, EXTERNAL_SSL_PROXY, EXTERNAL_HTTP_HTTPS, | ||
| # EXTERNAL_MANAGED_HTTP_HTTPS, REGIONAL_INTERNAL_MANAGED_TCP_PROXY, | ||
| # REGIONAL_EXTERNAL_MANAGED_TCP_PROXY, | ||
| # GLOBAL_EXTERNAL_MANAGED_HTTP_HTTPS]. | ||
| # To include all internal or all external load balancer types, use the | ||
| # in: prefix followed by INTERNAL or EXTERNAL. For example, allowing | ||
| # in:INTERNAL will allow all load balancer types from the above list that | ||
| # include INTERNAL. | ||
| # COULD HAVE | ||
| compute.restrictLoadBalancerCreationForTypes: | ||
| rules: | ||
| - allow: | ||
| values: | ||
| - in:INTERNAL | ||
| %{ endif ~} | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -35,5 +35,6 @@ locals { | |
| kms = var.regions.primary | ||
| } | ||
| # naming: environment used in most resource names | ||
| prefix = join("-", compact([var.prefix, "prod"])) | ||
| prefix = join("-", compact([var.prefix, "prod"])) | ||
| kms_protection_level = coalesce(var.kms_protection_level, var.assured_workloads.regime == "FEDRAMP_MODERATE" ? "SOFTWARE" : "HSM") | ||
|
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. as mentioned in the PR description, FRM does not require FIPS 140-3 Level 3 so |
||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -163,6 +163,11 @@ output "custom_roles" { | |
| value = module.organization.custom_role_id | ||
| } | ||
|
|
||
| output "kms_protection_level" { | ||
| description = "KMS protection level." | ||
| value = var.kms_protection_level | ||
| } | ||
|
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. include in output so it can be used downstream |
||
|
|
||
| output "outputs_bucket" { | ||
| description = "GCS bucket where generated output files are stored." | ||
| value = module.automation-tf-output-gcs.name | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -200,7 +200,7 @@ module "kms" { | |
| purpose = "ENCRYPT_DECRYPT" | ||
| version_template = { | ||
| algorithm = "GOOGLE_SYMMETRIC_ENCRYPTION" | ||
| protection_level = "HSM" | ||
| protection_level = var.kms_protection_level | ||
|
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is the only difference between the FRH and FRM networking configuration, I decided not to make a separate directory for FRM for this single change (and is consistent with how IL4 and IL5 share networking code) |
||
| } | ||
| } | ||
| } | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
all of the below
custom-org-policiesadhere to what a default FRM Assured Workloads folder would set for you