1+ # -----------------------------------------------------------------------------------------
2+ # Fetch the data sources
3+ # -----------------------------------------------------------------------------------------
4+ data "sysdig_secure_agentless_scanning_assets" "assets" {}
5+
16locals {
27 suffix = random_id. suffix . hex
38}
@@ -54,6 +59,8 @@ resource "google_iam_workload_identity_pool" "agentless" {
5459}
5560
5661resource "google_iam_workload_identity_pool_provider" "agentless" {
62+ count = data. sysdig_secure_agentless_scanning_assets . assets . backend . type == " aws" ? 1 : 0
63+
5764 project = var. project_id
5865 workload_identity_pool_id = google_iam_workload_identity_pool. agentless . workload_identity_pool_id
5966 workload_identity_pool_provider_id = " sysdig-wl-${ local . suffix } "
@@ -76,11 +83,41 @@ resource "google_iam_workload_identity_pool_provider" "agentless" {
7683}
7784
7885resource "google_service_account_iam_member" "controller_binding" {
86+ count = data. sysdig_secure_agentless_scanning_assets . assets . backend . type == " aws" ? 1 : 0
87+
7988 service_account_id = google_service_account. controller . name
8089 role = " roles/iam.workloadIdentityUser"
8190 member = " principalSet://iam.googleapis.com/${ google_iam_workload_identity_pool . agentless . name } /attribute.aws_account/${ data . sysdig_secure_trusted_cloud_identity . trusted_identity . aws_account_id } "
8291}
8392
93+ resource "google_iam_workload_identity_pool_provider" "agentless_gcp" {
94+ count = data. sysdig_secure_agentless_scanning_assets . assets . backend . type == " gcp" ? 1 : 0
95+
96+ workload_identity_pool_id = google_iam_workload_identity_pool. agentless . workload_identity_pool_id
97+ workload_identity_pool_provider_id = " sysdig-wl-${ local . suffix } "
98+ display_name = " Sysdig Agentless Workload"
99+ description = " GCP identity pool provider for Sysdig Secure Agentless Workload Scanning"
100+ disabled = false
101+
102+ attribute_condition = " google.subject == \" ${ data . sysdig_secure_agentless_scanning_assets . assets . backend . cloud_id } \" "
103+
104+ attribute_mapping = {
105+ " google.subject" = " assertion.sub"
106+ " attribute.sa_id" = " assertion.sub"
107+ }
108+
109+ oidc {
110+ issuer_uri = " https://accounts.google.com"
111+ }
112+ }
113+
114+ resource "google_service_account_iam_member" "controller_binding_gcp" {
115+ count = data. sysdig_secure_agentless_scanning_assets . assets . backend . type == " gcp" ? 1 : 0
116+
117+ service_account_id = google_service_account. controller . name
118+ role = " roles/iam.workloadIdentityUser"
119+ member = " principalSet://iam.googleapis.com/${ google_iam_workload_identity_pool . agentless . name } /attribute.sa_id/${ data . sysdig_secure_agentless_scanning_assets . assets . backend . cloud_id } "
120+ }
84121
85122# --------------------------------------------------------------------------------------------------------------
86123# Call Sysdig Backend to add the service-principal integration for VM Workload Scanning to the Sysdig Cloud Account
@@ -94,7 +131,7 @@ resource "sysdig_secure_cloud_auth_account_component" "google_service_principal"
94131 gcp = {
95132 workload_identity_federation = {
96133 pool_id = google_iam_workload_identity_pool.agentless.workload_identity_pool_id
97- pool_provider_id = google_iam_workload_identity_pool_provider.agentless.workload_identity_pool_provider_id
134+ pool_provider_id = data.sysdig_secure_agentless_scanning_assets.assets.backend == " aws " ? google_iam_workload_identity_pool_provider.agentless[ 0 ].workload_identity_pool_provider_id : google_iam_workload_identity_pool_provider.agentless_gcp[ 0 ] .workload_identity_pool_provider_id
98135 project_number = data.google_project.project.number
99136 }
100137 email = google_service_account.controller.email
@@ -105,6 +142,10 @@ resource "sysdig_secure_cloud_auth_account_component" "google_service_principal"
105142 google_project_iam_custom_role . controller ,
106143 google_project_iam_binding . controller_binding ,
107144 google_iam_workload_identity_pool . agentless ,
145+ google_iam_workload_identity_pool_provider . agentless ,
146+ google_iam_workload_identity_pool_provider . agentless_gcp ,
147+ google_service_account_iam_member . controller_binding ,
148+ google_service_account_iam_member . controller_binding_gcp ,
108149 google_organization_iam_member . controller ,
109150 ]
110151}
0 commit comments