Skip to content

Commit 054359d

Browse files
add: Sops apiconfig (#2662)
* add sops apiconfig * fix
1 parent 90f5337 commit 054359d

35 files changed

+798
-261
lines changed

src/domains/apiconfig-app/02_security.tf

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,6 @@ data "azurerm_key_vault" "core_kv" {
88
resource_group_name = "${local.product}-sec-rg"
99
}
1010

11-
resource "azurerm_key_vault_secret" "apiconfig_client_secret" {
12-
name = "apiconfig-core-client-secret"
13-
value = "TODO" # TODO
14-
content_type = "text/plain"
15-
16-
key_vault_id = data.azurerm_key_vault.kv.id
17-
}
18-
19-
2011
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
2112
resource "azurerm_key_vault_secret" "db_nodo_usr" {
2213
name = "db-nodo-usr"

src/domains/apiconfig-app/04_apim_api_config.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ resource "azurerm_api_management_authorization_server" "apiconfig-oauth2" {
101101
default_scope = format("%s/%s",
102102
data.azuread_application.apiconfig-be.identifier_uris[0],
103103
"access-apiconfig-be")
104-
client_secret = azurerm_key_vault_secret.apiconfig_client_secret.value
104+
# client_secret = azurerm_key_vault_secret.apiconfig_client_secret.value
105105

106106
bearer_token_sending_methods = ["authorizationHeader"]
107107
client_authentication_method = ["Body"]

src/domains/apiconfig-common/02_azdo.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ data "azurerm_user_assigned_identity" "iac_federated_azdo" {
1111
resource "azurerm_key_vault_access_policy" "azdevops_iac_managed_identities" {
1212
for_each = local.azdo_iac_managed_identities
1313

14-
key_vault_id = module.key_vault.id
14+
key_vault_id = data.azurerm_key_vault.key_vault.id
1515
tenant_id = data.azurerm_client_config.current.tenant_id
1616
object_id = data.azurerm_user_assigned_identity.iac_federated_azdo[each.key].principal_id
1717

18-
secret_permissions = ["Get", "List", "Set", ]
19-
18+
key_permissions = ["Get", "GetRotationPolicy", "Decrypt"]
19+
secret_permissions = ["Get", "List", "Set", ]
2020
certificate_permissions = ["SetIssuers", "DeleteIssuers", "Purge", "List", "Get"]
2121

2222
storage_permissions = []
@@ -41,7 +41,7 @@ resource "azurerm_key_vault_access_policy" "azdevops_iac_legacy_policies" {
4141
data.azuread_service_principal.iac_plan_legacy.object_id,
4242
data.azuread_service_principal.iac_deploy_legacy.object_id
4343
])
44-
key_vault_id = module.key_vault.id
44+
key_vault_id = data.azurerm_key_vault.key_vault.id
4545
tenant_id = data.azurerm_client_config.current.tenant_id
4646
object_id = each.key
4747

Lines changed: 14 additions & 246 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,11 @@
1-
resource "azurerm_resource_group" "sec_rg" {
2-
name = "${local.product}-${var.domain}-sec-rg"
3-
location = var.location
4-
5-
tags = var.tags
6-
}
7-
8-
module "key_vault" {
9-
source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//key_vault?ref=v4.1.17"
10-
11-
name = "${local.product}-${var.domain}-kv"
12-
location = azurerm_resource_group.sec_rg.location
13-
resource_group_name = azurerm_resource_group.sec_rg.name
14-
tenant_id = data.azurerm_client_config.current.tenant_id
15-
soft_delete_retention_days = 90
16-
17-
tags = var.tags
1+
data "azurerm_key_vault" "key_vault" {
2+
name = "${local.product}-${var.domain}-kv"
3+
resource_group_name = "${local.product}-${var.domain}-sec-rg"
184
}
195

206
## ad group policy ##
217
resource "azurerm_key_vault_access_policy" "ad_group_policy" {
22-
key_vault_id = module.key_vault.id
8+
key_vault_id = data.azurerm_key_vault.key_vault.id
239

2410
tenant_id = data.azurerm_client_config.current.tenant_id
2511
object_id = data.azuread_group.adgroup_admin.object_id
@@ -34,12 +20,12 @@ resource "azurerm_key_vault_access_policy" "ad_group_policy" {
3420
resource "azurerm_key_vault_access_policy" "adgroup_developers_policy" {
3521
count = var.env_short != "p" ? 1 : 0
3622

37-
key_vault_id = module.key_vault.id
23+
key_vault_id = data.azurerm_key_vault.key_vault.id
3824

3925
tenant_id = data.azurerm_client_config.current.tenant_id
4026
object_id = data.azuread_group.adgroup_developers.object_id
4127

42-
key_permissions = ["Get", "List", "Update", "Create", "Import", "Delete", ]
28+
key_permissions = ["Get", "List", "Update", "Create", "Import", "Delete", "Encrypt", "Decrypt", "GetRotationPolicy" ]
4329
secret_permissions = ["Get", "List", "Set", "Delete", ]
4430
storage_permissions = []
4531
certificate_permissions = [
@@ -51,12 +37,12 @@ resource "azurerm_key_vault_access_policy" "adgroup_developers_policy" {
5137
resource "azurerm_key_vault_access_policy" "adgroup_externals_policy" {
5238
count = var.env_short == "d" ? 1 : 0
5339

54-
key_vault_id = module.key_vault.id
40+
key_vault_id = data.azurerm_key_vault.key_vault.id
5541

5642
tenant_id = data.azurerm_client_config.current.tenant_id
5743
object_id = data.azuread_group.adgroup_externals.object_id
5844

59-
key_permissions = ["Get", "List", "Update", "Create", "Import", "Delete", ]
45+
key_permissions = ["Get", "List", "Update", "Create", "Import", "Delete", "Encrypt", "Decrypt" ]
6046
secret_permissions = ["Get", "List", "Set", "Delete", ]
6147
storage_permissions = []
6248
certificate_permissions = [
@@ -73,7 +59,7 @@ data "azuread_service_principal" "iac_principal" {
7359

7460
resource "azurerm_key_vault_access_policy" "azdevops_iac_policy" {
7561
count = var.enable_iac_pipeline ? 1 : 0
76-
key_vault_id = module.key_vault.id
62+
key_vault_id = data.azurerm_key_vault.key_vault.id
7763
tenant_id = data.azurerm_client_config.current.tenant_id
7864
object_id = data.azuread_service_principal.iac_principal[0].object_id
7965

@@ -93,115 +79,7 @@ resource "azurerm_key_vault_secret" "ai_connection_string" {
9379
value = data.azurerm_application_insights.application_insights.connection_string
9480
content_type = "text/plain"
9581

96-
key_vault_id = module.key_vault.id
97-
}
98-
99-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
100-
resource "azurerm_key_vault_secret" "afm_marketplace_subscription_key" {
101-
name = "afm-marketplace-subscription-key"
102-
value = "<TO_UPDATE_MANUALLY_BY_PORTAL>"
103-
content_type = "text/plain"
104-
105-
key_vault_id = module.key_vault.id
106-
107-
lifecycle {
108-
ignore_changes = [
109-
value,
110-
]
111-
}
112-
}
113-
114-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
115-
resource "azurerm_key_vault_secret" "afm_utils_subscription_key" {
116-
name = "afm-utils-subscription-key"
117-
value = "<TO_UPDATE_MANUALLY_BY_PORTAL>"
118-
content_type = "text/plain"
119-
120-
key_vault_id = module.key_vault.id
121-
122-
lifecycle {
123-
ignore_changes = [
124-
value,
125-
]
126-
}
127-
}
128-
129-
130-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
131-
resource "azurerm_key_vault_secret" "afm_cosmos_key" {
132-
name = "afm-cosmos-key"
133-
value = "<TO_UPDATE_MANUALLY_BY_PORTAL>"
134-
content_type = "text/plain"
135-
136-
key_vault_id = module.key_vault.id
137-
138-
lifecycle {
139-
ignore_changes = [
140-
value,
141-
]
142-
}
143-
}
144-
145-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
146-
resource "azurerm_key_vault_secret" "oracle_db_cfg_password" {
147-
name = "oracle-db-cfg-password"
148-
value = "<TO_UPDATE_MANUALLY_BY_PORTAL>"
149-
content_type = "text/plain"
150-
151-
key_vault_id = module.key_vault.id
152-
153-
lifecycle {
154-
ignore_changes = [
155-
value,
156-
]
157-
}
158-
}
159-
160-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
161-
resource "azurerm_key_vault_secret" "oracle_db_cfg_dev_nexi_password" {
162-
count = var.env_short == "d" ? 1 : 0
163-
name = "oracle-db-cfg-dev-password"
164-
value = "<TO_UPDATE_MANUALLY_BY_PORTAL>"
165-
content_type = "text/plain"
166-
167-
key_vault_id = module.key_vault.id
168-
169-
lifecycle {
170-
ignore_changes = [
171-
value,
172-
]
173-
}
174-
}
175-
176-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
177-
resource "azurerm_key_vault_secret" "oracle_db_cfg_prf_nexi_password" {
178-
count = var.env_short == "u" ? 1 : 0
179-
name = "oracle-db-cfg-prf-password"
180-
value = "<TO_UPDATE_MANUALLY_BY_PORTAL>"
181-
content_type = "text/plain"
182-
183-
key_vault_id = module.key_vault.id
184-
185-
lifecycle {
186-
ignore_changes = [
187-
value,
188-
]
189-
}
190-
}
191-
192-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
193-
resource "azurerm_key_vault_secret" "postgresql_db_cfg_password" {
194-
name = "postgresql-db-cfg-password"
195-
value = "<TO_UPDATE_MANUALLY_BY_PORTAL>"
196-
content_type = "text/plain"
197-
198-
key_vault_id = module.key_vault.id
199-
200-
lifecycle {
201-
ignore_changes = [
202-
value,
203-
]
204-
}
82+
key_vault_id = data.azurerm_key_vault.key_vault.id
20583
}
20684

20785
data "azurerm_redis_cache" "redis_cache" {
@@ -215,45 +93,15 @@ resource "azurerm_key_vault_secret" "redis_password" {
21593
value = data.azurerm_redis_cache.redis_cache.primary_access_key
21694
content_type = "text/plain"
21795

218-
key_vault_id = module.key_vault.id
96+
key_vault_id = data.azurerm_key_vault.key_vault.id
21997
}
22098

22199
resource "azurerm_key_vault_secret" "redis_hostname" {
222100
name = "redis-hostname"
223101
value = data.azurerm_redis_cache.redis_cache.hostname
224102
content_type = "text/plain"
225103

226-
key_vault_id = module.key_vault.id
227-
}
228-
229-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
230-
resource "azurerm_key_vault_secret" "github_token_read_packages" {
231-
name = "github-token-read-packages"
232-
value = "<TO_UPDATE_MANUALLY_BY_PORTAL>"
233-
content_type = "text/plain"
234-
235-
key_vault_id = module.key_vault.id
236-
237-
lifecycle {
238-
ignore_changes = [
239-
value,
240-
]
241-
}
242-
}
243-
244-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
245-
resource "azurerm_key_vault_secret" "apiconfig_selfcare_integration_api_subscription-key" {
246-
name = "apiconfig-selfcare-integration-api-subscription-key"
247-
value = "<TO_UPDATE_MANUALLY_BY_PORTAL>"
248-
content_type = "text/plain"
249-
250-
key_vault_id = module.key_vault.id
251-
252-
lifecycle {
253-
ignore_changes = [
254-
value,
255-
]
256-
}
104+
key_vault_id = data.azurerm_key_vault.key_vault.id
257105
}
258106

259107
# create json letsencrypt inside kv
@@ -274,91 +122,11 @@ resource "azurerm_key_vault_secret" "storage_connection_string" {
274122
value = data.azurerm_storage_account.api_config_ica_sa.primary_connection_string
275123
content_type = "text/plain"
276124

277-
key_vault_id = module.key_vault.id
278-
}
279-
280-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
281-
resource "azurerm_key_vault_secret" "nodo5_slack_webhook_url" {
282-
name = "nodo5-slack-webhook-url"
283-
value = "<TO UPDATE MANUALLY ON PORTAL>"
284-
key_vault_id = module.key_vault.id
285-
286-
lifecycle {
287-
ignore_changes = [
288-
value,
289-
]
290-
}
291-
}
292-
293-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
294-
resource "azurerm_key_vault_secret" "apicfg_cache_subscription_key" {
295-
name = "api-config-cache-subscription-key"
296-
value = "<TO UPDATE MANUALLY ON PORTAL>"
297-
key_vault_id = module.key_vault.id
298-
299-
lifecycle {
300-
ignore_changes = [
301-
value,
302-
]
303-
}
125+
key_vault_id = data.azurerm_key_vault.key_vault.id
304126
}
305127

306128
resource "azurerm_key_vault_secret" "apicfg_cache_tx_connection_string" {
307129
name = "nodo-dei-pagamenti-cache-tx-connection-string-key"
308130
value = data.azurerm_eventhub_authorization_rule.nodo_dei_pagamenti_cache_tx.primary_connection_string
309-
key_vault_id = module.key_vault.id
310-
}
311-
312-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
313-
resource "azurerm_key_vault_secret" "cfg_for_node_subscription_key" {
314-
name = "cfg-for-node-subscription-key"
315-
value = "<TO UPDATE MANUALLY ON PORTAL>"
316-
key_vault_id = module.key_vault.id
317-
318-
lifecycle {
319-
ignore_changes = [
320-
value,
321-
]
322-
}
323-
}
324-
325-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
326-
resource "azurerm_key_vault_secret" "db_postgres_nexi_cfg_password" {
327-
count = var.env_short == "p" ? 0 : 1
328-
name = "db-postgres-nexi-cfg-password"
329-
value = "<TO UPDATE MANUALLY ON PORTAL>"
330-
key_vault_id = module.key_vault.id
331-
332-
lifecycle {
333-
ignore_changes = [
334-
value,
335-
]
336-
}
337-
}
338-
339-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
340-
resource "azurerm_key_vault_secret" "db_postgres_nexi_cfg_password_prf" {
341-
count = var.env_short == "u" ? 1 : 0
342-
name = "db-postgres-nexi-cfg-password-prf"
343-
value = "<TO UPDATE MANUALLY ON PORTAL>"
344-
key_vault_id = module.key_vault.id
345-
346-
lifecycle {
347-
ignore_changes = [
348-
value,
349-
]
350-
}
351-
}
352-
353-
#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret
354-
resource "azurerm_key_vault_secret" "encrypted_github_token_read_packages_bot" {
355-
name = "encrypted-github-token-read-packages-bot"
356-
value = "<TO UPDATE MANUALLY ON PORTAL>"
357-
key_vault_id = module.key_vault.id
358-
359-
lifecycle {
360-
ignore_changes = [
361-
value,
362-
]
363-
}
131+
key_vault_id = data.azurerm_key_vault.key_vault.id
364132
}

0 commit comments

Comments
 (0)