Skip to content

Commit

Permalink
feat: add ability to create kms to block storage s2s (#145)
Browse files Browse the repository at this point in the history
  • Loading branch information
argeiger authored Oct 25, 2022
1 parent 18684c7 commit 06b640f
Show file tree
Hide file tree
Showing 16 changed files with 119 additions and 11 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -911,6 +911,7 @@ statement instead the previous block.
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_access_groups"></a> [access\_groups](#input\_access\_groups) | A list of access groups to create | <pre>list(<br> object({<br> name = string # Name of the group<br> description = string # Description of group<br> policies = list(<br> object({<br> name = string # Name of the policy<br> roles = list(string) # list of roles for the policy<br> resources = object({<br> resource_group = optional(string) # Name of the resource group the policy will apply to<br> resource_type = optional(string) # Name of the resource type for the policy ex. "resource-group"<br> resource = optional(string) # The resource of the policy definition<br> service = optional(string) # Name of the service type for the policy ex. "cloud-object-storage"<br> resource_instance_id = optional(string) # ID of a service instance to give permissions<br> })<br> })<br> )<br> dynamic_policies = optional(<br> list(<br> object({<br> name = string # Dynamic group name<br> identity_provider = string # URI for identity provider<br> expiration = number # How many hours authenticated users can work before refresh<br> conditions = object({<br> claim = string # key value to evaluate the condition against.<br> operator = string # The operation to perform on the claim. Supported values are EQUALS, EQUALS_IGNORE_CASE, IN, NOT_EQUALS_IGNORE_CASE, NOT_EQUALS, and CONTAINS.<br> value = string # Value to be compared agains<br> })<br> })<br> )<br> )<br> account_management_policies = optional(list(string))<br> invite_users = optional(list(string)) # Users to invite to the access group<br> })<br> )</pre> | `[]` | no |
| <a name="input_add_kms_block_storage_s2s"></a> [add\_kms\_block\_storage\_s2s](#input\_add\_kms\_block\_storage\_s2s) | add kms to block storage s2s authorization | `bool` | `true` | no |
| <a name="input_appid"></a> [appid](#input\_appid) | The App ID instance to be used for the teleport vsi deployments | <pre>object({<br> name = optional(string)<br> resource_group = optional(string)<br> use_data = optional(bool)<br> keys = optional(list(string))<br> use_appid = bool<br> })</pre> | <pre>{<br> "use_appid": false<br>}</pre> | no |
| <a name="input_atracker"></a> [atracker](#input\_atracker) | atracker variables | <pre>object({<br> resource_group = string<br> receive_global_events = bool<br> collector_bucket_name = string<br> add_route = bool<br> })</pre> | n/a | yes |
| <a name="input_clusters"></a> [clusters](#input\_clusters) | A list describing clusters workloads to create | <pre>list(<br> object({<br> name = string # Name of Cluster<br> vpc_name = string # Name of VPC<br> subnet_names = list(string) # List of vpc subnets for cluster<br> workers_per_subnet = number # Worker nodes per subnet.<br> machine_type = string # Worker node flavor<br> kube_type = string # iks or openshift<br> kube_version = optional(string) # Can be a version from `ibmcloud ks versions` or `default`<br> entitlement = optional(string) # entitlement option for openshift<br> pod_subnet = optional(string) # Portable subnet for pods<br> service_subnet = optional(string) # Portable subnet for services<br> resource_group = string # Resource Group used for cluster<br> cos_name = optional(string) # Name of COS instance Required only for OpenShift clusters<br> update_all_workers = optional(bool) # If true force workers to update<br> kms_config = optional(<br> object({<br> crk_name = string # Name of key<br> private_endpoint = optional(bool) # Private endpoint<br> })<br> )<br> worker_pools = optional(<br> list(<br> object({<br> name = string # Worker pool name<br> vpc_name = string # VPC name<br> workers_per_subnet = number # Worker nodes per subnet<br> flavor = string # Worker node flavor<br> subnet_names = list(string) # List of vpc subnets for worker pool<br> entitlement = optional(string) # entitlement option for openshift<br> })<br> )<br> )<br> })<br> )</pre> | n/a | yes |
Expand Down
1 change: 1 addition & 0 deletions dynamic_values.tf
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ module "dynamic_values" {
f5_vsi = var.f5_vsi
f5_template_data = var.f5_template_data
secrets_manager = var.secrets_manager
add_kms_block_storage_s2s = var.add_kms_block_storage_s2s
}

##############################################################################
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ variable "use_secrets_manager" {
description = "Use secrets manager"
}

variable "add_kms_block_storage_s2s" {
description = "Add kms to block storage s2s"
}

##############################################################################

##############################################################################
Expand All @@ -30,16 +34,21 @@ variable "use_secrets_manager" {

locals {
target_key_management_service = lookup(var.key_management, "use_hs_crypto", false) == true ? "hs-crypto" : "kms"
service_authorization_vpc_to_key_management = {
# Create authorization to allow key management to access VPC block storage
"block-storage" = {
}

module "kms_to_block_storage" {
source = "../list_to_map"
list = [
for instance in(var.add_kms_block_storage_s2s ? ["block-storage"] : []) :
{
name = instance
source_service_name = "server-protect"
description = "Allow block storage volumes to be encrypted by KMS instance"
roles = ["Reader"]
target_service_name = local.target_key_management_service
target_resource_instance_id = var.key_management_guid
}
}
]
}

##############################################################################
Expand Down Expand Up @@ -104,7 +113,7 @@ module "secrets_manager_to_cos" {
output "authorizations" {
description = "Map of service authorizations"
value = merge(
local.service_authorization_vpc_to_key_management,
module.kms_to_block_storage.value,
module.cos_to_key_management.value,
module.flow_logs_to_cos.value,
module.secrets_manager_to_cos.value
Expand Down
13 changes: 7 additions & 6 deletions dynamic_values/service_authorizations.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
##############################################################################

module "service_authorizations" {
source = "./config_modules/service_authorizations"
key_management = var.key_management
key_management_guid = var.key_management_guid
cos = var.cos
cos_instance_ids = local.cos_instance_ids
use_secrets_manager = var.secrets_manager.use_secrets_manager
source = "./config_modules/service_authorizations"
key_management = var.key_management
key_management_guid = var.key_management_guid
cos = var.cos
cos_instance_ids = local.cos_instance_ids
use_secrets_manager = var.secrets_manager.use_secrets_manager
add_kms_block_storage_s2s = var.add_kms_block_storage_s2s
}

##############################################################################
10 changes: 10 additions & 0 deletions dynamic_values/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -195,3 +195,13 @@ variable "secrets_manager" {
}

##############################################################################

##############################################################################
# Service Authorization Variables
##############################################################################

variable "add_kms_block_storage_s2s" {
description = "Direct reference to kms block storage variable"
}

##############################################################################
11 changes: 11 additions & 0 deletions module-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@
"line": 1116
}
},
"add_kms_block_storage_s2s": {
"name": "add_kms_block_storage_s2s",
"type": "bool",
"description": "add kms to block storage s2s authorization",
"default": true,
"pos": {
"filename": "variables.tf",
"line": 1534
}
},
"appid": {
"name": "appid",
"type": "object({\n name = optional(string)\n resource_group = optional(string)\n use_data = optional(bool)\n keys = optional(list(string))\n use_appid = bool\n })",
Expand Down Expand Up @@ -1126,6 +1136,7 @@
"source": "./dynamic_values",
"attributes": {
"access_groups": "access_groups",
"add_kms_block_storage_s2s": "add_kms_block_storage_s2s",
"appid": "appid",
"bastion_vsi": "teleport_vsi",
"clusters": "clusters",
Expand Down
8 changes: 8 additions & 0 deletions patterns/mixed/config.tf
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,13 @@ locals {

##############################################################################

##############################################################################
# S2S Authorization
##############################################################################
add_kms_block_storage_s2s = var.add_kms_block_storage_s2s

##############################################################################

##############################################################################
# IAM Account Settings
##############################################################################
Expand Down Expand Up @@ -314,6 +321,7 @@ locals {
virtual_private_endpoints = lookup(local.override[local.override_type], "virtual_private_endpoints", local.config.virtual_private_endpoints)
cos = lookup(local.override[local.override_type], "cos", local.config.object_storage)
service_endpoints = lookup(local.override[local.override_type], "service_endpoints", "private")
add_kms_block_storage_s2s = lookup(local.override[local.override_type], "add_kms_block_storage_s2s", local.config.add_kms_block_storage_s2s)
key_management = lookup(local.override[local.override_type], "key_management", local.config.key_management)
atracker = lookup(local.override[local.override_type], "atracker", local.config.atracker)
clusters = lookup(local.override[local.override_type], "clusters", local.config.clusters)
Expand Down
1 change: 1 addition & 0 deletions patterns/mixed/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ module "landing_zone" {
cos = local.env.cos
service_endpoints = local.env.service_endpoints
key_management = local.env.key_management
add_kms_block_storage_s2s = local.env.add_kms_block_storage_s2s
atracker = local.env.atracker
clusters = local.env.clusters
wait_till = local.env.wait_till
Expand Down
12 changes: 12 additions & 0 deletions patterns/mixed/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,18 @@ variable "scc_scope_name" {

##############################################################################

##############################################################################
# s2s variables
##############################################################################

variable "add_kms_block_storage_s2s" {
description = "add kms to block storage s2s authorization"
type = bool
default = true
}

##############################################################################

##############################################################################
# Override JSON
##############################################################################
Expand Down
8 changes: 8 additions & 0 deletions patterns/roks/config.tf
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,13 @@ locals {

##############################################################################

##############################################################################
# S2S Authorization
##############################################################################
add_kms_block_storage_s2s = var.add_kms_block_storage_s2s

##############################################################################

##############################################################################
# IAM Account Settings
##############################################################################
Expand Down Expand Up @@ -300,6 +307,7 @@ locals {
virtual_private_endpoints = lookup(local.override[local.override_type], "virtual_private_endpoints", local.config.virtual_private_endpoints)
cos = lookup(local.override[local.override_type], "cos", local.config.object_storage)
service_endpoints = lookup(local.override[local.override_type], "service_endpoints", "private")
add_kms_block_storage_s2s = lookup(local.override[local.override_type], "add_kms_block_storage_s2s", local.config.add_kms_block_storage_s2s)
key_management = lookup(local.override[local.override_type], "key_management", local.config.key_management)
atracker = lookup(local.override[local.override_type], "atracker", local.config.atracker)
clusters = lookup(local.override[local.override_type], "clusters", local.config.clusters)
Expand Down
1 change: 1 addition & 0 deletions patterns/roks/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ module "landing_zone" {
cos = local.env.cos
service_endpoints = local.env.service_endpoints
key_management = local.env.key_management
add_kms_block_storage_s2s = local.env.add_kms_block_storage_s2s
atracker = local.env.atracker
clusters = local.env.clusters
wait_till = local.env.wait_till
Expand Down
12 changes: 12 additions & 0 deletions patterns/roks/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -593,6 +593,18 @@ variable "scc_scope_name" {

##############################################################################

##############################################################################
# s2s variables
##############################################################################

variable "add_kms_block_storage_s2s" {
description = "add kms to block storage s2s authorization"
type = bool
default = true
}

##############################################################################

##############################################################################
# Override JSON
##############################################################################
Expand Down
8 changes: 8 additions & 0 deletions patterns/vsi/config.tf
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,13 @@ locals {

##############################################################################

##############################################################################
# S2S Authorization
##############################################################################
add_kms_block_storage_s2s = var.add_kms_block_storage_s2s

##############################################################################

##############################################################################
# IAM Account Settings
##############################################################################
Expand Down Expand Up @@ -276,6 +283,7 @@ locals {
virtual_private_endpoints = lookup(local.override[local.override_type], "virtual_private_endpoints", local.config.virtual_private_endpoints)
cos = lookup(local.override[local.override_type], "cos", local.config.object_storage)
service_endpoints = lookup(local.override[local.override_type], "service_endpoints", "private")
add_kms_block_storage_s2s = lookup(local.override[local.override_type], "add_kms_block_storage_s2s", local.config.add_kms_block_storage_s2s)
key_management = lookup(local.override[local.override_type], "key_management", local.config.key_management)
atracker = lookup(local.override[local.override_type], "atracker", local.config.atracker)
clusters = lookup(local.override[local.override_type], "clusters", local.config.clusters)
Expand Down
1 change: 1 addition & 0 deletions patterns/vsi/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ module "landing_zone" {
cos = local.env.cos
service_endpoints = local.env.service_endpoints
key_management = local.env.key_management
add_kms_block_storage_s2s = local.env.add_kms_block_storage_s2s
atracker = local.env.atracker
clusters = local.env.clusters
wait_till = local.env.wait_till
Expand Down
12 changes: 12 additions & 0 deletions patterns/vsi/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,18 @@ variable "scc_scope_name" {

##############################################################################

##############################################################################
# s2s variables
##############################################################################

variable "add_kms_block_storage_s2s" {
description = "add kms to block storage s2s authorization"
type = bool
default = true
}

##############################################################################

##############################################################################
# Override JSON
##############################################################################
Expand Down
12 changes: 12 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -1526,3 +1526,15 @@ variable "vpc_placement_groups" {
}

##############################################################################

##############################################################################
# s2s variables
##############################################################################

variable "add_kms_block_storage_s2s" {
description = "add kms to block storage s2s authorization"
type = bool
default = true
}

##############################################################################

0 comments on commit 06b640f

Please sign in to comment.