Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
273257b
TC-5 Add module for private dns zone with vnet links
lyudmililchev92 Jan 17, 2025
4afb629
Merge remote-tracking branch 'origin/main' into TC-05
lyudmililchev92 Jan 17, 2025
ede7387
fix module name and variable name
lyudmililchev92 Jan 17, 2025
692b9aa
add example tfvars for private dns zone
lyudmililchev92 Jan 17, 2025
3b7622d
fix pre-commit
lyudmililchev92 Jan 17, 2025
15d6c22
add changes for private endpoint inside keyvault
lyudmililchev92 Jan 17, 2025
86c94be
add local changes in locals.tf in keyvault
lyudmililchev92 Jan 17, 2025
6c301f6
fix duplicated locals
lyudmililchev92 Jan 17, 2025
88bc15d
add reference to private dns zones in keyvault
lyudmililchev92 Jan 17, 2025
57e44c8
fix to not fail in not have private endpoint
lyudmililchev92 Jan 17, 2025
7eac750
private endpoint not required
lyudmililchev92 Jan 17, 2025
0d7377a
fix not required values
lyudmililchev92 Jan 17, 2025
8c9640a
check for existing private endpoint
lyudmililchev92 Jan 17, 2025
16c1890
add keyvault secrets
lyudmililchev92 Jan 17, 2025
8f05e5b
secret changes
lyudmililchev92 Jan 17, 2025
9568b69
add default value
lyudmililchev92 Jan 17, 2025
d2367cb
add key vault secret
lyudmililchev92 Jan 17, 2025
091f8b4
fix pre commit
lyudmililchev92 Jan 17, 2025
fea9566
test TC-18
lyudmililchev92 Jan 18, 2025
a70b3a2
fix source folder
lyudmililchev92 Jan 18, 2025
05df4df
add access policies inside keyvault
lyudmililchev92 Jan 18, 2025
733488e
test folder structure
lyudmililchev92 Jan 18, 2025
801b39a
test fix of keyvault variable
lyudmililchev92 Jan 18, 2025
588a159
test module access_policy_
lyudmililchev92 Jan 18, 2025
2e33101
change module name
lyudmililchev92 Jan 18, 2025
9a0becd
test
lyudmililchev92 Jan 18, 2025
585b51b
test keyvault id
lyudmililchev92 Jan 18, 2025
8a231b5
test key vault id
lyudmililchev92 Jan 18, 2025
52b2a4f
test
lyudmililchev92 Jan 18, 2025
a4f8d84
test
lyudmililchev92 Jan 18, 2025
7a32f28
remove client config
lyudmililchev92 Jan 18, 2025
42e3438
test access policies
lyudmililchev92 Jan 18, 2025
cbb5dd7
add keyvault each key
lyudmililchev92 Jan 18, 2025
b9909b5
add module update keyvaults
lyudmililchev92 Jan 18, 2025
d88b2f7
fix module
lyudmililchev92 Jan 18, 2025
75fd492
try for each in keyvault module
lyudmililchev92 Jan 18, 2025
d234e91
try to fix keyvault
lyudmililchev92 Jan 18, 2025
0655337
try to fix keyvault module
lyudmililchev92 Jan 18, 2025
76f7413
fix global settings
lyudmililchev92 Jan 18, 2025
643e7db
test var global settings
lyudmililchev92 Jan 18, 2025
312e496
fix keyvaults resource
lyudmililchev92 Jan 18, 2025
23f73d1
test
lyudmililchev92 Jan 18, 2025
16277fa
fix keyvault module
lyudmililchev92 Jan 18, 2025
469ba63
test some minor changes
lyudmililchev92 Jan 18, 2025
547b7cb
test
lyudmililchev92 Jan 18, 2025
b720801
format keyvault module
lyudmililchev92 Jan 18, 2025
3264008
test
lyudmililchev92 Jan 18, 2025
6d5d42c
test access policies
lyudmililchev92 Jan 18, 2025
2d15ab8
fix keyvault module
lyudmililchev92 Jan 18, 2025
6a77256
test access policies
lyudmililchev92 Jan 18, 2025
d1af870
Test
lyudmililchev92 Jan 18, 2025
7ea5c35
test
lyudmililchev92 Jan 18, 2025
0308be3
fix global settings
lyudmililchev92 Jan 18, 2025
32e92d8
test access policies
lyudmililchev92 Jan 18, 2025
91fc225
Test
lyudmililchev92 Jan 18, 2025
4caac31
test
lyudmililchev92 Jan 18, 2025
0d82632
test
lyudmililchev92 Jan 18, 2025
88413b9
test keyvault module
lyudmililchev92 Jan 18, 2025
b21ce98
move source outside security
lyudmililchev92 Jan 18, 2025
5193b9b
remove var ffrom local
lyudmililchev92 Jan 18, 2025
158bfc5
test managed idenitties
lyudmililchev92 Jan 18, 2025
76f1674
test
lyudmililchev92 Jan 18, 2025
8132ba1
test
lyudmililchev92 Jan 18, 2025
fc22f12
test
lyudmililchev92 Jan 18, 2025
99fd85a
test
lyudmililchev92 Jan 18, 2025
d1a951f
test
lyudmililchev92 Jan 18, 2025
72eb9a5
test
lyudmililchev92 Jan 18, 2025
ef6b713
test
lyudmililchev92 Jan 18, 2025
32babc7
test resources output
lyudmililchev92 Jan 18, 2025
8631277
fix access policies
lyudmililchev92 Jan 18, 2025
7750f13
Test
lyudmililchev92 Jan 18, 2025
6d17fc8
test
lyudmililchev92 Jan 18, 2025
b614e86
view settings
lyudmililchev92 Jan 18, 2025
c352731
test
lyudmililchev92 Jan 18, 2025
ca19489
test
lyudmililchev92 Jan 18, 2025
7a78c1c
test
lyudmililchev92 Jan 18, 2025
94cfbb5
test
lyudmililchev92 Jan 18, 2025
3dd975b
test
lyudmililchev92 Jan 18, 2025
e789ac9
debug
lyudmililchev92 Jan 18, 2025
f9df155
test
lyudmililchev92 Jan 18, 2025
ce48bd8
test
lyudmililchev92 Jan 18, 2025
05a7f5e
test two new policies
lyudmililchev92 Jan 18, 2025
9aa70e3
test
lyudmililchev92 Jan 18, 2025
63bbfb7
test
lyudmililchev92 Jan 18, 2025
bb4a673
test
lyudmililchev92 Jan 18, 2025
dbe154a
check
lyudmililchev92 Jan 18, 2025
69c4480
test
lyudmililchev92 Jan 18, 2025
e0da84e
Test
lyudmililchev92 Jan 18, 2025
6de9b09
test
lyudmililchev92 Jan 18, 2025
f2df5aa
test
lyudmililchev92 Jan 18, 2025
a71109b
test
lyudmililchev92 Jan 18, 2025
ab10e61
test
lyudmililchev92 Jan 18, 2025
023074c
test
lyudmililchev92 Jan 18, 2025
dd6cae7
test
lyudmililchev92 Jan 18, 2025
f364741
test with try on managed_identity_refs
lyudmililchev92 Jan 18, 2025
2782551
100 percent working version about access policies in different folder…
lyudmililchev92 Jan 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions examples/private_dns_zones.tfvars
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
private_dns_zones = {
storage_account_blob = {
resource_kind = "storage_blob"
resource_group_ref = "rg_test"
vnet_ref = ["vnet_test", "vnet_test2"]
}
}



