Merge branch 'master' into org-policy-rework
This commit is contained in:
commit
966aaba67f
|
@ -42,6 +42,7 @@ module "billing-organization-ext" {
|
||||||
organization_id = "organizations/${var.billing_account.organization_id}"
|
organization_id = "organizations/${var.billing_account.organization_id}"
|
||||||
iam_additive = {
|
iam_additive = {
|
||||||
"roles/billing.user" = local.billing_ext_users
|
"roles/billing.user" = local.billing_ext_users
|
||||||
|
"roles/billing.costsManager" = local.billing_ext_users
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,3 +56,12 @@ resource "google_billing_account_iam_member" "billing_ext_admin" {
|
||||||
role = "roles/billing.user"
|
role = "roles/billing.user"
|
||||||
member = each.key
|
member = each.key
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "google_billing_account_iam_member" "billing_ext_costsmanager" {
|
||||||
|
for_each = toset(
|
||||||
|
local.billing_ext ? local.billing_ext_users : []
|
||||||
|
)
|
||||||
|
billing_account_id = var.billing_account.id
|
||||||
|
role = "roles/billing.costsManager"
|
||||||
|
member = each.key
|
||||||
|
}
|
||||||
|
|
|
@ -122,10 +122,12 @@ module "branch-pf-dev-sa-cicd" {
|
||||||
each.value.branch == null
|
each.value.branch == null
|
||||||
? format(
|
? format(
|
||||||
local.identity_providers[each.value.identity_provider].principalset_tpl,
|
local.identity_providers[each.value.identity_provider].principalset_tpl,
|
||||||
|
var.automation.federated_identity_pool,
|
||||||
each.value.name
|
each.value.name
|
||||||
)
|
)
|
||||||
: format(
|
: format(
|
||||||
local.identity_providers[each.value.identity_provider].principal_tpl,
|
local.identity_providers[each.value.identity_provider].principal_tpl,
|
||||||
|
var.automation.federated_identity_pool,
|
||||||
each.value.name,
|
each.value.name,
|
||||||
each.value.branch
|
each.value.branch
|
||||||
)
|
)
|
||||||
|
|
|
@ -38,10 +38,12 @@ module "landing-project" {
|
||||||
service_projects = []
|
service_projects = []
|
||||||
}
|
}
|
||||||
iam = {
|
iam = {
|
||||||
"roles/dns.admin" = [local.service_accounts.project-factory-prod]
|
"roles/dns.admin" = compact([
|
||||||
(local.custom_roles.service_project_network_admin) = [
|
try(local.service_accounts.project-factory-prod, null)
|
||||||
local.service_accounts.project-factory-prod
|
])
|
||||||
]
|
(local.custom_roles.service_project_network_admin) = compact([
|
||||||
|
try(local.service_accounts.project-factory-prod, null)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,8 @@ locals {
|
||||||
})]
|
})]
|
||||||
}
|
}
|
||||||
service_accounts = {
|
service_accounts = {
|
||||||
for k, v in coalesce(var.service_accounts, {}) : k => "serviceAccount:${v}"
|
for k, v in coalesce(var.service_accounts, {}) :
|
||||||
|
k => "serviceAccount:${v}" if v != null
|
||||||
}
|
}
|
||||||
stage3_sas_delegated_grants = [
|
stage3_sas_delegated_grants = [
|
||||||
"roles/composer.sharedVpcAgent",
|
"roles/composer.sharedVpcAgent",
|
||||||
|
|
|
@ -40,7 +40,9 @@ module "dev-spoke-project" {
|
||||||
}
|
}
|
||||||
metric_scopes = [module.landing-project.project_id]
|
metric_scopes = [module.landing-project.project_id]
|
||||||
iam = {
|
iam = {
|
||||||
"roles/dns.admin" = compact([local.service_accounts.project-factory-dev])
|
"roles/dns.admin" = compact([
|
||||||
|
try(local.service_accounts.project-factory-dev, null)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,8 +126,8 @@ resource "google_project_iam_binding" "dev_spoke_project_iam_delegated" {
|
||||||
project = module.dev-spoke-project.project_id
|
project = module.dev-spoke-project.project_id
|
||||||
role = "roles/resourcemanager.projectIamAdmin"
|
role = "roles/resourcemanager.projectIamAdmin"
|
||||||
members = compact([
|
members = compact([
|
||||||
local.service_accounts.data-platform-dev,
|
try(local.service_accounts.data-platform-dev, null),
|
||||||
local.service_accounts.project-factory-dev,
|
try(local.service_accounts.project-factory-dev, null),
|
||||||
])
|
])
|
||||||
condition {
|
condition {
|
||||||
title = "dev_stage3_sa_delegated_grants"
|
title = "dev_stage3_sa_delegated_grants"
|
||||||
|
|
|
@ -40,7 +40,9 @@ module "prod-spoke-project" {
|
||||||
}
|
}
|
||||||
metric_scopes = [module.landing-project.project_id]
|
metric_scopes = [module.landing-project.project_id]
|
||||||
iam = {
|
iam = {
|
||||||
"roles/dns.admin" = compact([local.service_accounts.project-factory-prod])
|
"roles/dns.admin" = compact([
|
||||||
|
try(local.service_accounts.project-factory-prod, null)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,8 +126,8 @@ resource "google_project_iam_binding" "prod_spoke_project_iam_delegated" {
|
||||||
project = module.prod-spoke-project.project_id
|
project = module.prod-spoke-project.project_id
|
||||||
role = "roles/resourcemanager.projectIamAdmin"
|
role = "roles/resourcemanager.projectIamAdmin"
|
||||||
members = compact([
|
members = compact([
|
||||||
local.service_accounts.data-platform-prod,
|
try(local.service_accounts.data-platform-prod, null),
|
||||||
local.service_accounts.project-factory-prod,
|
try(local.service_accounts.project-factory-prod, null),
|
||||||
])
|
])
|
||||||
condition {
|
condition {
|
||||||
title = "prod_stage3_sa_delegated_grants"
|
title = "prod_stage3_sa_delegated_grants"
|
||||||
|
|
|
@ -38,10 +38,12 @@ module "landing-project" {
|
||||||
service_projects = []
|
service_projects = []
|
||||||
}
|
}
|
||||||
iam = {
|
iam = {
|
||||||
"roles/dns.admin" = [local.service_accounts.project-factory-prod]
|
"roles/dns.admin" = compact([
|
||||||
(local.custom_roles.service_project_network_admin) = [
|
try(local.service_accounts.project-factory-prod, null)
|
||||||
local.service_accounts.project-factory-prod
|
])
|
||||||
]
|
(local.custom_roles.service_project_network_admin) = compact([
|
||||||
|
try(local.service_accounts.project-factory-prod, null)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,8 @@ locals {
|
||||||
"roles/vpcaccess.user",
|
"roles/vpcaccess.user",
|
||||||
]
|
]
|
||||||
service_accounts = {
|
service_accounts = {
|
||||||
for k, v in coalesce(var.service_accounts, {}) : k => "serviceAccount:${v}"
|
for k, v in coalesce(var.service_accounts, {}) :
|
||||||
|
k => "serviceAccount:${v}" if v != null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,9 @@ module "dev-spoke-project" {
|
||||||
}
|
}
|
||||||
metric_scopes = [module.landing-project.project_id]
|
metric_scopes = [module.landing-project.project_id]
|
||||||
iam = {
|
iam = {
|
||||||
"roles/dns.admin" = compact([local.service_accounts.project-factory-dev])
|
"roles/dns.admin" = compact([
|
||||||
|
try(local.service_accounts.project-factory-dev, null)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,8 +103,8 @@ resource "google_project_iam_binding" "dev_spoke_project_iam_delegated" {
|
||||||
project = module.dev-spoke-project.project_id
|
project = module.dev-spoke-project.project_id
|
||||||
role = "roles/resourcemanager.projectIamAdmin"
|
role = "roles/resourcemanager.projectIamAdmin"
|
||||||
members = compact([
|
members = compact([
|
||||||
local.service_accounts.data-platform-dev,
|
try(local.service_accounts.data-platform-dev, null),
|
||||||
local.service_accounts.project-factory-dev,
|
try(local.service_accounts.project-factory-dev, null),
|
||||||
])
|
])
|
||||||
condition {
|
condition {
|
||||||
title = "dev_stage3_sa_delegated_grants"
|
title = "dev_stage3_sa_delegated_grants"
|
||||||
|
|
|
@ -41,7 +41,9 @@ module "prod-spoke-project" {
|
||||||
}
|
}
|
||||||
metric_scopes = [module.landing-project.project_id]
|
metric_scopes = [module.landing-project.project_id]
|
||||||
iam = {
|
iam = {
|
||||||
"roles/dns.admin" = compact([local.service_accounts.project-factory-prod])
|
"roles/dns.admin" = compact([
|
||||||
|
try(local.service_accounts.project-factory-prod, null)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,8 +103,8 @@ resource "google_project_iam_binding" "prod_spoke_project_iam_delegated" {
|
||||||
project = module.prod-spoke-project.project_id
|
project = module.prod-spoke-project.project_id
|
||||||
role = "roles/resourcemanager.projectIamAdmin"
|
role = "roles/resourcemanager.projectIamAdmin"
|
||||||
members = compact([
|
members = compact([
|
||||||
local.service_accounts.data-platform-prod,
|
try(local.service_accounts.data-platform-prod, null),
|
||||||
local.service_accounts.project-factory-prod,
|
try(local.service_accounts.project-factory-prod, null),
|
||||||
])
|
])
|
||||||
condition {
|
condition {
|
||||||
title = "prod_stage3_sa_delegated_grants"
|
title = "prod_stage3_sa_delegated_grants"
|
||||||
|
|
|
@ -38,10 +38,12 @@ module "landing-project" {
|
||||||
service_projects = []
|
service_projects = []
|
||||||
}
|
}
|
||||||
iam = {
|
iam = {
|
||||||
"roles/dns.admin" = [local.service_accounts.project-factory-prod]
|
"roles/dns.admin" = compact([
|
||||||
(local.custom_roles.service_project_network_admin) = [
|
try(local.service_accounts.project-factory-prod, null)
|
||||||
local.service_accounts.project-factory-prod
|
])
|
||||||
]
|
(local.custom_roles.service_project_network_admin) = compact([
|
||||||
|
try(local.service_accounts.project-factory-prod, null)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,8 @@ locals {
|
||||||
"roles/vpcaccess.user",
|
"roles/vpcaccess.user",
|
||||||
]
|
]
|
||||||
service_accounts = {
|
service_accounts = {
|
||||||
for k, v in coalesce(var.service_accounts, {}) : k => "serviceAccount:${v}"
|
for k, v in coalesce(var.service_accounts, {}) :
|
||||||
|
k => "serviceAccount:${v}" if v != null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,9 @@ module "dev-spoke-project" {
|
||||||
}
|
}
|
||||||
metric_scopes = [module.landing-project.project_id]
|
metric_scopes = [module.landing-project.project_id]
|
||||||
iam = {
|
iam = {
|
||||||
"roles/dns.admin" = compact([local.service_accounts.project-factory-dev])
|
"roles/dns.admin" = compact([
|
||||||
|
try(local.service_accounts.project-factory-dev, null)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,8 +103,8 @@ resource "google_project_iam_binding" "dev_spoke_project_iam_delegated" {
|
||||||
project = module.dev-spoke-project.project_id
|
project = module.dev-spoke-project.project_id
|
||||||
role = "roles/resourcemanager.projectIamAdmin"
|
role = "roles/resourcemanager.projectIamAdmin"
|
||||||
members = compact([
|
members = compact([
|
||||||
local.service_accounts.data-platform-dev,
|
try(local.service_accounts.data-platform-dev, null),
|
||||||
local.service_accounts.project-factory-dev,
|
try(local.service_accounts.project-factory-dev, null),
|
||||||
])
|
])
|
||||||
condition {
|
condition {
|
||||||
title = "dev_stage3_sa_delegated_grants"
|
title = "dev_stage3_sa_delegated_grants"
|
||||||
|
|
|
@ -41,7 +41,9 @@ module "prod-spoke-project" {
|
||||||
}
|
}
|
||||||
metric_scopes = [module.landing-project.project_id]
|
metric_scopes = [module.landing-project.project_id]
|
||||||
iam = {
|
iam = {
|
||||||
"roles/dns.admin" = compact([local.service_accounts.project-factory-prod])
|
"roles/dns.admin" = compact([
|
||||||
|
try(local.service_accounts.project-factory-prod, null)
|
||||||
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,8 +103,8 @@ resource "google_project_iam_binding" "prod_spoke_project_iam_delegated" {
|
||||||
project = module.prod-spoke-project.project_id
|
project = module.prod-spoke-project.project_id
|
||||||
role = "roles/resourcemanager.projectIamAdmin"
|
role = "roles/resourcemanager.projectIamAdmin"
|
||||||
members = compact([
|
members = compact([
|
||||||
local.service_accounts.data-platform-prod,
|
try(local.service_accounts.data-platform-prod, null),
|
||||||
local.service_accounts.project-factory-prod,
|
try(local.service_accounts.project-factory-prod, null),
|
||||||
])
|
])
|
||||||
condition {
|
condition {
|
||||||
title = "prod_stage3_sa_delegated_grants"
|
title = "prod_stage3_sa_delegated_grants"
|
||||||
|
|
Loading…
Reference in New Issue