quickstarts/Microsoft.ServiceBus/ServiceBusNamespace-CMK/main.tf (105 lines of code) (raw):

terraform { required_providers { azapi = { source = "Azure/azapi" } } } provider "azapi" { } provider "azurerm" { features {} } data "azurerm_client_config" "current" {} resource "azurerm_resource_group" "test" { name = "example-resources" location = "West Europe" } resource "azurerm_user_assigned_identity" "test" { resource_group_name = azurerm_resource_group.test.name location = azurerm_resource_group.test.location name = "example-identity" } resource "azapi_resource" "test" { name = "example-namespace" type = "Microsoft.ServiceBus/namespaces@2021-06-01-preview" parent_id = azurerm_resource_group.test.id location = azurerm_resource_group.test.location identity { type = "SystemAssigned, UserAssigned" identity_ids = [azurerm_user_assigned_identity.test.id] } body = { sku = { name = "Premium" } } } resource "azurerm_key_vault" "test" { name = "example-vault" location = azurerm_resource_group.test.location resource_group_name = azurerm_resource_group.test.name tenant_id = data.azurerm_client_config.current.tenant_id sku_name = "standard" soft_delete_enabled = true purge_protection_enabled = true access_policy { tenant_id = azapi_resource.test.identity.0.tenant_id object_id = azapi_resource.test.identity.0.principal_id key_permissions = [ "Get", "Create", "List", "Restore", "Recover", "UnwrapKey", "WrapKey", "Purge", "Encrypt", "Decrypt", "Sign", "Verify" ] secret_permissions = [ "Get", ] } access_policy { tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azurerm_client_config.current.object_id key_permissions = [ "Get", "Create", "Delete", "List", "Restore", "Recover", "UnwrapKey", "WrapKey", "Purge", "Encrypt", "Decrypt", "Sign", "Verify" ] secret_permissions = [ "Get", ] } access_policy { tenant_id = azurerm_user_assigned_identity.test.tenant_id object_id = azurerm_user_assigned_identity.test.principal_id key_permissions = [ "Get", "Create", "Delete", "List", "Restore", "Recover", "UnwrapKey", "WrapKey", "Purge", "Encrypt", "Decrypt", "Sign", "Verify" ] secret_permissions = [ "Get", ] } } resource "azurerm_key_vault_key" "test" { name = "example-sb-key" key_vault_id = azurerm_key_vault.test.id key_type = "RSA" key_size = 2048 key_opts = ["decrypt", "encrypt", "sign", "unwrapKey", "verify", "wrapKey"] } // patch resource used to enable CMK on servicebus namespace resource "azapi_update_resource" "test" { resource_id = azapi_resource.test.resource_id type = "Microsoft.ServiceBus/namespaces@2021-06-01-preview" body = { properties = { encryption = { keySource = "Microsoft.KeyVault" keyVaultProperties = [ { identity = { userAssignedIdentity = azurerm_user_assigned_identity.test.id } keyName = azurerm_key_vault_key.test.name keyVaultUri = azurerm_key_vault.test.vault_uri keyVersion = azurerm_key_vault_key.test.version } ] } } } }