# pre-requisites
resource_groups = {
rg_test = {
name = "rg-test-dv-ne-01"
location = "northeurope"
}
}

virtual_networks = {
vnet_test = {
name = "vnet-test-dv-ne-01"
resource_group_ref = "rg_test"
cidr = ["10.0.0.0/16"]
subnets = {
snet_app = {
name = "snet-app"
cidr = ["10.0.0.128/25"]
service_endpoints = ["Microsoft.Storage"]
}
}
}
vnet_test2 = {
name = "vnet-test-dv-ne-02"
resource_group_ref = "rg_test"
cidr = ["10.1.0.0/16"]
subnets = {
snet_app_02 = {
name = "snet-app"
cidr = ["10.1.0.128/25"]
service_endpoints = ["Microsoft.Storage"]
}
}
}
}
2 changes: 2 additions & 0 deletions src/_variables.resources.tf
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@ variable "public_ips" { default = {} }
variable "keyvaults" { default = {} }

variable "storage_accounts" { default = {} }

variable "private_dns_zones" { default = {} }
3 changes: 2 additions & 1 deletion src/keyvault.tf
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module "keyvaults" {
source = "./modules/_security/keyvault"
source = "./modules/keyvault"
for_each = var.keyvaults

settings = each.value
Expand All @@ -8,5 +8,6 @@ module "keyvaults" {
virtual_networks = module.virtual_networks
resource_groups = module.resource_groups
managed_identities = module.managed_identities
private_dns_zones = module.private_dns_zones
}
}
29 changes: 29 additions & 0 deletions src/modules/_networking/private_dns_zone/_locals.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
locals {
resource_group = var.resources.resource_groups[var.settings.resource_group_ref]

resource_group_name = local.resource_group.name
location = local.resource_group.location
tags = merge(
var.global_settings.tags,
var.global_settings.inherit_resource_group_tags ? local.resource_group.tags : {},
try(var.settings.tags, {})
)
vnet_ids = {
for vnet in var.settings.vnet_ref :
vnet => {
name = var.resources.virtual_networks[vnet].name
id = var.resources.virtual_networks[vnet].id
}
}
}
locals {
# local object used to map possible private dns zoone names
zone_names = {
"storage_blob" = "privatelink.blob.core.windows.net"
"storage_tables" = "privatelink.table.core.windows.net"
"storage_queues" = "privatelink.queue.core.windows.net"
"storage_files" = "privatelink.file.core.windows.net"
"function_apps" = "privatelink.azurewebsites.net"
"keyvaults" = "privatelink.vaultcore.azure.net"
}
}
3 changes: 3 additions & 0 deletions src/modules/_networking/private_dns_zone/_outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
output "id" {
value = azurerm_private_dns_zone.main.id
}
15 changes: 15 additions & 0 deletions src/modules/_networking/private_dns_zone/_variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
variable "global_settings" {
description = "Global settings for tinycaf"
}

