Skip to content

Commit 13af6a3

Browse files
authored
feat: provide secure api token via secret manager in cloud run (#141)
1 parent 952a773 commit 13af6a3

File tree

6 files changed

+59
-29
lines changed

6 files changed

+59
-29
lines changed

examples/organization-org_compliance/main.tf

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
locals {
2-
verify_ssl = length(regexall("^https://.*?\\.sysdig.com/?", data.sysdig_secure_connection.current.secure_url)) != 0
3-
connector_filter = <<EOT
2+
verify_ssl = length(regexall("^https://.*?\\.sysdig.com/?", data.sysdig_secure_connection.current.secure_url)) != 0
3+
connector_filter = <<EOT
44
logName=~"/logs/cloudaudit.googleapis.com%2Factivity$" AND -resource.type="k8s_cluster"
55
EOT
6-
repository_project_ids = var.deploy_scanning ? length(var.repository_project_ids) == 0 ? [for p in data.google_projects.all_projects.projects : p.project_id] : var.repository_project_ids : []
6+
repository_project_ids = var.deploy_scanning ? length(var.repository_project_ids) == 0 ? [
7+
for p in data.google_projects.all_projects.projects : p.project_id
8+
] : var.repository_project_ids : []
79
}
810

911
data "google_organization" "org" {
@@ -67,13 +69,13 @@ module "secure_secrets" {
6769
module "cloud_connector" {
6870
source = "../../modules/services/cloud-connector"
6971

70-
cloud_connector_sa_email = google_service_account.connector_sa.email
71-
sysdig_secure_endpoint = data.sysdig_secure_connection.current.secure_url
72-
sysdig_secure_api_token = data.sysdig_secure_connection.current.secure_api_token
73-
connector_pubsub_topic_id = module.connector_organization_sink.pubsub_topic_id
74-
secure_api_token_secret_id = module.secure_secrets.secure_api_token_secret_name
75-
max_instances = var.max_instances
76-
project_id = data.google_client_config.current.project
72+
cloud_connector_sa_email = google_service_account.connector_sa.email
73+
sysdig_secure_endpoint = data.sysdig_secure_connection.current.secure_url
74+
sysdig_secure_api_token_secret_id = module.secure_secrets.secure_api_token_secret_name
75+
connector_pubsub_topic_id = module.connector_organization_sink.pubsub_topic_id
76+
secure_api_token_secret_id = module.secure_secrets.secure_api_token_secret_name
77+
max_instances = var.max_instances
78+
project_id = data.google_client_config.current.project
7779

7880
#defaults
7981
name = "${var.name}-cloudconnector"

examples/organization/main.tf

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
locals {
2-
verify_ssl = length(regexall("^https://.*?\\.sysdig.com/?", data.sysdig_secure_connection.current.secure_url)) != 0
3-
connector_filter = <<EOT
2+
verify_ssl = length(regexall("^https://.*?\\.sysdig.com/?", data.sysdig_secure_connection.current.secure_url)) != 0
3+
connector_filter = <<EOT
44
logName=~"/logs/cloudaudit.googleapis.com%2Factivity$" AND -resource.type="k8s_cluster"
55
EOT
6-
repository_project_ids = var.deploy_scanning ? length(var.repository_project_ids) == 0 ? [for p in data.google_projects.all_projects.projects : p.project_id] : var.repository_project_ids : []
6+
repository_project_ids = var.deploy_scanning ? length(var.repository_project_ids) == 0 ? [
7+
for p in data.google_projects.all_projects.projects : p.project_id
8+
] : var.repository_project_ids : []
79
}
810

911
data "google_organization" "org" {
@@ -67,13 +69,13 @@ module "secure_secrets" {
6769
module "cloud_connector" {
6870
source = "../../modules/services/cloud-connector"
6971

70-
cloud_connector_sa_email = google_service_account.connector_sa.email
71-
sysdig_secure_endpoint = data.sysdig_secure_connection.current.secure_url
72-
sysdig_secure_api_token = data.sysdig_secure_connection.current.secure_api_token
73-
connector_pubsub_topic_id = module.connector_organization_sink.pubsub_topic_id
74-
secure_api_token_secret_id = module.secure_secrets.secure_api_token_secret_name
75-
max_instances = var.max_instances
76-
project_id = data.google_client_config.current.project
72+
cloud_connector_sa_email = google_service_account.connector_sa.email
73+
sysdig_secure_endpoint = data.sysdig_secure_connection.current.secure_url
74+
sysdig_secure_api_token_secret_id = module.secure_secrets.secure_api_token_secret_name
75+
connector_pubsub_topic_id = module.connector_organization_sink.pubsub_topic_id
76+
secure_api_token_secret_id = module.secure_secrets.secure_api_token_secret_name
77+
max_instances = var.max_instances
78+
project_id = data.google_client_config.current.project
7779

7880
#defaults
7981
name = "${var.name}-cloudconnector"

examples/single-project/main.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ module "cloud_connector" {
3232
source = "../../modules/services/cloud-connector"
3333
name = "${var.name}-cloudconnector"
3434

35-
sysdig_secure_endpoint = data.sysdig_secure_connection.current.secure_url
36-
sysdig_secure_api_token = data.sysdig_secure_connection.current.secure_api_token
37-
verify_ssl = local.verify_ssl
35+
sysdig_secure_endpoint = data.sysdig_secure_connection.current.secure_url
36+
sysdig_secure_api_token_secret_id = module.secure_secrets.secure_api_token_secret_name
37+
verify_ssl = local.verify_ssl
3838

3939
project_id = data.google_client_config.current.project
4040
cloud_connector_sa_email = google_service_account.connector_sa.email

modules/services/cloud-connector/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ No modules.
5959
| <a name="input_connector_pubsub_topic_id"></a> [connector\_pubsub\_topic\_id](#input\_connector\_pubsub\_topic\_id) | Cloud Connector PubSub single account topic id | `string` | n/a | yes |
6060
| <a name="input_project_id"></a> [project\_id](#input\_project\_id) | organizational member project ID where the secure-for-cloud workload is going to be deployed | `string` | n/a | yes |
6161
| <a name="input_secure_api_token_secret_id"></a> [secure\_api\_token\_secret\_id](#input\_secure\_api\_token\_secret\_id) | Sysdig Secure API token secret id | `string` | n/a | yes |
62-
| <a name="input_sysdig_secure_api_token"></a> [sysdig\_secure\_api\_token](#input\_sysdig\_secure\_api\_token) | Sysdig's Secure API Token | `string` | n/a | yes |
6362
| <a name="input_sysdig_secure_endpoint"></a> [sysdig\_secure\_endpoint](#input\_sysdig\_secure\_endpoint) | Sysdig's Secure API URL | `string` | n/a | yes |
6463
| <a name="input_cpu"></a> [cpu](#input\_cpu) | Amount of CPU to reserve for cloud-connector cloud run service | `string` | `"1"` | no |
6564
| <a name="input_deploy_scanning"></a> [deploy\_scanning](#input\_deploy\_scanning) | true/false whether scanning module is to be deployed | `bool` | `false` | no |
@@ -69,6 +68,8 @@ No modules.
6968
| <a name="input_max_instances"></a> [max\_instances](#input\_max\_instances) | Max number of instances for the Cloud Connector | `number` | `1` | no |
7069
| <a name="input_memory"></a> [memory](#input\_memory) | Amount of memory to reserve for cloud-connector cloud run service | `string` | `"500Mi"` | no |
7170
| <a name="input_name"></a> [name](#input\_name) | Name to be assigned to all child resources. A suffix may be added internally when required. Use default value unless you need to install multiple instances | `string` | `"sfc-cloudconnector"` | no |
71+
| <a name="input_sysdig_secure_api_token"></a> [sysdig\_secure\_api\_token](#input\_sysdig\_secure\_api\_token) | Sysdig's Secure API Token. Deprecated, use sysdig\_secure\_api\_token\_secret\_id instead, with a secret manager secret. | `string` | `""` | no |
72+
| <a name="input_sysdig_secure_api_token_secret_id"></a> [sysdig\_secure\_api\_token\_secret\_id](#input\_sysdig\_secure\_api\_token\_secret\_id) | Sysdig's Secure API Token secret id | `string` | `""` | no |
7273
| <a name="input_verify_ssl"></a> [verify\_ssl](#input\_verify\_ssl) | Verify the SSL certificate of the Secure endpoint | `bool` | `true` | no |
7374

7475
## Outputs

modules/services/cloud-connector/main.tf

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,30 @@ resource "google_cloud_run_service" "cloud_connector" {
7878
container_port = 5000
7979
}
8080

81-
env {
82-
#TODO: Put secrets in secretsmanager?
83-
name = "SECURE_API_TOKEN"
84-
value = var.sysdig_secure_api_token
81+
dynamic "env" {
82+
for_each = var.sysdig_secure_api_token == "" ? [] : [1]
83+
84+
content {
85+
name = "SECURE_API_TOKEN"
86+
value = var.sysdig_secure_api_token
87+
}
8588
}
8689

90+
dynamic "env" {
91+
for_each = var.sysdig_secure_api_token_secret_id == "" ? [] : [1]
92+
93+
content {
94+
name = "SECURE_API_TOKEN"
95+
value_from {
96+
secret_key_ref {
97+
name = var.sysdig_secure_api_token_secret_id
98+
key = "latest"
99+
}
100+
}
101+
}
102+
}
103+
104+
87105
dynamic "env" {
88106
for_each = toset(local.task_env_vars)
89107

modules/services/cloud-connector/variables.tf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,17 @@ variable "cloud_connector_sa_email" {
66

77
variable "sysdig_secure_api_token" {
88
type = string
9-
description = "Sysdig's Secure API Token"
9+
description = "Sysdig's Secure API Token. Deprecated, use sysdig_secure_api_token_secret_id instead, with a secret manager secret."
10+
default = ""
1011
sensitive = true
1112
}
1213

14+
variable "sysdig_secure_api_token_secret_id" {
15+
type = string
16+
description = "Sysdig's Secure API Token secret id"
17+
default = ""
18+
}
19+
1320
variable "sysdig_secure_endpoint" {
1421
type = string
1522
description = "Sysdig's Secure API URL"

0 commit comments

Comments
 (0)