scenarios/apim-baseline/terraform/modules/shared/shared.tf (67 lines of code) (raw):

data "azurerm_client_config" "current" {} #------------------------------- # Creation of a key vault instance #------------------------------- resource "azurerm_key_vault" "key_vault" { name = var.keyVaultName location = var.location resource_group_name = var.resourceGroupName tenant_id = data.azurerm_client_config.current.tenant_id sku_name = var.keyVaultSku # -> Bicep has keyvault as private, should we change this? # -> This will need the certificate to be created through a azurerm_template_deployment resource public_network_access_enabled = false network_acls { bypass = "AzureServices" default_action = "Deny" } } locals { # deployment_client_ids = toset( # concat( # [data.azurerm_client_config.current.object_id], # var.additionalClientIds # ) # ) privateEndpoint_keyvault_Name = "pep-kv-${var.resourceSuffix}" apim_cs_vnet_name = "vnet-apim-cs-${var.resourceSuffix}" networkingResourceGroupName = "rg-networking-${var.resourceSuffix}" private_endpoint_subnet_name = "snet-prep-${var.resourceSuffix}" } # created as a seperate resource, as managed identity uses the azurerm_key_vault_access_policy as well. See note at https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_access_policy resource "azurerm_key_vault_access_policy" "deployment_spn_access_policy" { key_vault_id = azurerm_key_vault.key_vault.id tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azurerm_client_config.current.object_id key_permissions = [ "Get", ] secret_permissions = [ "Get", ] storage_permissions = [ "Get", ] certificate_permissions = [ "Import", "Get", "List", "Update", "Create" ] } data "azurerm_virtual_network" "apim_cs_vnet" { name = local.apim_cs_vnet_name resource_group_name = local.networkingResourceGroupName } data "azurerm_subnet" "private_endpoint_subnet" { name = local.private_endpoint_subnet_name resource_group_name = local.networkingResourceGroupName virtual_network_name = local.apim_cs_vnet_name } module "keyvault_dns_zone" { source = "./private_dns_zone" name = "privatelink.vaultcore.azure.net" resource_group_name = local.networkingResourceGroupName virtual_networks_to_link_id = data.azurerm_virtual_network.apim_cs_vnet.id } module "keyvault_private_endpoint" { source = "./private_endpoint" name = local.privateEndpoint_keyvault_Name location = var.location resource_group_name = local.networkingResourceGroupName subnet_id = data.azurerm_subnet.private_endpoint_subnet.id private_connection_resource_id = azurerm_key_vault.key_vault.id is_manual_connection = false subresource_name = "vault" private_dns_zone_group_name = "KeyVaultPrivateDnsZoneGroup" private_dns_zone_group_ids = [module.keyvault_dns_zone.id] }