variable "settings" {
description = "All the configuration for this resource"
}

variable "resources" {
type = object({
resource_groups = map(any)
virtual_networks = map(any)
})
description = "All required resources"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
resource "azurerm_private_dns_zone_virtual_network_link" "main" {
for_each = local.vnet_ids
name = "${each.value.name}-${azurerm_private_dns_zone.main.name}-link"
private_dns_zone_name = azurerm_private_dns_zone.main.name
resource_group_name = azurerm_private_dns_zone.main.resource_group_name
virtual_network_id = each.value.id
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
resource "azurerm_private_dns_zone" "main" {
name = try(local.zone_names[var.settings.resource_kind], var.settings.name)
resource_group_name = local.resource_group_name
tags = try(local.tags, null)
}
7 changes: 0 additions & 7 deletions src/modules/_security/keyvault/_outputs.tf

This file was deleted.

24 changes: 0 additions & 24 deletions src/modules/_security/keyvault/access_policies.tf

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,47 +9,13 @@ locals {
var.resources.virtual_networks[split("/", config.subnet_ref)[0]].subnets[split("/", config.subnet_ref)[1]].id
)
]

subnet_id = try(
var.resources.virtual_networks[split("/", var.settings.private_endpoint.subnet_ref)[0]].subnets[split("/", var.settings.private_endpoint.subnet_ref)[1]].id,
null
)
tags = merge(
var.global_settings.tags,
var.global_settings.inherit_resource_group_tags ? local.resource_group.tags : {},
try(var.settings.tags, {})
)
}


locals {
all_secret_permissions = [
"Backup",
"Delete",
"Get",
"List",
"Purge",
"Recover",
"Restore",
"Set",
]

all_key_permissions = [
"Backup",
"Create",
"Decrypt",
"Delete",
"Encrypt",
"Get",
"Import",
"List",
"Purge",
"Recover",
"Restore",
"Sign",
"UnwrapKey",
"Update",
"Verify",
"WrapKey",
"Release",
"Rotate",
"GetRotationPolicy",
"SetRotationPolicy",
]
}
23 changes: 23 additions & 0 deletions src/modules/keyvault/_outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
output "id" {
value = azurerm_key_vault.main.id
}

