Skip to content

Commit fb05d10

Browse files
authored
Merge pull request #5 from data-platform-hq/key-voult-fix-sql
fix: key voult fix sql
2 parents 7fca2eb + 82be1fc commit fb05d10

File tree

3 files changed

+47
-11
lines changed

3 files changed

+47
-11
lines changed

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ No modules.
3030
| [azurerm_mssql_server_transparent_data_encryption.this](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/mssql_server_transparent_data_encryption) | resource |
3131
| [azurerm_mssql_firewall_rule.this](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/mssql_firewall_rule) | resource |
3232
| [azurerm_mssql_firewall_rule.azure_services](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/mssql_firewall_rule) | resource |
33+
| [azurerm_key_vault_key.this](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_key) | resource |
3334

3435
## Inputs
3536

@@ -49,8 +50,10 @@ No modules.
4950
| <a name="input_public_network_access_enabled"></a> [public\_network\_access\_enabled](#input\_public\_network\_access\_enabled) | Whether public network access is allowed for this server | `bool` | true | no |
5051
| <a name="input_tags"></a> [tags](#input\_tags) | A mapping of tags to assign to the resource | `map(any)` | {} | no |
5152
| <a name="input_ip_rules"></a> [ip\_rules](#input\_ip\_rules) | Map of IP addresses permitted for access to DB | `map(string)` | {} | no |
52-
| <a name="input_key_vault_id"></a> [key\_vault\_id](#input\_key\_vault\_id) | Key Vault Id | `string` | "" | no |
53-
| <a name="input_tde_key"></a> [tde\_key](#input\_tde\_key) | Transparent data encryption key id | `string` | "" | no |
53+
| <a name="input_key_vault_id"></a> [key\_vault\_id](#input\_key\_vault\_id) | Key Vault Id | `map(string)` | {} | no |
54+
| <a name="input_key_opts"></a> [key\_opts](#input\_key\_opts) | JSON web key operations: [decrypt\|encrypt\|sign\|unwrapKey\|verify\|wrapKey] | `list(string)` | <pre>[<br> "decrypt",<br> "encrypt",<br> "sign",<br> "unwrapKey",<br> "verify",<br> "wrapKey"<br>]</pre> | no |
55+
| <a name="input_key_size"></a> [key\_size](#input\_key\_size) | Size of the RSA key to create in bytes, requied for RSA & RSA-HSM: [1024\|2048] | `number` | `2048` | no |
56+
| <a name="input_key_type"></a> [key\_type](#input\_key\_type) | Key Type to use for this Key Vault Key: [EC\|EC-HSM\|Oct\|RSA\|RSA-HSM] | `string` | `"RSA"` | no |
5457

5558
## Outputs
5659

main.tf

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ resource "azurerm_mssql_server" "this" {
3232
}
3333

3434
resource "azurerm_key_vault_access_policy" "tde_policy" {
35-
key_vault_id = var.key_vault_id
35+
for_each = { for k, v in var.key_vault_id : k => v }
36+
37+
key_vault_id = each.value
3638
tenant_id = azurerm_mssql_server.this.identity[0].tenant_id
3739
object_id = azurerm_mssql_server.this.identity[0].principal_id
3840

@@ -43,9 +45,21 @@ resource "azurerm_key_vault_access_policy" "tde_policy" {
4345
]
4446
}
4547

48+
resource "azurerm_key_vault_key" "this" {
49+
for_each = { for k, v in var.key_vault_id : k => v }
50+
51+
name = "tde-${var.project}-${var.env}-${var.location}"
52+
key_type = var.key_type
53+
key_size = var.key_size
54+
key_vault_id = each.value
55+
key_opts = var.key_opts
56+
}
57+
4658
resource "azurerm_mssql_server_transparent_data_encryption" "this" {
59+
for_each = { for k, v in var.key_vault_id : k => v }
60+
4761
server_id = azurerm_mssql_server.this.id
48-
key_vault_key_id = var.tde_key
62+
key_vault_key_id = azurerm_key_vault_key.this[each.key].id
4963
}
5064

5165
resource "azurerm_mssql_firewall_rule" "this" {

variables.tf

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,33 @@ variable "ip_rules" {
7474
default = {}
7575
}
7676

77-
variable "key_vault_id" {
77+
variable "key_type" {
7878
type = string
79-
description = "Key Vault Id"
80-
default = ""
79+
description = "Key Type to use for this Key Vault Key: [EC|EC-HSM|Oct|RSA|RSA-HSM]"
80+
default = "RSA"
8181
}
8282

83-
variable "tde_key" {
84-
type = string
85-
description = "Transparent data encryption key id"
86-
default = ""
83+
variable "key_size" {
84+
type = number
85+
description = "Size of the RSA key to create in bytes, requied for RSA & RSA-HSM: [1024|2048]"
86+
default = 2048
87+
}
88+
89+
variable "key_opts" {
90+
type = list(string)
91+
description = "JSON web key operations: [decrypt|encrypt|sign|unwrapKey|verify|wrapKey]"
92+
default = [
93+
"decrypt",
94+
"encrypt",
95+
"sign",
96+
"unwrapKey",
97+
"verify",
98+
"wrapKey"
99+
]
100+
}
101+
102+
variable "key_vault_id" {
103+
type = map(string)
104+
description = "Key Vault ID"
105+
default = {}
87106
}

0 commit comments

Comments
 (0)