Skip to content

Commit 276fc72

Browse files
Aayush-Abhyarthimukulpalit-ibmimprateekshShikha Maheshwari
authored
feat: Added support of ca-mon region<br> Added new input service_endpoints defaulting to private <br>Improve DA to enhance user experience<br> - updated DA reference architecutre diagram<br> - updated catalog content<br> - updated the listed permissions for DA (#246)
* DA improvements * add: index * add: permissions * revert * resolve comments * resolve conflicts * Update ibm_catalog.json Co-authored-by: Mukul Palit <[email protected]> * Update ibm_catalog.json Co-authored-by: Mukul Palit <[email protected]> * Update ibm_catalog.json Co-authored-by: Mukul Palit <[email protected]> * resolve comments * resolve comments * fix: diagram * more fixes * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * resolve comments * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * fix: capitalization * fix: diagram * Update solutions/fully-configurable/README.md Co-authored-by: prateek <[email protected]> * resolve comments * pass cis * revert prefix * revert prefix * Update ibm_catalog.json Co-authored-by: prateek <[email protected]> * resolve comments * update diagram * update: diagram * fix: split observability related updates * fixes * update content * update cert name * resolve comment * remove cda --------- Co-authored-by: Mukul Palit <[email protected]> Co-authored-by: prateek <[email protected]> Co-authored-by: Shikha Maheshwari <[email protected]>
1 parent cdca9d9 commit 276fc72

File tree

8 files changed

+134
-72
lines changed

8 files changed

+134
-72
lines changed

ibm_catalog.json

Lines changed: 115 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -20,108 +20,149 @@
2020
"terraform",
2121
"solution"
2222
],
23-
"short_description": "Creates and configures a Secrets Manager Public Certificates Engine.",
24-
"long_description": "This deployable architecture is used to configure an Internet Service DNS configuration, establish authorization between Secrets Manager and the Internet Service, and set up Let's Encrypt as the certificate authority. This Terraform-based automation is part of a broader suite of IBM-maintained Infrastructure as Code (IaC) asset collection, each following the naming pattern \"Cloud automation for *servicename*\" and focusing on single IBM Cloud service. These deployable architectures can be used on their own to streamline and automate service deployments through an [IaC approach](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-understanding-projects), or assembled together into a broader [Automated IaC stack](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-config-stack) to automate the deployment of an end-to-end solution architecture.",
23+
"short_description": "Creates and configures a Secrets Manager public certificates engine",
24+
"long_description": "This deployable architecture sets up a public certificates engine in IBM Cloud Secrets Manager, enabling automated provisioning and management of publicly trusted Transport Layer Security (TLS) certificates. These certificates are issued by Let’s Encrypt, a widely trusted Certificate Authority (CA) that helps secure websites and applications with HTTPS. This deployable architecture configures integration between IBM Cloud Secrets Manager, Cloud Internet Services (CIS) for Domain Name System (DNS) validation, and Let’s Encrypt as the Certificate Authority (CA). It provisions the required authorization policies, DNS configuration, and CA configuration so that applications can obtain and renew public certificates automatically.\n\nℹ️ This Terraform-based automation is part of a broader suite of IBM-maintained Infrastructure as Code (IaC) assets, each following the naming pattern \"Cloud automation for *servicename*\" and focusing on single IBM Cloud service. These single-service deployable architectures can be used on their own to streamline and automate service deployments through an [IaC approach](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-understanding-projects), or assembled together into a broader [automated IaC stack](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-config-stack) to automate the deployment of an end-to-end solution architecture.",
2525
"offering_docs_url": "https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/blob/main/README.md",
2626
"offering_icon_url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/main/images/secrets_manager_public_cert_engine.svg",
2727
"provider_name": "IBM",
2828
"features": [
2929
{
30-
"title": "Configures Internet Service DNS",
31-
"description": "Configures Internet Service DNS."
30+
"title": "DNS configuration in Internet Services",
31+
"description": "Adds DNS configuration in Internet Services for domain validation when ordering certificates. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-add-dns-provider&interface=ui)."
3232
},
3333
{
34-
"title": "Creates Secrets Manager Internet Service authorization",
35-
"description": "Creates authorization between Secrets Manager and Internet Service."
34+
"title": "Service-to-Service Authorization",
35+
"description": "Creates [authorization](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-prepare-order-certificates#authorize-cis) between the Secrets Manager and Internet Services."
3636
},
3737
{
38-
"title": "Configures Let's Encrypt certificate authority",
39-
"description": "Configures Let's Encrypt certificate authority."
38+
"title": "Certificate Authority",
39+
"description": "Configures Let's Encrypt certificate authority for getting the SSL/TLS certificates approved. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-add-certificate-authority&interface=terraform)."
4040
}
4141
],
42-
"support_details": "This product is in the community registry, as such support is handled through the originated repo. If you experience issues please open an issue in that repository [https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/issues](https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/issues). Please note this product is not supported via the IBM Cloud Support Center.",
42+
"support_details": "This product is in the community registry, as such support is handled through the [original repo](https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine). If you experience issues please open an issue [here](https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/issues). Please note this product is not supported via the IBM Cloud Support Center.",
4343
"flavors": [
4444
{
4545
"label": "Fully configurable",
4646
"name": "fully-configurable",
47+
"index": 1,
4748
"install_type": "fullstack",
4849
"working_directory": "solutions/fully-configurable",
4950
"architecture": {
50-
"descriptions": "This architecture supports creating and configuring a Secrets Manager Public Certificates Engine.",
5151
"features": [
5252
{
53-
"title": "Internet Service DNS",
54-
"description": "Configures Internet Service DNS configuration."
55-
},
56-
{
57-
"title": "Authorization between Secrets Manager and Internet Service",
58-
"description": "Creates authorization between Secrets Manager and Internet Service."
59-
},
60-
{
61-
"title": "Let's Encrypt certificate authority",
62-
"description": "Provisions a Let's Encrypt certificate authority."
53+
"title": " ",
54+
"description": "Configured to use IBM secure-by-default standards, but can be edited to fit your use case."
6355
}
6456
],
6557
"diagrams": [
6658
{
6759
"diagram": {
6860
"caption": "Secrets Manager Public Certificates Engine",
69-
"url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/main/reference-architecture/secrets_manager_public_cert_engine.svg",
61+
"url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/main/reference-architecture/deployable-architecture-sm-public-cert-engine.svg",
7062
"type": "image/svg+xml"
7163
},
72-
"description": "This architcture supports creating secrets manager public certificates engine within a secrets manager instance."
64+
"description": "This architecture supports creating a Secrets Manager public certificates engine within a Secrets Manager instance. The Secrets Manager public certificates engine enables you to issue and manage publicly trusted TLS/SSL certificates by integrating with external Certificate Authorities such as Let's Encrypt. It supports configuring DNS providers like IBM Cloud Internet Services (CIS) for domain validation, managing CA configurations, and automating the issuance and renewal of public certificates for internet-facing applications and services."
7365
}
7466
]
7567
},
7668
"iam_permissions": [
7769
{
78-
"service_name": "iam-access-groups",
7970
"role_crns": [
8071
"crn:v1:bluemix:public:iam::::role:Editor"
81-
]
72+
],
73+
"service_name": "iam-groups",
74+
"notes": "[Optional] Required for managing IAM access groups."
8275
},
8376
{
84-
"service_name": "iam-identity",
8577
"role_crns": [
86-
"crn:v1:bluemix:public:iam::::role:Operator"
87-
]
78+
"crn:v1:bluemix:public:iam::::role:Administrator"
79+
],
80+
"service_name": "All Account Management services",
81+
"notes": "[Optional] Required to create new resource groups when enabling the Account Configuration integration."
82+
},
83+
{
84+
"role_crns": [
85+
"crn:v1:bluemix:public:iam::::role:Administrator"
86+
],
87+
"service_name": "All Identity and Access enabled services",
88+
"notes": "[Optional] Required to create new resource groups with account settings when enabling the Account Configuration integration."
8889
},
8990
{
90-
"service_name": "resource-group",
9191
"role_crns": [
9292
"crn:v1:bluemix:public:iam::::role:Viewer"
93-
]
93+
],
94+
"service_name": "Resource group only",
95+
"notes": "Viewer access is required in the resource group you want to provision in."
9496
},
9597
{
96-
"service_name": "secrets-manager",
9798
"role_crns": [
98-
"crn:v1:bluemix:public:iam::::serviceRole:Administrator",
99+
"crn:v1:bluemix:public:iam::::role:Editor",
99100
"crn:v1:bluemix:public:iam::::serviceRole:Manager"
100-
]
101+
],
102+
"service_name": "secrets-manager",
103+
"notes": "Required to create a Secrets Manager instance."
104+
},
105+
{
106+
"role_crns": [
107+
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
108+
"crn:v1:bluemix:public:iam::::role:Editor"
109+
],
110+
"service_name": "event-notifications",
111+
"notes": "[Optional] Required to create an Event Notifications instance."
112+
},
113+
{
114+
"role_crns": [
115+
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
116+
"crn:v1:bluemix:public:iam::::role:Editor"
117+
],
118+
"service_name": "sysdig-monitor",
119+
"notes": "[Optional] Required to create an instance of Cloud Monitoring."
120+
},
121+
{
122+
"role_crns": [
123+
"crn:v1:bluemix:public:iam::::serviceRole:Writer",
124+
"crn:v1:bluemix:public:iam::::role:Editor"
125+
],
126+
"service_name": "atracker",
127+
"notes": "[Optional] Required when enabling the Activity Tracker Event Routing."
128+
},
129+
{
130+
"role_crns": [
131+
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
132+
"crn:v1:bluemix:public:iam::::role:Editor"
133+
],
134+
"service_name": "cloud-object-storage",
135+
"notes": "[Optional] Required to create Object Storage instance."
136+
},
137+
{
138+
"role_crns": [
139+
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
140+
"crn:v1:bluemix:public:iam::::role:Editor"
141+
],
142+
"service_name": "logs",
143+
"notes": "[Optional] Required to create an instance of Cloud Logs."
144+
},
145+
{
146+
"role_crns": [
147+
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
148+
"crn:v1:bluemix:public:iam::::role:Editor"
149+
],
150+
"service_name": "hs-crypto",
151+
"notes": "[Optional] Required if Hyper Protect Crypto Service is used for encryption."
152+
},
153+
{
154+
"role_crns": [
155+
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
156+
"crn:v1:bluemix:public:iam::::role:Editor"
157+
],
158+
"service_name": "kms",
159+
"notes": "[Optional] Required if Key Protect is used for encryption."
101160
}
102161
],
103162
"configuration": [
104163
{
105164
"key": "ibmcloud_api_key"
106165
},
107-
{
108-
"key": "provider_visibility",
109-
"options": [
110-
{
111-
"displayname": "private",
112-
"value": "private"
113-
},
114-
{
115-
"displayname": "public",
116-
"value": "public"
117-
},
118-
{
119-
"displayname": "public-and-private",
120-
"value": "public-and-private"
121-
}
122-
],
123-
"hidden": true
124-
},
125166
{
126167
"key": "existing_secrets_manager_crn",
127168
"required": true
@@ -135,7 +176,7 @@
135176
"required": true,
136177
"virtual": true,
137178
"default_value": "us-south",
138-
"description": "The region to provision a new Secrets Manager instance in.",
179+
"description": "The region to provision a Secrets Manager instance.",
139180
"options": [
140181
{
141182
"displayname": "Osaka (jp-osa)",
@@ -201,6 +242,10 @@
201242
"default_value": "standard",
202243
"description": "The pricing plan to use when provisioning a Secrets Manager instance. Possible values: `standard`, `trial`. You can create only one Trial instance of Secrets Manager per account. Before you can create a new Trial instance, you must delete the existing Trial instance and its reclamation. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-create-instance&interface=ui#upgrade-instance-standard)."
203244
},
245+
{
246+
"key": "service_endpoints",
247+
"hidden": true
248+
},
204249
{
205250
"key": "ibmcloud_cis_api_key"
206251
},
@@ -241,12 +286,30 @@
241286
},
242287
{
243288
"key": "skip_iam_authorization_policy"
289+
},
290+
{
291+
"key": "provider_visibility",
292+
"options": [
293+
{
294+
"displayname": "private",
295+
"value": "private"
296+
},
297+
{
298+
"displayname": "public",
299+
"value": "public"
300+
},
301+
{
302+
"displayname": "public-and-private",
303+
"value": "public-and-private"
304+
}
305+
],
306+
"hidden": true
244307
}
245308
],
246309
"dependencies": [
247310
{
248311
"name": "deploy-arch-ibm-secrets-manager",
249-
"description": "Create a new Secrets Manager instance.",
312+
"description": "Configure Secrets Manager to deploy public certificates engine.",
250313
"id": "6d6ebc76-7bbd-42f5-8bc7-78f4fabd5944-global",
251314
"version": "v2.8.6",
252315
"flavors": [

reference-architecture/deployable-architecture-sm-public-cert-engine.svg

Lines changed: 4 additions & 0 deletions
Loading

reference-architecture/secrets_manager_public_cert_engine.svg

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
# Secrets Manager Public Certificate Engine
1+
# Cloud automation for Secrets Manager public certificates engine (Fully configurable)
22

3-
This solution supports the following:
4-
- Provisioning a Secrets Manager public certificate authority configuration to configure Let's Encrypt as a Certificate Authority (CA).
5-
- Provisioning a Secrets Manager DNS provider configuration for IBM Cloud Internet Services.
6-
- Provisioning a Secrets Manager to Cloud Internet Service authorization policy.
7-
8-
![secrets-manager-public-cert-engine-deployable-architecture](../../reference-architecture/secrets_manager_public_cert_engine.svg)
9-
10-
**NB:** This solution is not intended to be invoked by other modules, as it includes provider configuration. As a result, it is incompatible with the `for_each`, `count`, and `depends_on` arguments. For more information see [Providers Within Modules](https://developer.hashicorp.com/terraform/language/modules/develop/providers)
3+
:exclamation: **Important:** This solution is not intended to be called by other modules because it contains a provider configuration and is not compatible with the `for_each`, `count`, and `depends_on` arguments. For more information, see [Providers Within Modules](https://developer.hashicorp.com/terraform/language/modules/develop/providers).

solutions/fully-configurable/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ module "secrets_manager_public_cert_engine" {
4444
ca_config_name = "${local.prefix}${var.ca_config_name}"
4545
lets_encrypt_environment = var.lets_encrypt_environment
4646
acme_letsencrypt_private_key = var.acme_letsencrypt_private_key
47-
service_endpoints = "private"
47+
service_endpoints = var.service_endpoints
4848
skip_iam_authorization_policy = var.skip_iam_authorization_policy
4949
private_key_secrets_manager_instance_guid = local.existing_secrets_manager_guid
5050
private_key_secrets_manager_secret_id = local.secret_id

solutions/fully-configurable/provider.tf

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
provider "ibm" {
2-
ibmcloud_api_key = var.ibmcloud_api_key
3-
region = local.existing_secrets_manager_region
4-
visibility = var.provider_visibility
2+
ibmcloud_api_key = var.ibmcloud_api_key
3+
region = local.existing_secrets_manager_region
4+
visibility = var.provider_visibility
5+
private_endpoint_type = (var.provider_visibility == "private" && local.existing_secrets_manager_region == "ca-mon") ? "vpe" : null
56
}
67

78
provider "ibm" {

solutions/fully-configurable/variables.tf

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ variable "prefix" {
4747
}
4848
}
4949

50+
variable "service_endpoints" {
51+
type = string
52+
description = "The service endpoint type to communicate with the provided secrets manager instance."
53+
default = "private"
54+
}
5055

5156
variable "ibmcloud_cis_api_key" {
5257
type = string
@@ -75,7 +80,7 @@ variable "internet_service_domain_id" {
7580

7681
variable "dns_config_name" {
7782
type = string
78-
description = "Name of the DNS config for the public_cert secrets engine. If passing a value for `dns_config_name` a value for `internet_services_crn` is required. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-secrets-manager-cli#secrets-manager-configurations-cli)."
83+
description = "Name of the DNS config for the Public Certificates Secrets Engine. If passing a value for `dns_config_name` a value for `internet_services_crn` is required. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-secrets-manager-cli#secrets-manager-configurations-cli)."
7984
default = null
8085

8186
validation {
@@ -92,7 +97,7 @@ variable "ca_config_name" {
9297

9398
variable "lets_encrypt_environment" {
9499
type = string
95-
description = "Let's Encrypt environment (staging, production). [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-secrets-manager-cli#secrets-manager-configurations-cli)."
100+
description = "The configuration of the Let's Encrypt Certificate Authority environment. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-secrets-manager-cli#secrets-manager-configurations-cli)."
96101
default = "production"
97102

98103
validation {

tests/pr_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ func TestRunSolutionsFullyConfigurableUpgradeSchematics(t *testing.T) {
151151
{Name: "prefix", Value: options.Prefix, DataType: "string"},
152152
{Name: "existing_secrets_manager_crn", Value: permanentResources["secretsManagerCRN"], DataType: "string"},
153153
{Name: "acme_letsencrypt_private_key_secrets_manager_secret_crn", Value: permanentResources["acme_letsencrypt_private_key_secret_crn"], DataType: "string"},
154-
{Name: "dns_config_name", Value: "cer-dns", DataType: "string"},
154+
{Name: "dns_config_name", Value: "cert-dns", DataType: "string"},
155155
{Name: "internet_services_crn", Value: permanentResources["cisInstanceId"], DataType: "string"},
156156
{Name: "skip_iam_authorization_policy", Value: true, DataType: "bool"}, // A permanent cis-sm auth policy already exists in the account
157157
}

0 commit comments

Comments
 (0)