output "vault_uri" {
value = azurerm_key_vault.main.vault_uri
}

output "resource_group_name" {
value = azurerm_key_vault.main.resource_group_name
}

output "location" {
value = azurerm_key_vault.main.location
}

output "name" {
value = azurerm_key_vault.main.name
}

output "resources" {
value = var.resources
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ variable "settings" {
description = "All the configuration for this resource"
}


variable "resources" {
type = object({
resource_groups = map(any)
virtual_networks = map(any)
managed_identities = map(any)
private_dns_zones = map(any)
})
description = "All required resources"
}
11 changes: 11 additions & 0 deletions src/modules/keyvault/access_policies.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module "initial_policy" {
source = "./keyvault_access_policy"
for_each = try(var.settings.access_policies, {})

settings = var.settings
keyvault_id = azurerm_key_vault.main.id
access_policies = each.value
policy_name = each.key
global_settings = var.global_settings
resources = var.resources
}
55 changes: 55 additions & 0 deletions src/modules/keyvault/keyvault_access_policy/_locals.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
locals {
all_secret_permissions = [
"Backup",
"Delete",
"Get",
"List",
"Purge",
"Recover",
"Restore",
"Set",
]

all_key_permissions = [
"Backup",
"Create",
"Decrypt",
"Delete",
"Encrypt",
"Get",
"Import",
"List",
"Purge",
"Recover",
"Restore",
"Sign",
"UnwrapKey",
"Update",
"Verify",
"WrapKey",
"Release",
"Rotate",
"GetRotationPolicy",
"SetRotationPolicy",
]
}

locals {
effective_key_permissions = (
var.access_policies.key_permissions == "All" ?
local.all_key_permissions :
tolist(try(var.access_policies.key_permissions, []))
)

effective_secret_permissions = (
var.access_policies.secret_permissions == "All" ?
local.all_secret_permissions :
tolist(try(var.access_policies.secret_permissions, []))
)
}


locals {
debug_settings = var.settings
has_logged_in_key = contains(keys(var.settings), "managed_identity")
}
3 changes: 3 additions & 0 deletions src/modules/keyvault/keyvault_access_policy/_outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
output "debug" {
value = local.debug_settings
}
26 changes: 26 additions & 0 deletions src/modules/keyvault/keyvault_access_policy/_variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
variable "settings" {
description = "All the configuration for this resource"
}

variable "keyvault_id" {
description = "keyvault id"
}

variable "access_policies" {
validation {
condition = length(var.access_policies) <= 16
error_message = "A maximun of 16 access policies can be set."
}
}
variable "global_settings" {
description = "Global settings for tinycaf"
}

variable "policy_name" {
description = "The key of the access policy."
type = string
}

variable "resources" {
description = "All the configuration for this resource"
}
23 changes: 23 additions & 0 deletions src/modules/keyvault/keyvault_access_policy/access_policies.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module "logged_in_user" {
source = "./access_policy"
count = var.policy_name == "logged_in_user" ? 1 : 0
keyvault_id = var.keyvault_id == null
tenant_id = var.global_settings.tenant_id
access_policies = try(var.access_policies,null)
object_id = var.global_settings.object_id
key_permissions = local.all_key_permissions
secret_permissions = local.all_secret_permissions
}


module "managed_identities" {
source = "./access_policy"
for_each = var.policy_name == "managed_identity" && length(try(var.access_policies.managed_identity_refs, [])) > 0 ? { for idx, ref in try(var.access_policies.managed_identity_refs, []) : idx => ref } : {}

keyvault_id = var.keyvault_id
access_policies = var.access_policies
tenant_id = var.global_settings.tenant_id
object_id = var.resources.managed_identities[each.value].id
key_permissions = local.effective_key_permissions
secret_permissions = local.effective_secret_permissions
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
variable "keyvault_id" {}
variable "tenant_id" {}
variable "object_id" {}
variable "key_permissions" {}
variable "secret_permissions" {}
variable "access_policies" {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
resource "azurerm_key_vault_access_policy" "main" { # Using the policy key in the resource name
key_vault_id = var.keyvault_id

tenant_id = var.tenant_id
object_id = var.object_id

key_permissions = var.key_permissions
secret_permissions = var.secret_permissions
}
Loading
Loading