modules/keyvault/main.tf (102 lines of code) (raw):
data "azurerm_client_config" "current" {}
resource "azurerm_key_vault" "kv" {
name = var.keyvault_name
location = var.location
resource_group_name = var.resource_group_name
enabled_for_disk_encryption = false
tenant_id = data.azurerm_client_config.current.tenant_id
soft_delete_retention_days = 7
purge_protection_enabled = false
tags = var.tags
sku_name = "standard"
network_acls {
default_action = "Deny"
# This is required by Application Gateway for Key Vault references.
bypass = "AzureServices"
ip_rules = [
var.public_ip
]
}
access_policy {
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = data.azurerm_client_config.current.object_id
secret_permissions = [
"Get",
"Set",
"List",
"Delete",
"Purge",
]
certificate_permissions = [
"Backup",
"Create",
"Delete",
"DeleteIssuers",
"Get",
"GetIssuers",
"Import",
"List",
"ListIssuers",
"ManageContacts",
"ManageIssuers",
"Purge",
"Recover",
"Restore",
"SetIssuers",
"Update"
]
key_permissions = []
storage_permissions = []
}
access_policy {
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = var.principal_id
secret_permissions = [
"Get",
"Set",
"List",
]
}
access_policy {
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = var.gateway_identity_principal_id
secret_permissions = [
"Get",
"List",
]
}
}
resource "azurerm_key_vault_secret" "secret" {
name = "secret-value"
value = "one europe"
key_vault_id = azurerm_key_vault.kv.id
content_type = "password"
expiration_date = "2030-12-31T00:00:00Z"
}
resource "azurerm_private_endpoint" "kv_endpoint" {
name = "kv-endpoint"
location = var.location
resource_group_name = var.resource_group_name
subnet_id = var.private_endpoints_subnet_id
tags = var.tags
private_service_connection {
name = "kv-privateserviceconnection"
private_connection_resource_id = azurerm_key_vault.kv.id
is_manual_connection = false
subresource_names = ["vault"]
}
private_dns_zone_group {
name = "privatelink-kv"
private_dns_zone_ids = [azurerm_private_dns_zone.kv.id]
}
}
# Create the privatelink.file.core.windows.net Private DNS Zone
resource "azurerm_private_dns_zone" "kv" {
name = "privatelink.vaultcore.azure.net"
resource_group_name = var.resource_group_name
tags = var.tags
}
# Link the Private Zone with the VNet
resource "azurerm_private_dns_zone_virtual_network_link" "kv" {
name = "kv"
resource_group_name = var.resource_group_name
private_dns_zone_name = azurerm_private_dns_zone.kv.name
virtual_network_id = var.hub_vnet_id
}