File tree Expand file tree Collapse file tree 9 files changed +156
-0
lines changed
Expand file tree Collapse file tree 9 files changed +156
-0
lines changed Original file line number Diff line number Diff line change 1+ module "pdm_encryption_key" {
2+ source = " ./modules/kms"
3+ kms_key_name = " alias/pdm-encryption-key-kms-${ terraform . workspace } "
4+ kms_key_description = " Custom KMS Key to enable server side encryption for PDM resources"
5+ environment = var. environment
6+ owner = var. owner
7+ service_identifiers = [" ssm.amazonaws.com" ]
8+ kms_deletion_window = var. kms_deletion_window
9+ }
Original file line number Diff line number Diff line change 11resource "aws_ssm_parameter" "secret" {
2+ count = var. ignore_value_changes ? 0 : 1
23 name = " /ndr/${ terraform . workspace } /${ var . name } "
34 type = var. type
45 description = var. description
56 value = var. value
7+ key_id = var. key_id
68 depends_on = [var . resource_depends_on ]
79 tags = {
810 Name = " ${ terraform . workspace } -ssm"
911 }
12+
13+ }
14+
15+
16+ resource "aws_ssm_parameter" "secret_ignore_value_changes" {
17+ count = var. ignore_value_changes ? 1 : 0
18+ name = " /ndr/${ terraform . workspace } /${ var . name } "
19+ type = var. type
20+ description = var. description
21+ value = var. value
22+ key_id = var. key_id
23+ depends_on = [var . resource_depends_on ]
24+ tags = {
25+ Name = " ${ terraform . workspace } -ssm"
26+ }
27+
28+ lifecycle {
29+ ignore_changes = [
30+ value ,
31+ ]
32+ }
1033}
1134
Original file line number Diff line number Diff line change @@ -37,3 +37,15 @@ variable "owner" {
3737 description = " Owner tag used to identify the team or individual responsible for the resource."
3838 type = string
3939}
40+
41+ variable "key_id" {
42+ type = string
43+ default = null
44+ description = " KMS Key ID or ARN to encrypt the SecureString parameter"
45+ }
46+
47+ variable "ignore_value_changes" {
48+ type = bool
49+ default = false
50+ description = " Whether to ignore changes to the value field"
51+ }
Original file line number Diff line number Diff line change 1+ # Creating Params to hold a copy of externally signed client cert and key
2+ module "ssm_param_external_client_cert" {
3+ count = local. is_sandbox ? 0 : 1
4+ source = " ./modules/ssm_parameter"
5+ environment = var. environment
6+ owner = var. owner
7+ name = " external_client_cert"
8+ type = " SecureString"
9+ description = " Externally signed client certificate for mTLS"
10+ value = " REPLACE_ME"
11+ key_id = module. pdm_encryption_key . id
12+ ignore_value_changes = true
13+ }
14+
15+ module "ssm_param_external_client_key" {
16+ count = local. is_sandbox ? 0 : 1
17+ source = " ./modules/ssm_parameter"
18+ environment = var. environment
19+ owner = var. owner
20+ name = " external_client_key"
21+ type = " SecureString"
22+ description = " Externally signed client certificate for mTLS"
23+ value = " REPLACE_ME"
24+ key_id = module. pdm_encryption_key . id
25+ ignore_value_changes = true
26+ }
Original file line number Diff line number Diff line change 1+ [req]
2+ default_bits = 4096
3+ distinguished_name = req_distinguished_name
4+ req_extensions = v3_req
5+ prompt = no
6+
7+ [req_distinguished_name]
8+ C = GB
9+ ST = West Yorkshire
10+ L = Leeds
11+ O = NHS England
12+ OU = National Document Repository
13+ CN = client.dev.ndr.national.nhs.uk
14+
15+ [v3_req]
16+ keyUsage = keyEncipherment, dataEncipherment
17+ extendedKeyUsage = serverAuth
Original file line number Diff line number Diff line change 1+ [req]
2+ default_bits = 4096
3+ distinguished_name = req_distinguished_name
4+ req_extensions = v3_req
5+ prompt = no
6+
7+ [req_distinguished_name]
8+ C = GB
9+ ST = West Yorkshire
10+ L = Leeds
11+ O = NHS England
12+ OU = National Document Repository
13+ CN = client.dev.preprod.national.nhs.uk
14+
15+ [v3_req]
16+ keyUsage = keyEncipherment, dataEncipherment
17+ extendedKeyUsage = serverAuth
Original file line number Diff line number Diff line change 1+ [req]
2+ default_bits = 4096
3+ distinguished_name = req_distinguished_name
4+ req_extensions = v3_req
5+ prompt = no
6+
7+ [req_distinguished_name]
8+ C = GB
9+ ST = West Yorkshire
10+ L = Leeds
11+ O = NHS England
12+ OU = National Document Repository
13+ CN = client.prod.ndr.national.nhs.uk
14+
15+ [v3_req]
16+ keyUsage = keyEncipherment, dataEncipherment
17+ extendedKeyUsage = serverAuth
Original file line number Diff line number Diff line change 1+ [req]
2+ default_bits = 4096
3+ distinguished_name = req_distinguished_name
4+ req_extensions = v3_req
5+ prompt = no
6+
7+ [req_distinguished_name]
8+ C = GB
9+ ST = West Yorkshire
10+ L = Leeds
11+ O = NHS England
12+ OU = National Document Repository
13+ CN = client.test.ndr.national.nhs.uk
14+
15+ [v3_req]
16+ keyUsage = keyEncipherment, dataEncipherment
17+ extendedKeyUsage = serverAuth
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+
3+ # This is for generating certs used during mTLS authentication.
4+ # Taken from https://github.com/NHSDigital/api-management-cert-generation/blob/master/README.md
5+ # This script is likely needed if certificates need to be regenerated due to expiry or if new environments are added etc.
6+ # Run create_csrs.sh to generate keys into keys/ and CSRs into csrs/ to send to a trusted CA.
7+ # Usage:
8+ # ./create_csrs.sh
9+
10+ set -euo pipefail
11+
12+ mkdir -p csrs
13+ mkdir -p keys
14+
15+ openssl req -new -newkey rsa:4096 -nodes -sha256 -keyout keys/dev.api.service.nhs.uk.key -out csrs/dev.api.service.nhs.uk.csr -config confs/dev.conf -extensions v3_req
16+ openssl req -new -newkey rsa:4096 -nodes -sha256 -keyout keys/test.api.service.nhs.uk.key -out csrs/test.api.service.nhs.uk.csr -config confs/test.conf -extensions v3_req
17+ openssl req -new -newkey rsa:4096 -nodes -sha256 -keyout keys/preprod.api.service.nhs.uk.key -out csrs/preprod.api.service.nhs.uk.csr -config confs/preprod.conf -extensions v3_req
18+ openssl req -new -newkey rsa:4096 -nodes -sha256 -keyout keys/api.service.nhs.uk.key -out csrs/api.service.nhs.uk.csr -config confs/prod.conf -extensions v3_req
You can’t perform that action at this time.
0 commit comments