|
| 1 | +<h1 align="center" style="border-bottom: none"> |
| 2 | + GCP Load Balancer Universal Orchestrator Extension |
| 3 | +</h1> |
1 | 4 |
|
2 |
| -# GCP Load Balancer |
| 5 | +<p align="center"> |
| 6 | + <!-- Badges --> |
| 7 | +<img src="https://img.shields.io/badge/integration_status-production-3D1973?style=flat-square" alt="Integration Status: production" /> |
| 8 | +<a href="https://github.com/Keyfactor/gcp-loadbalancer-orchestrator/releases"><img src="https://img.shields.io/github/v/release/Keyfactor/gcp-loadbalancer-orchestrator?style=flat-square" alt="Release" /></a> |
| 9 | +<img src="https://img.shields.io/github/issues/Keyfactor/gcp-loadbalancer-orchestrator?style=flat-square" alt="Issues" /> |
| 10 | +<img src="https://img.shields.io/github/downloads/Keyfactor/gcp-loadbalancer-orchestrator/total?style=flat-square&label=downloads&color=28B905" alt="GitHub Downloads (all assets, all releases)" /> |
| 11 | +</p> |
3 | 12 |
|
4 |
| -The Google Cloud Platform (GCP) Load Balancer Orchestrator allows for the management of Google Cloud Platform Load Balancer certificate stores. Inventory, Management-Add, and Management-Remove functions are supported. Also, re-binding to endpoints IS supported for certificate renewals (but NOT adding new certificates). The orchestrator uses the Google Cloud Compute Engine API (https://cloud.google.com/compute/docs/reference/rest/v1) to manage stores. |
| 13 | +<p align="center"> |
| 14 | + <!-- TOC --> |
| 15 | + <a href="#support"> |
| 16 | + <b>Support</b> |
| 17 | + </a> |
| 18 | + · |
| 19 | + <a href="#installation"> |
| 20 | + <b>Installation</b> |
| 21 | + </a> |
| 22 | + · |
| 23 | + <a href="#license"> |
| 24 | + <b>License</b> |
| 25 | + </a> |
| 26 | + · |
| 27 | + <a href="https://github.com/orgs/Keyfactor/repositories?q=orchestrator"> |
| 28 | + <b>Related Integrations</b> |
| 29 | + </a> |
| 30 | +</p> |
5 | 31 |
|
6 |
| -#### Integration status: Production - Ready for use in production environments. |
7 | 32 |
|
8 |
| -## About the Keyfactor Universal Orchestrator Extension |
| 33 | +## Overview |
9 | 34 |
|
10 |
| -This repository contains a Universal Orchestrator Extension which is a plugin to the Keyfactor Universal Orchestrator. Within the Keyfactor Platform, Orchestrators are used to manage “certificate stores” — collections of certificates and roots of trust that are found within and used by various applications. |
| 35 | +The GCP Load Balancer Universal Orchestrator extension enables Keyfactor Command to manage SSL/TLS certificates within Google Cloud Platform (GCP) Load Balancers. GCP Load Balancers ensure that users can securely access applications using HTTPS by utilizing SSL/TLS certificates. These certificates need to be managed efficiently to ensure uninterrupted, secure connections. |
11 | 36 |
|
12 |
| -The Universal Orchestrator is part of the Keyfactor software distribution and is available via the Keyfactor customer portal. For general instructions on installing Extensions, see the “Keyfactor Command Orchestrator Installation and Configuration Guide” section of the Keyfactor documentation. For configuration details of this specific Extension see below in this readme. |
| 37 | +Within Keyfactor Command, defined Certificate Stores represent the configured SSL/TLS certificates that are managed in the GCP environment. These Certificate Stores can be thought of as logical groupings of certificates, which can be associated with specific GCP projects or regions. The Orchestrator's job is to automate the inventory, addition, and removal of these certificates, streamlining the certificate lifecycle management process for GCP Load Balancers. |
13 | 38 |
|
14 |
| -The Universal Orchestrator is the successor to the Windows Orchestrator. This Orchestrator Extension plugin only works with the Universal Orchestrator and does not work with the Windows Orchestrator. |
| 39 | +## Compatibility |
15 | 40 |
|
16 |
| -## Support for GCP Load Balancer |
| 41 | +This integration is compatible with Keyfactor Universal Orchestrator version 10.1 and later. |
17 | 42 |
|
18 |
| -GCP Load Balancer is supported by Keyfactor for Keyfactor customers. If you have a support issue, please open a support ticket via the Keyfactor Support Portal at https://support.keyfactor.com |
| 43 | +## Support |
| 44 | +The GCP Load Balancer Universal Orchestrator extension is supported by Keyfactor for Keyfactor customers. If you have a support issue, please open a support ticket with your Keyfactor representative. If you have a support issue, please open a support ticket via the Keyfactor Support Portal at https://support.keyfactor.com. |
| 45 | + |
| 46 | +> To report a problem or suggest a new feature, use the **[Issues](../../issues)** tab. If you want to contribute actual bug fixes or proposed enhancements, use the **[Pull requests](../../pulls)** tab. |
19 | 47 |
|
20 |
| -###### To report a problem or suggest a new feature, use the **[Issues](../../issues)** tab. If you want to contribute actual bug fixes or proposed enhancements, use the **[Pull requests](../../pulls)** tab. |
| 48 | +## Installation |
| 49 | +Before installing the GCP Load Balancer Universal Orchestrator extension, it's recommended to install [kfutil](https://github.com/Keyfactor/kfutil). Kfutil is a command-line tool that simplifies the process of creating store types, installing extensions, and instantiating certificate stores in Keyfactor Command. |
21 | 50 |
|
22 |
| ---- |
23 | 51 |
|
| 52 | +1. Follow the [requirements section](docs/gcploadbal.md#requirements) to configure a Service Account and grant necessary API permissions. |
24 | 53 |
|
25 |
| ---- |
| 54 | + <details><summary>Requirements</summary> |
26 | 55 |
|
| 56 | + ### GCP Load Balancer Configuration |
27 | 57 |
|
| 58 | + **1. In Keyfactor Command, go to Settings (the gear icon in the top right) => Certificate Store Types and create a new certificate store type:** |
28 | 59 |
|
29 |
| -## Keyfactor Version Supported |
| 60 | +  |
30 | 61 |
|
31 |
| -The minimum version of the Keyfactor Universal Orchestrator Framework needed to run this version of the extension is 10.1 |
32 |
| -## Platform Specific Notes |
| 62 | +  |
33 | 63 |
|
34 |
| -The Keyfactor Universal Orchestrator may be installed on either Windows or Linux based platforms. The certificate operations supported by a capability may vary based what platform the capability is installed on. The table below indicates what capabilities are supported based on which platform the encompassing Universal Orchestrator is running. |
35 |
| -| Operation | Win | Linux | |
36 |
| -|-----|-----|------| |
37 |
| -|Supports Management Add|✓ | | |
38 |
| -|Supports Management Remove|✓ | | |
39 |
| -|Supports Create Store| | | |
40 |
| -|Supports Discovery| | | |
41 |
| -|Supports Renrollment| | | |
42 |
| -|Supports Inventory|✓ | | |
| 64 | + The certificate store type set up for the GCP Load Balancer Orchestrator should have the following options set: |
43 | 65 |
|
| 66 | + - **Name:** A descriptive name for the certificate store type |
| 67 | + - **Short Name:** Must be **GCPLoadBal** or the alternative name you used to create the folder in the {installation folder}\extensions folder. |
| 68 | + - **Custom Capability** - Leave unchecked |
| 69 | + - **Supported Job Types** – Select Inventory, Add, and Remove |
| 70 | + - **General Settings** - Leave Needs Server and Uses PowerShell unchecked. Select Blueprint Allowed if you plan to use blueprinting. |
| 71 | + - **Password Settings** - Leave both options unchecked |
| 72 | + - **Store Path Type** - Freeform |
| 73 | + - **Supports Custom Alias** - Optional. If no alias is provided, one will be dynamically created by the GCP Load Balancer Orchestrator. |
| 74 | + - **Private Key Handling: ** Required (Adding a certificate to a GCP Load Balancer certificate store without the private key is not a valid use case) |
| 75 | + - **PFX Password Style:** Default |
44 | 76 |
|
| 77 | + **Parameters:** Add 1 custom parameter if authenticating to the GCP API library by passing the GCP service account key from Keyfactor Command (see Authentication): |
45 | 78 |
|
| 79 | +  |
46 | 80 |
|
| 81 | + - Name: Must be **jsonKey** |
| 82 | + - Display Name: Desired custom display name |
| 83 | + - Type: Secret |
| 84 | + - Change Default Value: Unchecked |
| 85 | + - Default Value: Leave blank |
47 | 86 |
|
48 |
| ---- |
49 | 87 |
|
50 | 88 |
|
51 |
| -# Introduction |
52 |
| -- The Google Cloud Platform (GCP) Load Balancer Orchestrator allows for the management of Google Cloud Platform Load Balancer certificate stores. Inventory, Management-Add, and Management-Remove functions are supported. Also, re-binding to endpoints IS supported for certificate renewals (but NOT adding new certificates). The orchestrator uses the Google Cloud Compute Engine API (https://cloud.google.com/compute/docs/reference/rest/v1) to manage stores. |
| 89 | + **2. Create a new GCP Load Balancer certificate store. Navigate to Certificate Locations =\> Certificate Stores within Keyfactor Command to add the store. Below are the values that should be entered.** |
| 90 | +  |
53 | 91 |
|
| 92 | + - **Category:** Must be the GCP Load Balancer type you created in Step 1. |
54 | 93 |
|
| 94 | + - **Container:** Optional container name if using this feature. Please consult the Keyfactor Command Reference Guide for more information on this feature. |
55 | 95 |
|
56 |
| -# Use Cases |
| 96 | + - **Client Machine:** The name or IP address of the Orchestrator server that will be handling GCP jobs. |
57 | 97 |
|
58 |
| -The GCP Load Balancer Orchestrator supports the following capabilities: |
| 98 | + - **Store Path:** This should be your Google Cloud project ID. This will work against GCP Global resources. Optionally, you can append "/" with the region you wish to process against. Please refer to the following page for a list of valid region codes (GCP code column): https://gist.github.com/rpkim/084046e02fd8c452ba6ddef3a61d5d59. |
59 | 99 |
|
60 |
| -- Inventory |
61 |
| -- Management (Add) |
62 |
| -- Management (Remove) |
| 100 | + - **Service Account Key:** If you will be authenticating via passing credentials from Keyfactor Command, you must add this value as follows: |
| 101 | + - No Service Account Key: Unchecked |
| 102 | + - Secret Source: "Keyfactor Secrets" if you wish to store the GCP service account key in the Keyfactor secrets engine or "Load From PAM Provider" if you have set up a PAM provider integration within Keyfactor Command and wish to store this value there. |
| 103 | + - Enter and Confirm Service Account Key: The JSON-based service account key you acquired from GCP (See Authentication). |
63 | 104 |
|
| 105 | + **Inventory Schedule:** Set whether to schedule Inventory jobs for this certificate store, and if so, the frequency here. |
64 | 106 |
|
| 107 | + ### Authentication |
65 | 108 |
|
66 |
| -# Versioning |
| 109 | + A service account is necessary for authentication to GCP. The following are the required permissions: |
| 110 | + - compute.sslCertificates.create |
| 111 | + - compute.sslCertificates.delete |
| 112 | + - compute.sslCertificates.list |
| 113 | + - compute.sslCertificates.get |
| 114 | + - compute.targetHttpsProxies.list |
| 115 | + - compute.targetHttpsProxies.setSslCertificates |
| 116 | + - compute.regionSslCertificates.list |
67 | 117 |
|
68 |
| -The version number of a the GCP Load Balancer Orchestrator can be verified by right clicking on the GCPLoadBalancer.dll file, selecting Properties, and then clicking on the Details tab. |
| 118 | + The agent supports having credentials provided by the environment, environment variable, or passed manually from Keyfactor Command. You can read more about the first two options [here] (https://cloud.google.com/docs/authentication/production#automatically). |
69 | 119 |
|
| 120 | + To pass credentials from Keyfactor Command you need to first create a service account and then download a service account key. Instructions are [here](https://cloud.google.com/docs/authentication/production#manually). Remember to assign the appropriate role/permissions for the service account. Afterwards inside Keyfactor Command copy and paste the contents of the service account key in the password field for the GCP Certificate Store Type. |
70 | 121 |
|
71 | 122 |
|
72 |
| -# Keyfactor Version Supported |
73 | 123 |
|
74 |
| -The F5 Orchestrator has been tested using Keyfactor Command version 9.4 and the Keyfactor Universal Orchestrator version 9.5. However, this should be compatible with any Keyfactor versions 9.x and above. |
| 124 | + </details> |
75 | 125 |
|
| 126 | +2. Create Certificate Store Types for the GCP Load Balancer Orchestrator extension. |
76 | 127 |
|
| 128 | + * **Using kfutil**: |
77 | 129 |
|
78 |
| -# GCP Load Balancer Orchestrator Installation |
| 130 | + ```shell |
| 131 | + # GCP Load Balancer |
| 132 | + kfutil store-types create GCPLoadBal |
| 133 | + ``` |
79 | 134 |
|
80 |
| -1. In the Keyfactor Orchestrator installation folder (by convention C:\Program Files\Keyfactor\Keyfactor Orchestrator), find the "extensions" folder. Underneath that, create a new folder named "GCPLoadBal". You may choose a different folder name if you want, but when you get to GCP Load Balancer Configuration - Step 1, the Short Name you choose must match this folder name. Also, the folder name must be a maximum of 10 characters long. |
81 |
| -2. Download the latest version of the GCP Load Balancer Orchestrator from [GitHub](https://github.com/Keyfactor/gcp-loadbalancer-orchestrator). |
82 |
| -3. Copy the contents of the download installation zip file to the folder created in Step 1. |
83 |
| -4. (Optional) If you decided to name of the folder in step 1 to something different than the suggested name - GCPLoadBal - you will need to edit the manifest.json file. For each section, change {folder name} in "CertStores.{folder name}.*Capability*" to the folder name you used for the store type. |
| 135 | + * **Manually**: |
| 136 | + * [GCP Load Balancer](docs/gcploadbal.md#certificate-store-type-configuration) |
84 | 137 |
|
| 138 | +3. Install the GCP Load Balancer Universal Orchestrator extension. |
| 139 | + |
| 140 | + * **Using kfutil**: On the server that that hosts the Universal Orchestrator, run the following command: |
85 | 141 |
|
| 142 | + ```shell |
| 143 | + # Windows Server |
| 144 | + kfutil orchestrator extension -e gcp-loadbalancer-orchestrator@latest --out "C:\Program Files\Keyfactor\Keyfactor Orchestrator\extensions" |
86 | 145 |
|
87 |
| -# GCP Load Balancer Configuration |
| 146 | + # Linux |
| 147 | + kfutil orchestrator extension -e gcp-loadbalancer-orchestrator@latest --out "/opt/keyfactor/orchestrator/extensions" |
| 148 | + ``` |
88 | 149 |
|
89 |
| -**1. In Keyfactor Command, go to Settings (the gear icon in the top right) => Certificate Store Types and create a new certificate store type:** |
| 150 | + * **Manually**: Follow the [official Command documentation](https://software.keyfactor.com/Core-OnPrem/Current/Content/InstallingAgents/NetCoreOrchestrator/CustomExtensions.htm?Highlight=extensions) to install the latest [GCP Load Balancer Universal Orchestrator extension](https://github.com/Keyfactor/gcp-loadbalancer-orchestrator/releases/latest). |
90 | 151 |
|
91 |
| - |
| 152 | +4. Create new certificate stores in Keyfactor Command for the Sample Universal Orchestrator extension. |
92 | 153 |
|
93 |
| - |
| 154 | + * [GCP Load Balancer](docs/gcploadbal.md#certificate-store-configuration) |
94 | 155 |
|
95 |
| -The certificate store type set up for the GCP Load Balancer Orchestrator should have the following options set: |
96 | 156 |
|
97 |
| -- **Name:** A descriptive name for the certificate store type |
98 |
| -- **Short Name:** Must be **GCPLoadBal** or the alternative name you used to create the folder in the {installation folder}\extensions folder. |
99 |
| -- **Custom Capability** - Leave unchecked |
100 |
| -- **Supported Job Types** – Select Inventory, Add, and Remove |
101 |
| -- **General Settings** - Leave Needs Server and Uses PowerShell unchecked. Select Blueprint Allowed if you plan to use blueprinting. |
102 |
| -- **Password Settings** - Leave both options unchecked |
103 |
| -- **Store Path Type** - Freeform |
104 |
| -- **Supports Custom Alias** - Optional. If no alias is provided, one will be dynamically created by the GCP Load Balancer Orchestrator. |
105 |
| -- **Private Key Handling: ** Required (Adding a certificate to a GCP Load Balancer certificate store without the private key is not a valid use case) |
106 |
| -- **PFX Password Style:** Default |
107 | 157 |
|
108 |
| -**Parameters:** Add 1 custom parameter if authenticating to the GCP API library by passing the GCP service account key from Keyfactor Command (see Authentication): |
| 158 | +## License |
109 | 159 |
|
110 |
| - |
| 160 | +Apache License 2.0, see [LICENSE](LICENSE). |
111 | 161 |
|
112 |
| -- Name: Must be **jsonKey** |
113 |
| -- Display Name: Desired custom display name |
114 |
| -- Type: Secret |
115 |
| -- Change Default Value: Unchecked |
116 |
| -- Default Value: Leave blank |
117 |
| - |
118 |
| - |
119 |
| - |
120 |
| -**2. Create a new GCP Load Balancer certificate store. Navigate to Certificate Locations =\> Certificate Stores within Keyfactor Command to add the store. Below are the values that should be entered.** |
121 |
| - |
122 |
| - |
123 |
| -- **Category:** Must be the GCP Load Balancer type you created in Step 1. |
124 |
| - |
125 |
| -- **Container:** Optional container name if using this feature. Please consult the Keyfactor Command Reference Guide for more information on this feature. |
126 |
| - |
127 |
| -- **Client Machine:** The name or IP address of the Orchestrator server that will be handling GCP jobs. |
128 |
| - |
129 |
| -- **Store Path:** This should be your Google Cloud project ID. This will work against GCP Global resources. Optionally, you can append "/" with the region you wish to process against. Please refer to the following page for a list of valid region codes (GCP code column): https://gist.github.com/rpkim/084046e02fd8c452ba6ddef3a61d5d59. |
130 |
| - |
131 |
| -- **Service Account Key:** If you will be authenticating via passing credentials from Keyfactor Command, you must add this value as follows: |
132 |
| - - No Service Account Key: Unchecked |
133 |
| - - Secret Source: "Keyfactor Secrets" if you wish to store the GCP service account key in the Keyfactor secrets engine or "Load From PAM Provider" if you have set up a PAM provider integration within Keyfactor Command and wish to store this value there. |
134 |
| - - Enter and Confirm Service Account Key: The JSON-based service account key you acquired from GCP (See Authentication). |
135 |
| - |
136 |
| -**Inventory Schedule:** Set whether to schedule Inventory jobs for this certificate store, and if so, the frequency here. |
137 |
| - |
138 |
| - |
139 |
| - |
140 |
| -# Authentication |
141 |
| - |
142 |
| -A service account is necessary for authentication to GCP. The following are the required permissions: |
143 |
| -- compute.sslCertificates.create |
144 |
| -- compute.sslCertificates.delete |
145 |
| -- compute.sslCertificates.list |
146 |
| -- compute.sslCertificates.get |
147 |
| -- compute.targetHttpsProxies.list |
148 |
| -- compute.targetHttpsProxies.setSslCertificates |
149 |
| -- compute.regionSslCertificates.list |
150 |
| - |
151 |
| -The agent supports having credentials provided by the environment, environment variable, or passed manually from Keyfactor Command. You can read more about the first two options [here] (https://cloud.google.com/docs/authentication/production#automatically). |
152 |
| - |
153 |
| -To pass credentials from Keyfactor Command you need to first create a service account and then download a service account key. Instructions are [here](https://cloud.google.com/docs/authentication/production#manually). Remember to assign the appropriate role/permissions for the service account. Afterwards inside Keyfactor Command copy and paste the contents of the service account key in the password field for the GCP Certificate Store Type. |
| 162 | +## Related Integrations |
154 | 163 |
|
| 164 | +See all [Keyfactor Universal Orchestrator extensions](https://github.com/orgs/Keyfactor/repositories?q=orchestrator). |
0 commit comments