From 824dd172408c588e544ff45db37f02cfc8640267 Mon Sep 17 00:00:00 2001 From: Joe VanWanzeele <76071503+joevanwanzeeleKF@users.noreply.github.com> Date: Wed, 21 Jun 2023 15:17:04 -0400 Subject: [PATCH 1/3] Kv sub path support (#12) * updated to support 2 store types. HCVKV and HCV. * Updated to distinguish between multiple supported store types. * updated doc to reflect multiple store type configs. * removed sensitive info from tracelog. * Removed KEY_SECRET from PutCertificate Task * Modified PutCertificate to include ---BEGIN ----END banners (for key+cert) * Allows Cert Stores to be allow a boolean value for SubfolderInventory. Allows inventory to be done on a root storepath and all of the component/subdirectories. Included documentation update to README.md * Adding InputValidation for KeyValue secrets --- .../workflows/keyfactor-starter-workflow.yml | 18 +- CHANGELOG.md | 10 + README.md | 138 +++++++--- hashicorp-vault-orchestrator.sln | 1 + hashicorp-vault-orchestrator/Constants.cs | 3 +- .../{HcvClient.cs => HcvKeyValueClient.cs} | 258 +++++++++--------- .../HcvKeyfactorClient.cs | 163 +++++++++++ hashicorp-vault-orchestrator/IHashiClient.cs | 22 ++ .../Jobs/Discovery.cs | 22 +- .../Jobs/Inventory.cs | 2 +- hashicorp-vault-orchestrator/Jobs/JobBase.cs | 51 +++- .../Jobs/Management.cs | 62 ++--- hashicorp-vault-orchestrator/manifest.json | 10 +- images/cert-store-kv.PNG | Bin 0 -> 29419 bytes images/cert-store-pki.PNG | Bin 0 -> 24062 bytes images/cert-store-type-advanced.png | Bin 0 -> 24700 bytes images/cert_store_add_dialog.png | Bin 20278 -> 22194 bytes images/store-type-kv.PNG | Bin 0 -> 30679 bytes images/store_type_fields.png | Bin 13147 -> 15612 bytes images/store_type_pki.png | Bin 0 -> 30301 bytes readme_source.md | 127 +++++++-- 21 files changed, 638 insertions(+), 249 deletions(-) create mode 100644 CHANGELOG.md rename hashicorp-vault-orchestrator/{HcvClient.cs => HcvKeyValueClient.cs} (55%) create mode 100644 hashicorp-vault-orchestrator/HcvKeyfactorClient.cs create mode 100644 hashicorp-vault-orchestrator/IHashiClient.cs create mode 100644 images/cert-store-kv.PNG create mode 100644 images/cert-store-pki.PNG create mode 100644 images/cert-store-type-advanced.png create mode 100644 images/store-type-kv.PNG create mode 100644 images/store_type_pki.png diff --git a/.github/workflows/keyfactor-starter-workflow.yml b/.github/workflows/keyfactor-starter-workflow.yml index 4c2d327..e291ab4 100644 --- a/.github/workflows/keyfactor-starter-workflow.yml +++ b/.github/workflows/keyfactor-starter-workflow.yml @@ -5,6 +5,19 @@ jobs: call-create-github-release-workflow: uses: Keyfactor/actions/.github/workflows/github-release.yml@main + get-manifest-properties: + runs-on: windows-latest + outputs: + update_catalog: ${{ steps.read-json.outputs.prop }} + steps: + - uses: actions/checkout@v3 + - name: Read json + id: read-json + shell: pwsh + run: | + $json = Get-Content integration-manifest.json | ConvertFrom-Json + echo "::set-output name=prop::$(echo $json.update_catalog)" + call-dotnet-build-and-release-workflow: needs: [call-create-github-release-workflow] uses: Keyfactor/actions/.github/workflows/dotnet-build-and-release.yml@main @@ -18,9 +31,12 @@ jobs: call-generate-readme-workflow: if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' uses: Keyfactor/actions/.github/workflows/generate-readme.yml@main + secrets: + token: ${{ secrets.APPROVE_README_PUSH }} call-update-catalog-workflow: - if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + needs: get-manifest-properties + if: needs.get-manifest-properties.outputs.update_catalog == 'True' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') uses: Keyfactor/actions/.github/workflows/update-catalog.yml@main secrets: token: ${{ secrets.SDK_SYNC_PAT }} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..5200a32 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,10 @@ +2.0.1 +* Added support for storing certs in sub-paths +* Updated documentation to specify storing the token as a secret. + +2.0 +* Added inventory job support for the Hashicorp PKI secrets engine +* Added inventory job support for the Keyfactor secrets engine +* **Breaking Change**: the cert store types are now: + * **HCVPKI** for the PKI and Keyfactor secrets engine + * **HCVKV** for the Key-Value secrets engine diff --git a/README.md b/README.md index 257cffd..04ca4a6 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ The Hashicorp Vault Orchestrator extension allows you store certificates in Hash #### Integration status: Production - Ready for use in production environments. -## About the Keyfactor Universal Orchestrator Capability +## About the Keyfactor Universal Orchestrator Extension -This repository contains a Universal Orchestrator Capability 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. +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. -The Universal Orchestrator is part of the Keyfactor software distribution and is available via the Keyfactor customer portal. For general instructions on installing Capabilities, see the “Keyfactor Command Orchestrator Installation and Configuration Guide” section of the Keyfactor documentation. For configuration details of this specific Capability, see below in this readme. +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. -The Universal Orchestrator is the successor to the Windows Orchestrator. This Capability plugin only works with the Universal Orchestrator and does not work with the Windows Orchestrator. +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. @@ -19,6 +19,7 @@ The Universal Orchestrator is the successor to the Windows Orchestrator. This Ca + ## Platform Specific Notes 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. @@ -33,58 +34,71 @@ The Keyfactor Universal Orchestrator may be installed on either Windows or Linux + + --- -This integration for the Keyfactor Universal Orchestrator has been tested against Hashicorp Vault 1.10. It utilizes the *Key/Value* secrets engine to store certificates issues via Keyfactor Command. +This integration for the Keyfactor Universal Orchestrator has been tested against Hashicorp Vault 1.10. It utilizes the **Key/Value** secrets engine to store certificates issues via Keyfactor Command. ## Use Cases -The Hashicorp Vault Orchestrator Integration implements the following capabilities: +This integration supports 3 Hashicorp Secrets Engines; PKI, Key-Value store, and the Keyfactor Hashicorp Plugin (Keyfactor Secrets Engine). + +### The Key-Value secrets engine + +The Following operations are supported by this integration **only** for the Key-Value secrets engine. 1. Discovery - Discover all sub-paths containing certificate. 1. Inventory - Return all certificates stored in a path. 1. Management (Add) - Add a certificate to a defined certificate store. 1. Management (Remove) - Remove a certificate from a defined certificate store. +### The Hashicorp PKI and Keyfactor Plugin secrets engines + +Both the Hashicorp PKI and Keyfactor plugin are designed to allow managing certifications directly on the Hashicorp Vault instance. +This integration does support the following in order to view your certificates from the platform: + +1. Inventory - Return all certificates stored in a path. + +[View the repository on Github](https://github.com/Keyfactor/hashicorp-vault-secretsengine) for more information about the Hashicorp Vault Keyfactor Secrets Engine plugin. + ## Versioning The version number of a the Hashicorp Vault Orchestrator Extension can be verified by right clicking on the `Keyfactor.Extensions.Orchestrator.HCV.dll` file in the extensions installation folder, selecting Properties, and then clicking on the Details tab. ## Keyfactor Version Supported -This integration was built on the .NET Core 3.1 target framework and are compatible for use with the Keyfactor Universal Orchestrator. +This integration was built on the .NET Core 3.1 target framework and are compatible for use with the Keyfactor Universal Orchestrator and the latest version of the Keyfactor platform. ## Security Considerations 1. It is not necessary to use the Vault root token when creating a Certificate Store for HashicorpVault. We recommend creating a token with policies that reflect the minimum permissions necessary to perform the intended operations. -1. The certificates are stored in 3 fields in the Key Value store. + +1. For the Key-Value secrets engine, the certificates are stored as an entry with 2 fields. - `PUBLIC_KEY` - The certificate public key - `PRIVATE_KEY` - The certificate private key -- `KEY_SECRET` - The certificate private key password - + +**Note**: Key/Value secrets that do not include these keys (PUBLIC_KEY, and PRIVATE_KEY), will be ignored during inventory scans. + ## Extension Configuration ### On the Orchestrator Agent Machine 1. Stop the Orchestrator service. - -- The service will be called "KeyfactorOrchestrator-Default" by default. - -1. Navigate to the "extensions" sub-folder of your Orchestrator installation directory - -- example: `C:\Program Files\Keyfactor\Keyfactor Orchestrator\extensions` - -1. Create a new folder called "HCV" (the name of the folder is not important) -1. Extract the contents of the release zip file into this folder. -1. Re-start the Orchestrator service. + - The service will be called "KeyfactorOrchestrator-Default" by default. +2. Navigate to the "extensions" sub-folder of your Orchestrator installation directory + - example: `C:\Program Files\Keyfactor\Keyfactor Orchestrator\extensions` +3. Create a new folder called "HCV" (the name of the folder is not important) +4. Extract the contents of the release zip file into this folder. +5. Re-start the Orchestrator service. ### In the Keyfactor Platform -1. Add a new Certificate Store Type +#### Add a new Certificate Store Type - **Key-Value Secrets Engine** - Log into Keyfactor as Administrator or a user with permissions to add certificate store types. - Click on the gear icon in the top right and then navigate to the "Certificate Store Types" @@ -93,33 +107,38 @@ This integration was built on the .NET Core 3.1 target framework and are compati ![](images/store_type_add.png) - Set the following values in the "Basic" tab: - - **Name** - "Hashicorp Vault" (or another preferred name) - - **Short Name** - "HCV" + - **Name:** "Hashicorp Vault Key-Value" (or another preferred name) + - **Short Name:** "HCVKV" - **Supported Job Types** - "Inventory", "Add", "Remove", "Discovery" + +![](images/store-type-kv.PNG) + +- Set the following values on the "Advanced" tab: - **Supports Custom Alias** - "Optional" - **Private Key Handling** - "Optional" -![](images/store_type_1.png) +![](images/cert-store-type-advanced.png) - Click the "Custom Fields" tab to add the following custom fields: - **MountPoint** - type: *string* - **VaultServerUrl** - type: *string*, *required* - - **VaultToken** - type: *string*, *required* + - **VaultToken** - type: *secret*, *required* + - **SubfolderInventory** - type: *bool* (By default, this is set to false. Not a required field) ![](images/store_type_fields.png) - Click **Save** to save the new Store Type. -1. Add the Hashicorp Vault Certificate Store +#### Add the Hashicorp Vault Certificate Store - **Key-Value Secrets Engine** - Navigate to **Locations** > **Certificate Stores** from the main menu - Click **ADD** to open the new Certificate Store Dialog -![](images/cert_store_add_dialog.png) +![](images/cert_store_add_dialog.png) -In Keyfactor Command create a new Certificate Store Type similar to the one below: +In Keyfactor Command create a new Certificate Store that resembles the one below: -![](images/cert_store_fields.png) +![](images/cert_store_fields.png) - **Client Machine** - Enter the URL for the Vault host machine - **Store Path** - This is the path after mount point where the certs will be stored. @@ -128,11 +147,65 @@ In Keyfactor Command create a new Certificate Store Type similar to the one belo - If left blank, will default to "kv-v2". - **Vault Token** - This is the access token that will be used by the orchestrator for requests to Vault. - **Vault Server Url** - the full url and port of the Vault server instance +- **Subfolder Inventory** - Set to 'True' if it is a requirement to inventory secrets at the subfolder/component level. The default, 'False' will inventory secrets stored at the root of the "Store Path", but will not look at secrets in subfolders. **Note** that there is a limit on the number of certificates that can be in a certificate store. In certain environments enabling Subfolder Inventory may exceed this limit and cause inventory job failure. Inventory job results are currently submitted to the Command platform as a single HTTP POST. There is not a specific limit on the number of certificates in a store, rather the limit is based on the size of the actual certificates and the HTTP POST size limit configured on the Command web server. + +### For the Keyfactor and PKI plugins + +- Add a new Certificate Store Type + - Log into Keyfactor as Administrator or a user with permissions to add certificate store types. + - Click on the gear icon in the top right and then navigate to the "Certificate Store Types" + - Click "Add" and enter the following information on the first tab: + +![](images/store_type_add.png) + +- **Name:** "Hashicorp Vault PKI" (or another preferred name) +- **Short Name:** "HCVPKI" +- **Supported Job Types:** "Inventory" + +![](images/store_type_pki.PNG) + +- Set the following values on the "Advanced" tab: + - **Supports Custom Alias** - "Optional" + - **Private Key Handling** - "Optional" + +![](images/cert-store-type-advanced.png) + +- Click the "Custom Fields" tab to add the following custom fields: + - **MountPoint** - type: *string* + - **VaultServerUrl** - type: *string*, *required* + - **VaultToken** - type: *secret*, *required* + +![](images/store_type_fields.png) + +- Click **Save** to save the new Store Type. + +1. Add the Hashicorp Vault Certificate Store + +- Navigate to **Locations** > **Certificate Stores** from the main menu +- Click **ADD** to open the new Certificate Store Dialog + +In Keyfactor Command create a new Certificate Store similar to the one below: + +![](images/store_type_pki.png) + +- **Client Machine** - Enter the URL for the Vault host machine +- **Store Path** - "/" +- **Mount Point** - This is the mount point name for the instance of the PKI or Keyfactor secrets engine plugin. + - If using the PKI plugin, the default in Hashicorp is pki. If using the Keyfactor plugin, it should correspond to the mount point given when the plugin was enabled. + - It is possible to have multiple instances of the Keyfactor plugin running simultaneously, so be sure this corresponds to the one you would like to manage. + +- **Vault Token** - This is the access token that will be used by the orchestrator for requests to Vault. +- **Vault Server Url** - the full url and port of the Vault server instance + +At this point, the certificate store should be created and ready to peform inventory on your certificates stored via the Keyfactor or PKI secrets engine plugin for Hashicorp Vault. -## Testing +## Testing the Key-Value store ### PFX Enrollment into Vault +**Note** +Enrollment via the platform is only supported by the Key-Value store type + At this point you should be able to enroll a certificate and store it in Vault using the plugin. 1. Navigate to `Enrollment > PFX Enrollment` from the main menu. @@ -153,7 +226,7 @@ At this point you should be able to enroll a certificate and store it in Vault u - Make sure the vault is unsealed first -1. Type `vault kv list kv/cert-store` (where "kv/cert-store" is /) +1. Type `vault kv list kv/cert-store` (where "kv/cert-store" is `/`) - You should see the alias of the newly enrolled certificate @@ -168,6 +241,5 @@ At this point you should be able to enroll a certificate and store it in Vault u ## Notes / Future Enhancements -- Currently we only operate on a single version of the Key Value secret (no versioning capabilities through the Orchesterator Extension / Keyfactor). -- Creating a new certificate store is done implicitly by adding a **store path** value that doesn't currently exist. +- For the Key-Value stores we operate on a single version of the Key Value secret (no versioning capabilities through the Orchesterator Extension / Keyfactor). diff --git a/hashicorp-vault-orchestrator.sln b/hashicorp-vault-orchestrator.sln index a46e58b..af7d618 100644 --- a/hashicorp-vault-orchestrator.sln +++ b/hashicorp-vault-orchestrator.sln @@ -7,6 +7,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "hashicorp-vault-orchestrato EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{83623EBF-AC4C-4158-922D-959AEFC75453}" ProjectSection(SolutionItems) = preProject + CHANGELOG.md = CHANGELOG.md integration-manifest.json = integration-manifest.json LICENSE = LICENSE README.md = README.md diff --git a/hashicorp-vault-orchestrator/Constants.cs b/hashicorp-vault-orchestrator/Constants.cs index 9fe095e..da037a4 100644 --- a/hashicorp-vault-orchestrator/Constants.cs +++ b/hashicorp-vault-orchestrator/Constants.cs @@ -9,7 +9,8 @@ namespace Keyfactor.Extensions.Orchestrator.HashicorpVault { static class AzureKeyVaultConstants { - public const string STORE_TYPE_NAME = "HCV"; + public const string KEY_VALUE_STORE_TYPE = "HCVKV"; + public const string PKI_STORE_TYPE = "HCV"; //same for Keyfactor plugin store type } static class JobTypes diff --git a/hashicorp-vault-orchestrator/HcvClient.cs b/hashicorp-vault-orchestrator/HcvKeyValueClient.cs similarity index 55% rename from hashicorp-vault-orchestrator/HcvClient.cs rename to hashicorp-vault-orchestrator/HcvKeyValueClient.cs index 5bf6e2c..131f46d 100644 --- a/hashicorp-vault-orchestrator/HcvClient.cs +++ b/hashicorp-vault-orchestrator/HcvKeyValueClient.cs @@ -25,58 +25,86 @@ namespace Keyfactor.Extensions.Orchestrator.HashicorpVault { - public class HcvClient + public class HcvKeyValueClient : IHashiClient { private IVaultClient _vaultClient { get; set; } protected IVaultClient VaultClient => _vaultClient; - private ILogger logger = LogHandler.GetClassLogger(); + private ILogger logger = LogHandler.GetClassLogger(); private string _storePath { get; set; } + private string _mountPoint { get; set; } + private bool _subfolderInventory { get; set; } - private VaultClientSettings clientSettings { get; set; } + //private VaultClientSettings clientSettings { get; set; } - private static readonly string privKeyStart = "-----BEGIN RSA PRIVATE KEY-----\n"; - private static readonly string privKeyEnd = "\n-----END RSA PRIVATE KEY-----"; - - public HcvClient(string vaultToken, string serverUrl) + public HcvKeyValueClient(string vaultToken, string serverUrl, string mountPoint, string storePath,bool SubfolderInventory = false) { // Initialize one of the several auth methods. IAuthMethodInfo authMethod = new TokenAuthMethodInfo(vaultToken); // Initialize settings. You can also set proxies, custom delegates etc. here. - clientSettings = new VaultClientSettings(serverUrl, authMethod); - + var clientSettings = new VaultClientSettings(serverUrl, authMethod); + _mountPoint = mountPoint; + _storePath = !string.IsNullOrEmpty(storePath) ? "/" + storePath : storePath; _vaultClient = new VaultClient(clientSettings); + _subfolderInventory = SubfolderInventory; } + public async Task> ListComponentPathsAsync(string storagePath) + { + VaultClient.V1.Auth.ResetVaultToken(); + List componentPaths = new List {}; + try + { + Secret listInfo = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(storagePath, _mountPoint)); - public async Task GetCertificate(string key, string storePath, string mountPoint = null) + foreach (var path in listInfo.Data.Keys) + { + if (!path.EndsWith("/")) + { + continue; + } + + string fullPath = $"{storagePath}{path}"; + componentPaths.Add(fullPath); + + List subPaths = await ListComponentPathsAsync(fullPath); + componentPaths.AddRange(subPaths); + } + } + catch (Exception ex) + { + logger.LogWarning($"Error while listing component paths: {ex}"); + } + return componentPaths; + } + public async Task GetCertificate(string key) { VaultClient.V1.Auth.ResetVaultToken(); Dictionary certData; Secret res; - - storePath = !string.IsNullOrEmpty(storePath) ? "/" + storePath : storePath; //add the slash back in. + var fullPath = _storePath + key; + var relativePath = fullPath.Substring(_storePath.Length); try { - var fullPath = storePath + "/" + key; + try { - if (mountPoint == null) + if (_mountPoint == null) { res = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync(fullPath)); } else { - res = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync(fullPath, mountPoint: mountPoint)); + res = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretAsync(fullPath, mountPoint: _mountPoint)); } } catch (Exception ex) { - logger.LogWarning("Error getting certificate (deleted?)", ex); + logger.LogWarning($"Error getting certificate (deleted?) {fullPath}", ex); return null; } @@ -90,8 +118,27 @@ public async Task GetCertificate(string key, string storeP try { - string publicKey = certData["PUBLIC_KEY"]?.ToString() ?? null; - bool hasPrivateKey = certData["PRIVATE_KEY"] != null; + string publicKey; + bool hasPrivateKey; + + //Validates if the "PUBLIC_KEY" and "PRIVATE_KEY" keys exist in certData + if (certData.TryGetValue("PUBLIC_KEY", out object publicKeyObj)) + { + publicKey = publicKeyObj?.ToString(); + } + else + { + publicKey = null; + } + + if (certData.TryGetValue("PRIVATE_KEY", out object privateKeyObj)) + { + hasPrivateKey = true; + } + else + { + hasPrivateKey = false; + } var certs = new List() { publicKey }; @@ -101,7 +148,7 @@ public async Task GetCertificate(string key, string storeP return new CurrentInventoryItem() { - Alias = key, + Alias = relativePath, PrivateKeyEntry = hasPrivateKey, ItemStatus = OrchestratorInventoryItemStatus.Unknown, UseChainLevel = true, @@ -115,7 +162,7 @@ public async Task GetCertificate(string key, string storeP } } - public async Task> GetVaults(string storePath, string mountPoint = null) + public async Task> GetVaults() { VaultClient.V1.Auth.ResetVaultToken(); @@ -123,13 +170,13 @@ public async Task> GetVaults(string storePath, string mountP try { - if (mountPoint == null) + if (_mountPoint == null) { - vaults = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(storePath)).Data.Keys.ToList(); + vaults = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(_storePath)).Data.Keys.ToList(); } else { - vaults = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(storePath, mountPoint)).Data.Keys.ToList(); + vaults = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(_storePath, _mountPoint)).Data.Keys.ToList(); } } @@ -141,12 +188,12 @@ public async Task> GetVaults(string storePath, string mountP return vaults; } - public async Task PutCertificate(string certName, string contents, string pfxPassword, string storePath, string mountPoint = null) + public async Task PutCertificate(string certName, string contents, string pfxPassword) { VaultClient.V1.Auth.ResetVaultToken(); var certDict = new Dictionary(); - + var pfxBytes = Convert.FromBase64String(contents); Pkcs12Store p; using (var pfxBytesMemoryStream = new MemoryStream(pfxBytes)) @@ -154,7 +201,7 @@ public async Task PutCertificate(string certName, string contents, string pfxPas p = new Pkcs12Store(pfxBytesMemoryStream, pfxPassword.ToCharArray()); } - + // Extract private key string alias; string privateKeyString; @@ -170,18 +217,19 @@ public async Task PutCertificate(string certName, string contents, string pfxPas var publicKey = p.GetCertificate(alias).Certificate.GetPublicKey(); logger.LogTrace($"publicKey = {publicKey}"); var KeyEntry = p.GetKey(alias); - logger.LogTrace($"KeyEntry = {KeyEntry}"); + // logger.LogTrace($"KeyEntry = {KeyEntry}"); if (KeyEntry == null) throw new Exception("Unable to retrieve private key"); var privateKey = KeyEntry.Key; - logger.LogTrace($"privateKey = {privateKey}"); + // logger.LogTrace($"privateKey = {privateKey}"); var keyPair = new AsymmetricCipherKeyPair(publicKey, privateKey); pemWriter.WriteObject(keyPair.Private); streamWriter.Flush(); privateKeyString = Encoding.ASCII.GetString(memoryStream.GetBuffer()).Trim() .Replace("\r", "").Replace("\0", ""); - logger.LogTrace($"Got Private Key String {privateKeyString}"); + // logger.LogTrace($"Got Private Key String {privateKeyString}"); + logger.LogTrace($"Got Private Key String"); memoryStream.Close(); streamWriter.Close(); logger.LogTrace("Finished Extracting Private Key..."); @@ -191,10 +239,8 @@ public async Task PutCertificate(string certName, string contents, string pfxPas try { - privateKeyString = privateKeyString.Replace(privKeyStart, "").Replace(privKeyEnd, ""); certDict.Add("PRIVATE_KEY", privateKeyString); certDict.Add("PUBLIC_KEY", pubCertPem); - certDict.Add("KEY_SECRET", pfxPassword); } catch (Exception ex) { @@ -202,17 +248,16 @@ public async Task PutCertificate(string certName, string contents, string pfxPas throw; } try - { - storePath = !string.IsNullOrEmpty(storePath) ? "/" + storePath : storePath; //add the slash back in. - var fullPath = storePath + "/" + certName; + { + var fullPath = _storePath + certName; - if (mountPoint == null) + if (_mountPoint == null) { await VaultClient.V1.Secrets.KeyValue.V2.WriteSecretAsync(fullPath, certDict); } else { - await VaultClient.V1.Secrets.KeyValue.V2.WriteSecretAsync(fullPath, certDict, mountPoint: mountPoint); + await VaultClient.V1.Secrets.KeyValue.V2.WriteSecretAsync(fullPath, certDict, mountPoint: _mountPoint); } } catch (Exception ex) @@ -222,22 +267,21 @@ public async Task PutCertificate(string certName, string contents, string pfxPas } } - public async Task DeleteCertificate(string certName, string storePath, string mountPoint = null) + public async Task DeleteCertificate(string certName) { VaultClient.V1.Auth.ResetVaultToken(); try { - storePath = !string.IsNullOrEmpty(storePath) ? "/" + storePath : storePath; //add the slash back in. - var fullPath = storePath + "/" + certName; + var fullPath = _storePath + certName; - if (mountPoint == null) + if (_mountPoint == null) { await VaultClient.V1.Secrets.KeyValue.V2.DeleteSecretAsync(fullPath); } else { - await VaultClient.V1.Secrets.KeyValue.V2.DeleteSecretAsync(fullPath, mountPoint); + await VaultClient.V1.Secrets.KeyValue.V2.DeleteSecretAsync(fullPath, _mountPoint); } } catch (Exception ex) @@ -248,105 +292,63 @@ public async Task DeleteCertificate(string certName, string storePath, str return true; } - public async Task> GetCertificates(string storePath, string mountPoint = null) + public async Task> GetCertificates() { VaultClient.V1.Auth.ResetVaultToken(); - storePath = !string.IsNullOrEmpty(storePath) ? "/" + storePath : storePath; //add the slash back in. - + _storePath = _storePath.TrimStart('/'); + List subPaths = new List(); + //Grabs the list of subpaths to get certificates from, if SubFolder Inventory is turned on. + //Otherwise just define the single path _storePath + if (_subfolderInventory == true) + { + subPaths = (await ListComponentPathsAsync(_storePath)); + subPaths.Add(_storePath); + } + else + { + subPaths.Add(_storePath); + } var certs = new List(); var certNames = new List(); - try + logger.LogDebug($"SubInventoryEnabled: {_subfolderInventory}"); + foreach (var path in subPaths) { - if (string.IsNullOrEmpty(mountPoint)) + var relative_path = path.Substring(_storePath.Length); + try { - certNames = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(storePath)).Data.Keys.ToList(); + + if (string.IsNullOrEmpty(_mountPoint)) + { + certNames = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(path)).Data.Keys.ToList(); + } + else + { + certNames = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(path, mountPoint: _mountPoint)).Data.Keys.ToList(); + } + + certNames.ForEach(k => + { + var cert = GetCertificate($"{relative_path}{k}").Result; + if (cert != null) certs.Add(cert); + }); } - else + catch (Exception ex) { - certNames = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(storePath, mountPoint)).Data.Keys.ToList(); + logger.LogError(ex.Message); + throw ex; } - - certNames.ForEach(k => - { - var cert = GetCertificate(k, storePath, mountPoint).Result; - if (cert != null) certs.Add(cert); - }); } - catch (Exception ex) - { - logger.LogError(ex.Message); - } - return certs; } + private static Func Pemify = base64Cert => + { + string FormatBase64(string ss) => + ss.Length <= 64 ? ss : ss.Substring(0, 64) + "\n" + FormatBase64(ss.Substring(64)); - private static Func Pemify = ss => - ss.Length <= 64 ? ss : ss.Substring(0, 64) + "\n" + Pemify(ss.Substring(64)); - - //private string GetCertPem(string alias, string contents, string password, ref string privateKeyString) - //{ - // logger.MethodEntry(LogLevel.Debug); - // logger.LogTrace($"alias {alias} privateKeyString {privateKeyString}"); - // string certPem = null; - // try - // { - // if (!string.IsNullOrEmpty(password)) - // { - // logger.LogTrace($"Certificate and Key exist for {alias}"); - // var certData = Convert.FromBase64String(contents); - - // var ms = new MemoryStream(certData); - // Pkcs12Store store = new Pkcs12Store(ms, - // password.ToCharArray()); - - - // string storeAlias; - // TextWriter streamWriter; - // using (var memoryStream = new MemoryStream()) - // { - // streamWriter = new StreamWriter(memoryStream); - // var pemWriter = new PemWriter(streamWriter); - - // storeAlias = store.Aliases.Cast().SingleOrDefault(a => store.IsKeyEntry(a)); - // var publicKey = store.GetCertificate(storeAlias).Certificate.GetPublicKey(); - // var privateKey = store.GetKey(storeAlias).Key; - // var keyPair = new AsymmetricCipherKeyPair(publicKey, privateKey); - - // var pkStart = "-----BEGIN RSA PRIVATE KEY-----\n"; - // var pkEnd = "\n-----END RSA PRIVATE KEY-----"; - - - // pemWriter.WriteObject(keyPair.Private); - // streamWriter.Flush(); - // privateKeyString = Encoding.ASCII.GetString(memoryStream.GetBuffer()).Trim() - // .Replace("\r", "") - // .Replace("\0", ""); - // privateKeyString = privateKeyString.Replace(pkStart, "").Replace(pkEnd, ""); - - // memoryStream.Close(); - // } - - // streamWriter.Close(); - - // // Extract server certificate - // certPem = Pemify( - // Convert.ToBase64String(store.GetCertificate(storeAlias).Certificate.GetEncoded())); - // } - // else - // { - // logger.LogTrace($"Certificate ONLY for {alias}"); - // certPem = Pemify(contents); - // } - // } - // catch (Exception ex) - // { - // logger.LogError($"Error Generating PEM: Error {LogHandler.FlattenException(ex)}"); - // } - - // logger.LogTrace($"PEM {certPem}"); - // logger.MethodEntry(LogLevel.Debug); - // return certPem; - //} + string header = "-----BEGIN CERTIFICATE-----\n"; + string footer = "\n-----END CERTIFICATE-----"; + return header + FormatBase64(base64Cert) + footer; + }; } -} +} \ No newline at end of file diff --git a/hashicorp-vault-orchestrator/HcvKeyfactorClient.cs b/hashicorp-vault-orchestrator/HcvKeyfactorClient.cs new file mode 100644 index 0000000..4d2f2b7 --- /dev/null +++ b/hashicorp-vault-orchestrator/HcvKeyfactorClient.cs @@ -0,0 +1,163 @@ +// Copyright 2022 Keyfactor +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions +// and limitations under the License. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Threading.Tasks; +using Keyfactor.Logging; +using Keyfactor.Orchestrators.Common.Enums; +using Keyfactor.Orchestrators.Extensions; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; + +namespace Keyfactor.Extensions.Orchestrator.HashicorpVault +{ + public class HcvKeyfactorClient : IHashiClient + { + //private IVaultClient _vaultClient { get; set; } + + private ILogger logger = LogHandler.GetClassLogger(); + + private string _vaultUrl { get; set; } + + private string _vaultToken { get; set; } + + private string _mountPoint { get; set; } + + private string _storePath { get; set; } + + public HcvKeyfactorClient(string vaultToken, string serverUrl, string mountPoint, string storePath) + { + _vaultToken = vaultToken; + _mountPoint = mountPoint ?? "keyfactor"; + _storePath = !string.IsNullOrEmpty(storePath) ? "/" + storePath : storePath; + _vaultUrl = $"{ serverUrl }/v1/{ _mountPoint.Replace("/", string.Empty) }"; + } + + public async Task GetCertificate(string key) + { + var fullPath = $"{ _vaultUrl }/cert/{ key }"; + + try + { + try + { + var req = WebRequest.Create(fullPath); + req.Headers.Add("X-Vault-Request", "true"); + req.Headers.Add("X-Vault-Token", _vaultToken); + req.Method = WebRequestMethods.Http.Get; + var res = await req.GetResponseAsync(); + CertResponse content = JsonConvert.DeserializeObject(new StreamReader(res.GetResponseStream()).ReadToEnd()); + string cert; + content.data.TryGetValue("certificate", out cert); + + string issuingCA; + content.data.TryGetValue("issuing_ca", out issuingCA); + + string privateKey; + content.data.TryGetValue("private_key", out privateKey); + + string revokeTime; + content.data.TryGetValue("revocation_time", out revokeTime); + + if (revokeTime.Equals(0)) + { + var inventoryItem = new CurrentInventoryItem() + { + Alias = key, + Certificates = new string[] { cert }, + ItemStatus = OrchestratorInventoryItemStatus.Unknown, + PrivateKeyEntry = !string.IsNullOrEmpty(privateKey), + UseChainLevel = !string.IsNullOrEmpty(issuingCA), + }; + return inventoryItem; + } + return null; + } + catch (Exception ex) + { + logger.LogWarning("Error getting certificate (deleted?)", ex); + return null; + } + } + catch (Exception ex) + { + logger.LogError("Error getting certificate from Vault", ex); + throw; + } + } + + public async Task> GetCertificates() + { + var getKeysPath = $"{ _vaultUrl }/certs?list=true"; + var certs = new List(); + var certNames = new List(); + + try + { + var req = WebRequest.Create(getKeysPath); + req.Headers.Add("X-Vault-Request", "true"); + req.Headers.Add("X-Vault-Token", _vaultToken); + req.Method = WebRequestMethods.Http.Get; + var res = await req.GetResponseAsync(); + var content = JsonConvert.DeserializeObject(new StreamReader(res.GetResponseStream()).ReadToEnd()); + string[] certKeys; + + content.data.TryGetValue("keys", out certKeys); + + certKeys.ToList().ForEach(k => + { + var cert = GetCertificate(k).Result; + if (cert != null) certs.Add(cert); + }); + } + catch (Exception ex) + { + logger.LogError(ex.Message); + } + return certs; + } + + public Task> GetVaults() + { + throw new NotSupportedException(); + } + + public Task PutCertificate(string certName, string contents, string pfxPassword) + { + throw new NotSupportedException(); + } + + public Task DeleteCertificate(string certName) + { + throw new NotSupportedException(); + } + + public class HashiResponse + { + public string request_id { get; set; } + public bool renewable { get; set; } + public int lease_duration { get; set; } + public string wrap_info { get; set; } + public string warnings { get; set; } + public string auth { get; set; } + } + + public class CertResponse : HashiResponse + { + public Dictionary data { get; set; } + } + + public class ListResponse : HashiResponse + { + public Dictionary data { get; set; } + } + } +} \ No newline at end of file diff --git a/hashicorp-vault-orchestrator/IHashiClient.cs b/hashicorp-vault-orchestrator/IHashiClient.cs new file mode 100644 index 0000000..fbee83e --- /dev/null +++ b/hashicorp-vault-orchestrator/IHashiClient.cs @@ -0,0 +1,22 @@ +// Copyright 2023 Keyfactor +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions +// and limitations under the License. + +using System.Collections.Generic; +using System.Threading.Tasks; +using Keyfactor.Orchestrators.Extensions; + +namespace Keyfactor.Extensions.Orchestrator.HashicorpVault +{ + public interface IHashiClient + { + Task> GetCertificates(); + Task GetCertificate(string key); + Task> GetVaults(); + Task PutCertificate(string certName, string contents, string pfxPassword); + Task DeleteCertificate(string certName); + } +} diff --git a/hashicorp-vault-orchestrator/Jobs/Discovery.cs b/hashicorp-vault-orchestrator/Jobs/Discovery.cs index 3dee838..fb40c41 100644 --- a/hashicorp-vault-orchestrator/Jobs/Discovery.cs +++ b/hashicorp-vault-orchestrator/Jobs/Discovery.cs @@ -27,19 +27,27 @@ public JobResult ProcessJob(DiscoveryJobConfiguration config, SubmitDiscoveryUpd try { - vaults = VaultClient.GetVaults(StorePath, MountPoint).Result.ToList(); - + vaults = VaultClient.GetVaults().Result.ToList(); } catch (Exception ex) { - logger.LogError(ex.Message); - - return new JobResult + var result = new JobResult { Result = OrchestratorJobStatusJobResult.Failure, - JobHistoryId = config.JobHistoryId, - FailureMessage = ex.Message + JobHistoryId = config.JobHistoryId }; + + if (ex.GetType() == typeof(NotSupportedException)) + { + logger.LogError("Attempt to perform discovery on unsupported Secrets Engine backend."); + + result.FailureMessage = $"{SecretsEngine} does not support Discovery jobs."; + } + else + { + result.FailureMessage = ex.Message; + } + return result; } submitDiscoveryUpdate.DynamicInvoke(vaults); diff --git a/hashicorp-vault-orchestrator/Jobs/Inventory.cs b/hashicorp-vault-orchestrator/Jobs/Inventory.cs index a331bd2..6232be6 100644 --- a/hashicorp-vault-orchestrator/Jobs/Inventory.cs +++ b/hashicorp-vault-orchestrator/Jobs/Inventory.cs @@ -26,7 +26,7 @@ public JobResult ProcessJob(InventoryJobConfiguration config, SubmitInventoryUpd IEnumerable certs = null; try { - certs = VaultClient.GetCertificates(StorePath, MountPoint).Result; + certs = VaultClient.GetCertificates().Result; } catch (Exception ex) { diff --git a/hashicorp-vault-orchestrator/Jobs/JobBase.cs b/hashicorp-vault-orchestrator/Jobs/JobBase.cs index dc0cc0b..a3345b8 100644 --- a/hashicorp-vault-orchestrator/Jobs/JobBase.cs +++ b/hashicorp-vault-orchestrator/Jobs/JobBase.cs @@ -18,44 +18,79 @@ public abstract class JobBase public string VaultToken { get; set; } + public string SecretsEngine { get; set; } // "PKI", "Keyfactor", "Key Value" + public string VaultServerUrl { get; set; } + + public bool SubfolderInventory { get; set; } public string MountPoint { get; set; } // the mount point of the KV secrets engine. defaults to KV - internal protected HcvClient VaultClient { get; set; } + public string RoleName { get; set; } + + internal protected IHashiClient VaultClient { get; set; } + const string KEY_VALUE_ENGINE = "KV"; + const string KEYFACTOR_ENGINE = "Keyfactor"; + const string PKI_ENGINE = "Hashicorp PKI"; public void InitializeStore(InventoryJobConfiguration config) { var props = JsonConvert.DeserializeObject(config.CertificateStoreDetails.Properties); //var props = Jsonconfig.CertificateStoreDetails.Properties; - InitProps(props); StorePath = config.CertificateStoreDetails?.StorePath ?? null; + StorePath = StorePath.TrimStart('/'); + StorePath = StorePath.TrimEnd('/'); + StorePath = StorePath == null ? null : StorePath + "/"; //enforce single trailing slash for path + + InitProps(props, config.Capability); } public void InitializeStore(DiscoveryJobConfiguration config) { var props = config.JobProperties; - InitProps(props); + InitProps(props, config.Capability); } public void InitializeStore(ManagementJobConfiguration config) { var props = JsonConvert.DeserializeObject(config.CertificateStoreDetails.Properties); - InitProps(props); StorePath = config.CertificateStoreDetails?.StorePath ?? null; - StorePath = StorePath.Replace("/", string.Empty); + StorePath = StorePath.TrimStart('/'); + StorePath = StorePath.TrimEnd('/'); + StorePath = StorePath == null ? null : StorePath + "/"; //enforce single trailing slash for path + InitProps(props, config.Capability); } - private void InitProps(dynamic props) { + private void InitProps(dynamic props, string capability) + { if (props == null) throw new System.Exception("Properties is null", props); VaultToken = props["VaultToken"]; VaultServerUrl = props["VaultServerUrl"]; + SecretsEngine = props["SecretsEngine"]; MountPoint = props["MountPoint"] ?? null; + if (props["SubfolderInventory"] == null) + { + SubfolderInventory = false; + } + else + { + SubfolderInventory = props["SubfolderInventory"]; + } + + var isPki = capability.Contains("HCVPKI"); + + if (!isPki) + { + VaultClient = new HcvKeyValueClient(VaultToken, VaultServerUrl, MountPoint, StorePath, SubfolderInventory); + } + else + { + VaultClient = new HcvKeyfactorClient(VaultToken, VaultServerUrl, MountPoint, StorePath); + } - VaultClient = new HcvClient(VaultToken, VaultServerUrl); } } -} +} \ No newline at end of file diff --git a/hashicorp-vault-orchestrator/Jobs/Management.cs b/hashicorp-vault-orchestrator/Jobs/Management.cs index 5dd0c12..90e4bd8 100644 --- a/hashicorp-vault-orchestrator/Jobs/Management.cs +++ b/hashicorp-vault-orchestrator/Jobs/Management.cs @@ -29,10 +29,6 @@ public JobResult ProcessJob(ManagementJobConfiguration config) switch (config.OperationType) { - //case CertStoreOperationType.Create: - // logger.LogDebug($"Begin Management > Create..."); - // complete = PerformCreateVault(config.JobHistoryId).Result; - // break; case CertStoreOperationType.Add: logger.LogDebug($"Begin Management > Add..."); complete = PerformAddition(config.JobCertificate.Alias, config.JobCertificate.PrivateKeyPassword, config.JobCertificate.Contents, config.JobHistoryId); @@ -46,32 +42,6 @@ public JobResult ProcessJob(ManagementJobConfiguration config) return complete; } - //protected async Task PerformCreateVault(long jobHistoryId) - //{ - // var jobResult = new JobResult() { JobHistoryId = jobHistoryId, Result = OrchestratorJobStatusJobResult.Failure }; - // bool createVaultResult; - // try - // { - // createVaultResult = await VaultClient.CreateStore(StorePath, MountPoint); - // } - // catch (Exception ex) - // { - // jobResult.FailureMessage = ex.Message; - // return jobResult; - // } - - // if (createVaultResult) - // { - // jobResult.Result = OrchestratorJobStatusJobResult.Success; - // } - // else - // { - // jobResult.FailureMessage = "The creation of the Azure Key Vault failed for an unknown reason. Check your job parameters and ensure permissions are correct."; - // } - - // return jobResult; - //} - protected virtual JobResult PerformAddition(string alias, string pfxPassword, string entryContents, long jobHistoryId) { var complete = new JobResult() { Result = OrchestratorJobStatusJobResult.Failure, JobHistoryId = jobHistoryId }; @@ -87,15 +57,23 @@ protected virtual JobResult PerformAddition(string alias, string pfxPassword, st try { // uploadCollection is either not null or an exception was thrown. - var cert = VaultClient.PutCertificate(alias, entryContents, pfxPassword, StorePath, MountPoint); + var cert = VaultClient.PutCertificate(alias, entryContents, pfxPassword); complete.Result = OrchestratorJobStatusJobResult.Success; } catch (Exception ex) { - complete.FailureMessage = $"An error occured while adding {alias} to {ExtensionName}: " + ex.Message; - - if (ex.InnerException != null) - complete.FailureMessage += " - " + ex.InnerException.Message; + if (ex.GetType() == typeof(NotSupportedException)) + { + logger.LogError("Attempt to Add Certificate on unsupported Secrets Engine backend."); + complete.FailureMessage = $"{SecretsEngine} does not support adding certificates via the Orchestrator."; + } + else + { + complete.FailureMessage = $"An error occured while adding {alias} to {ExtensionName}: " + ex.Message; + + if (ex.InnerException != null) + complete.FailureMessage += " - " + ex.InnerException.Message; + } } } @@ -119,7 +97,7 @@ protected virtual JobResult PerformRemoval(string alias, long jobHistoryId) try { - var success = VaultClient.DeleteCertificate(alias, StorePath, MountPoint).Result; + var success = VaultClient.DeleteCertificate(alias).Result; if (!success) { @@ -133,8 +111,16 @@ protected virtual JobResult PerformRemoval(string alias, long jobHistoryId) catch (Exception ex) { - logger.LogError("Error deleting cert from Vault", ex); - complete.FailureMessage = $"An error occured while removing {alias} from {ExtensionName}: " + ex.Message; + if (ex.GetType() == typeof(NotSupportedException)) + { + logger.LogError("Attempt to Delete Certificate on unsupported Secrets Engine backend."); + complete.FailureMessage = $"{SecretsEngine} does not support removing certificates via the Orchestrator."; + } + else + { + logger.LogError("Error deleting cert from Vault", ex); + complete.FailureMessage = $"An error occured while removing {alias} from {ExtensionName}: " + ex.Message; + } } return complete; } diff --git a/hashicorp-vault-orchestrator/manifest.json b/hashicorp-vault-orchestrator/manifest.json index 837162f..559c5a3 100644 --- a/hashicorp-vault-orchestrator/manifest.json +++ b/hashicorp-vault-orchestrator/manifest.json @@ -1,17 +1,21 @@ { "extensions": { "Keyfactor.Orchestrators.Extensions.IOrchestratorJobExtension": { - "CertStores.HCV.Inventory": { + "CertStores.HCVKV.Inventory": { "assemblypath": "Keyfactor.Extensions.Orchestrator.HCV.dll", "TypeFullName": "Keyfactor.Extensions.Orchestrator.HashicorpVault.Jobs.Inventory" }, - "CertStores.HCV.Discovery": { + "CertStores.HCVKV.Discovery": { "assemblypath": "Keyfactor.Extensions.Orchestrator.HCV.dll", "TypeFullName": "Keyfactor.Extensions.Orchestrator.HashicorpVault.Jobs.Discovery" }, - "CertStores.HCV.Management": { + "CertStores.HCVKV.Management": { "assemblypath": "Keyfactor.Extensions.Orchestrator.HCV.dll", "TypeFullName": "Keyfactor.Extensions.Orchestrator.HashicorpVault.Jobs.Management" + }, + "CertStores.HCVPKI.Inventory": { + "assemblypath": "Keyfactor.Extensions.Orchestrator.HCV.dll", + "TypeFullName": "Keyfactor.Extensions.Orchestrator.HashicorpVault.Jobs.Inventory" } } } diff --git a/images/cert-store-kv.PNG b/images/cert-store-kv.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e88e2d9a43a5da5b0a543a8647f984485c10b83e GIT binary patch literal 29419 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

h_D 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 literal 0 HcmV?d00001 diff --git a/images/cert-store-pki.PNG b/images/cert-store-pki.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c6f70758a891dca483f4d96e8b5e2a2bb6ae6a86 GIT binary patch literal 24062 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 RBFLYie)8~fFWDX#^EVcQx)%Td literal 20278 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

=+I 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℘tqF4M)#S(5UF=d-;m006*BNL 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 P#N1Jq*N}tBdwaUB&r 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 -This integration for the Keyfactor Universal Orchestrator has been tested against Hashicorp Vault 1.10. It utilizes the *Key/Value* secrets engine to store certificates issues via Keyfactor Command. +This integration for the Keyfactor Universal Orchestrator has been tested against Hashicorp Vault 1.10. It utilizes the **Key/Value** secrets engine to store certificates issues via Keyfactor Command. ## Use Cases -The Hashicorp Vault Orchestrator Integration implements the following capabilities: +This integration supports 3 Hashicorp Secrets Engines; PKI, Key-Value store, and the Keyfactor Hashicorp Plugin (Keyfactor Secrets Engine). + +### The Key-Value secrets engine + +The Following operations are supported by this integration **only** for the Key-Value secrets engine. 1. Discovery - Discover all sub-paths containing certificate. 1. Inventory - Return all certificates stored in a path. 1. Management (Add) - Add a certificate to a defined certificate store. 1. Management (Remove) - Remove a certificate from a defined certificate store. +### The Hashicorp PKI and Keyfactor Plugin secrets engines + +Both the Hashicorp PKI and Keyfactor plugin are designed to allow managing certifications directly on the Hashicorp Vault instance. +This integration does support the following in order to view your certificates from the platform: + +1. Inventory - Return all certificates stored in a path. + +[View the repository on Github](https://github.com/Keyfactor/hashicorp-vault-secretsengine) for more information about the Hashicorp Vault Keyfactor Secrets Engine plugin. + ## Versioning The version number of a the Hashicorp Vault Orchestrator Extension can be verified by right clicking on the `Keyfactor.Extensions.Orchestrator.HCV.dll` file in the extensions installation folder, selecting Properties, and then clicking on the Details tab. ## Keyfactor Version Supported -This integration was built on the .NET Core 3.1 target framework and are compatible for use with the Keyfactor Universal Orchestrator. +This integration was built on the .NET Core 3.1 target framework and are compatible for use with the Keyfactor Universal Orchestrator and the latest version of the Keyfactor platform. ## Security Considerations 1. It is not necessary to use the Vault root token when creating a Certificate Store for HashicorpVault. We recommend creating a token with policies that reflect the minimum permissions necessary to perform the intended operations. -1. The certificates are stored in 3 fields in the Key Value store. + +1. For the Key-Value secrets engine, the certificates are stored as an entry with 2 fields. - `PUBLIC_KEY` - The certificate public key - `PRIVATE_KEY` - The certificate private key -- `KEY_SECRET` - The certificate private key password - + +**Note**: Key/Value secrets that do not include these keys (PUBLIC_KEY, and PRIVATE_KEY), will be ignored during inventory scans. + ## Extension Configuration ### On the Orchestrator Agent Machine 1. Stop the Orchestrator service. - -- The service will be called "KeyfactorOrchestrator-Default" by default. - -1. Navigate to the "extensions" sub-folder of your Orchestrator installation directory - -- example: `C:\Program Files\Keyfactor\Keyfactor Orchestrator\extensions` - -1. Create a new folder called "HCV" (the name of the folder is not important) -1. Extract the contents of the release zip file into this folder. -1. Re-start the Orchestrator service. + - The service will be called "KeyfactorOrchestrator-Default" by default. +2. Navigate to the "extensions" sub-folder of your Orchestrator installation directory + - example: `C:\Program Files\Keyfactor\Keyfactor Orchestrator\extensions` +3. Create a new folder called "HCV" (the name of the folder is not important) +4. Extract the contents of the release zip file into this folder. +5. Re-start the Orchestrator service. ### In the Keyfactor Platform -1. Add a new Certificate Store Type +#### Add a new Certificate Store Type - **Key-Value Secrets Engine** - Log into Keyfactor as Administrator or a user with permissions to add certificate store types. - Click on the gear icon in the top right and then navigate to the "Certificate Store Types" @@ -55,33 +66,38 @@ This integration was built on the .NET Core 3.1 target framework and are compati ![](images/store_type_add.png) - Set the following values in the "Basic" tab: - - **Name** - "Hashicorp Vault" (or another preferred name) - - **Short Name** - "HCV" + - **Name:** "Hashicorp Vault Key-Value" (or another preferred name) + - **Short Name:** "HCVKV" - **Supported Job Types** - "Inventory", "Add", "Remove", "Discovery" + +![](images/store-type-kv.PNG) + +- Set the following values on the "Advanced" tab: - **Supports Custom Alias** - "Optional" - **Private Key Handling** - "Optional" -![](images/store_type_1.png) +![](images/cert-store-type-advanced.png) - Click the "Custom Fields" tab to add the following custom fields: - **MountPoint** - type: *string* - **VaultServerUrl** - type: *string*, *required* - - **VaultToken** - type: *string*, *required* + - **VaultToken** - type: *secret*, *required* + - **SubfolderInventory** - type: *bool* (By default, this is set to false. Not a required field) ![](images/store_type_fields.png) - Click **Save** to save the new Store Type. -1. Add the Hashicorp Vault Certificate Store +#### Add the Hashicorp Vault Certificate Store - **Key-Value Secrets Engine** - Navigate to **Locations** > **Certificate Stores** from the main menu - Click **ADD** to open the new Certificate Store Dialog -![](images/cert_store_add_dialog.png) +![](images/cert_store_add_dialog.png) -In Keyfactor Command create a new Certificate Store Type similar to the one below: +In Keyfactor Command create a new Certificate Store that resembles the one below: -![](images/cert_store_fields.png) +![](images/cert_store_fields.png) - **Client Machine** - Enter the URL for the Vault host machine - **Store Path** - This is the path after mount point where the certs will be stored. @@ -90,11 +106,65 @@ In Keyfactor Command create a new Certificate Store Type similar to the one belo - If left blank, will default to "kv-v2". - **Vault Token** - This is the access token that will be used by the orchestrator for requests to Vault. - **Vault Server Url** - the full url and port of the Vault server instance +- **Subfolder Inventory** - Set to 'True' if it is a requirement to inventory secrets at the subfolder/component level. The default, 'False' will inventory secrets stored at the root of the "Store Path", but will not look at secrets in subfolders. **Note** that there is a limit on the number of certificates that can be in a certificate store. In certain environments enabling Subfolder Inventory may exceed this limit and cause inventory job failure. Inventory job results are currently submitted to the Command platform as a single HTTP POST. There is not a specific limit on the number of certificates in a store, rather the limit is based on the size of the actual certificates and the HTTP POST size limit configured on the Command web server. + +### For the Keyfactor and PKI plugins + +- Add a new Certificate Store Type + - Log into Keyfactor as Administrator or a user with permissions to add certificate store types. + - Click on the gear icon in the top right and then navigate to the "Certificate Store Types" + - Click "Add" and enter the following information on the first tab: -## Testing +![](images/store_type_add.png) + +- **Name:** "Hashicorp Vault PKI" (or another preferred name) +- **Short Name:** "HCVPKI" +- **Supported Job Types:** "Inventory" + +![](images/store_type_pki.PNG) + +- Set the following values on the "Advanced" tab: + - **Supports Custom Alias** - "Optional" + - **Private Key Handling** - "Optional" + +![](images/cert-store-type-advanced.png) + +- Click the "Custom Fields" tab to add the following custom fields: + - **MountPoint** - type: *string* + - **VaultServerUrl** - type: *string*, *required* + - **VaultToken** - type: *secret*, *required* + +![](images/store_type_fields.png) + +- Click **Save** to save the new Store Type. + +1. Add the Hashicorp Vault Certificate Store + +- Navigate to **Locations** > **Certificate Stores** from the main menu +- Click **ADD** to open the new Certificate Store Dialog + +In Keyfactor Command create a new Certificate Store similar to the one below: + +![](images/store_type_pki.png) + +- **Client Machine** - Enter the URL for the Vault host machine +- **Store Path** - "/" +- **Mount Point** - This is the mount point name for the instance of the PKI or Keyfactor secrets engine plugin. + - If using the PKI plugin, the default in Hashicorp is pki. If using the Keyfactor plugin, it should correspond to the mount point given when the plugin was enabled. + - It is possible to have multiple instances of the Keyfactor plugin running simultaneously, so be sure this corresponds to the one you would like to manage. + +- **Vault Token** - This is the access token that will be used by the orchestrator for requests to Vault. +- **Vault Server Url** - the full url and port of the Vault server instance + +At this point, the certificate store should be created and ready to peform inventory on your certificates stored via the Keyfactor or PKI secrets engine plugin for Hashicorp Vault. + +## Testing the Key-Value store ### PFX Enrollment into Vault +**Note** +Enrollment via the platform is only supported by the Key-Value store type + At this point you should be able to enroll a certificate and store it in Vault using the plugin. 1. Navigate to `Enrollment > PFX Enrollment` from the main menu. @@ -115,7 +185,7 @@ At this point you should be able to enroll a certificate and store it in Vault u - Make sure the vault is unsealed first -1. Type `vault kv list kv/cert-store` (where "kv/cert-store" is /) +1. Type `vault kv list kv/cert-store` (where "kv/cert-store" is `/`) - You should see the alias of the newly enrolled certificate @@ -130,5 +200,4 @@ At this point you should be able to enroll a certificate and store it in Vault u ## Notes / Future Enhancements -- Currently we only operate on a single version of the Key Value secret (no versioning capabilities through the Orchesterator Extension / Keyfactor). -- Creating a new certificate store is done implicitly by adding a **store path** value that doesn't currently exist. +- For the Key-Value stores we operate on a single version of the Key Value secret (no versioning capabilities through the Orchesterator Extension / Keyfactor). From a679306400569932d0adbc03d3e2b8786d39d647 Mon Sep 17 00:00:00 2001 From: Keyfactor Date: Wed, 21 Jun 2023 19:17:48 +0000 Subject: [PATCH 2/3] Update generated README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 04ca4a6..cf5aba7 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ The Hashicorp Vault Orchestrator extension allows you store certificates in Hash #### Integration status: Production - Ready for use in production environments. + ## About the Keyfactor Universal Orchestrator Extension 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. @@ -15,6 +16,7 @@ The Universal Orchestrator is the successor to the Windows Orchestrator. This Or + --- From 7f9eecbfe3aee828c18f127f9570a7e4ad22fac3 Mon Sep 17 00:00:00 2001 From: Joe VanWanzeele <76071503+joevanwanzeeleKF@users.noreply.github.com> Date: Wed, 21 Jun 2023 16:18:24 -0400 Subject: [PATCH 3/3] Include pem chain (#17) * updated to support 2 store types. HCVKV and HCV. * Updated to distinguish between multiple supported store types. * Fixed store path and mount point mapping * updated doc to reflect multiple store type configs. * removed sensitive info from tracelog. * Fixed issue with path not being resolved before attempting to write cert. * Removed KEY_SECRET from PutCertificate Task * Modified PutCertificate to include ---BEGIN ----END banners (for key+cert) * Allows for Recursive subfolder inventory * Update readme to call out cert store limits * Adding InputValidation for KeyValue secrets * including certificate chain when enrolling via platform. * added flag on store type to indicate whether to include cert chain * fixed issue when checking for revocation time for inventory. --- README.md | 4 +- .../HcvKeyValueClient.cs | 59 +++++++++++++----- .../HcvKeyfactorClient.cs | 5 +- hashicorp-vault-orchestrator/IHashiClient.cs | 2 +- hashicorp-vault-orchestrator/Jobs/JobBase.cs | 13 ++-- .../Jobs/Management.cs | 2 +- images/store_type_fields.png | Bin 15612 -> 17863 bytes readme_source.md | 4 +- 8 files changed, 58 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index cf5aba7..bf2dcfb 100644 --- a/README.md +++ b/README.md @@ -79,9 +79,10 @@ This integration was built on the .NET Core 3.1 target framework and are compati 1. It is not necessary to use the Vault root token when creating a Certificate Store for HashicorpVault. We recommend creating a token with policies that reflect the minimum permissions necessary to perform the intended operations. -1. For the Key-Value secrets engine, the certificates are stored as an entry with 2 fields. +1. For the Key-Value secrets engine, the certificates are stored as an entry with these fields. - `PUBLIC_KEY` - The certificate public key +- `PUBLIC_KEY_` - The nth certificate in the chain - `PRIVATE_KEY` - The certificate private key **Note**: Key/Value secrets that do not include these keys (PUBLIC_KEY, and PRIVATE_KEY), will be ignored during inventory scans. @@ -126,6 +127,7 @@ This integration was built on the .NET Core 3.1 target framework and are compati - **VaultServerUrl** - type: *string*, *required* - **VaultToken** - type: *secret*, *required* - **SubfolderInventory** - type: *bool* (By default, this is set to false. Not a required field) + - **IncludeCertChain** - type: *bool* (If true, the available intermediate certificates will also be written to Vault during enrollment) ![](images/store_type_fields.png) diff --git a/hashicorp-vault-orchestrator/HcvKeyValueClient.cs b/hashicorp-vault-orchestrator/HcvKeyValueClient.cs index 131f46d..6796217 100644 --- a/hashicorp-vault-orchestrator/HcvKeyValueClient.cs +++ b/hashicorp-vault-orchestrator/HcvKeyValueClient.cs @@ -39,7 +39,7 @@ public class HcvKeyValueClient : IHashiClient //private VaultClientSettings clientSettings { get; set; } - public HcvKeyValueClient(string vaultToken, string serverUrl, string mountPoint, string storePath,bool SubfolderInventory = false) + public HcvKeyValueClient(string vaultToken, string serverUrl, string mountPoint, string storePath, bool SubfolderInventory = false) { // Initialize one of the several auth methods. IAuthMethodInfo authMethod = new TokenAuthMethodInfo(vaultToken); @@ -54,7 +54,7 @@ public HcvKeyValueClient(string vaultToken, string serverUrl, string mountPoint, public async Task> ListComponentPathsAsync(string storagePath) { VaultClient.V1.Auth.ResetVaultToken(); - List componentPaths = new List {}; + List componentPaths = new List { }; try { Secret listInfo = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(storagePath, _mountPoint)); @@ -89,8 +89,6 @@ public async Task GetCertificate(string key) var relativePath = fullPath.Substring(_storePath.Length); try { - - try { if (_mountPoint == null) @@ -188,7 +186,7 @@ public async Task> GetVaults() return vaults; } - public async Task PutCertificate(string certName, string contents, string pfxPassword) + public async Task PutCertificate(string certName, string contents, string pfxPassword, bool includeChain) { VaultClient.V1.Auth.ResetVaultToken(); @@ -215,13 +213,12 @@ public async Task PutCertificate(string certName, string contents, string pfxPas alias = p.Aliases.Cast().SingleOrDefault(a => p.IsKeyEntry(a)); logger.LogTrace($"Alias = {alias}"); var publicKey = p.GetCertificate(alias).Certificate.GetPublicKey(); + logger.LogTrace($"publicKey = {publicKey}"); var KeyEntry = p.GetKey(alias); - // logger.LogTrace($"KeyEntry = {KeyEntry}"); if (KeyEntry == null) throw new Exception("Unable to retrieve private key"); var privateKey = KeyEntry.Key; - // logger.LogTrace($"privateKey = {privateKey}"); var keyPair = new AsymmetricCipherKeyPair(publicKey, privateKey); pemWriter.WriteObject(keyPair.Private); @@ -235,12 +232,40 @@ public async Task PutCertificate(string certName, string contents, string pfxPas logger.LogTrace("Finished Extracting Private Key..."); } } - var pubCertPem = Pemify(Convert.ToBase64String(p.GetCertificate(alias).Certificate.GetEncoded())); + + var pubCert = p.GetCertificate(alias).Certificate.GetEncoded(); + var pubCertPem = Pemify(Convert.ToBase64String(pubCert)); + + // add the certs in the chain + + var pemChain = new List(); + var chain = p.GetCertificateChain(alias).ToList(); + + chain.ForEach(c => + { + var cert = c.Certificate.GetEncoded(); + var encoded = Pemify(Convert.ToBase64String(cert)); + pemChain.Add(encoded); + }); try { certDict.Add("PRIVATE_KEY", privateKeyString); certDict.Add("PUBLIC_KEY", pubCertPem); + + if (includeChain) + { + var i = 1; + pemChain.ForEach(pc => + { + if (pc != pubCertPem) + { + certDict.Add($"PUBLIC_KEY_{i}", pc); + i++; + } + }); + + } } catch (Exception ex) { @@ -248,7 +273,7 @@ public async Task PutCertificate(string certName, string contents, string pfxPas throw; } try - { + { var fullPath = _storePath + certName; if (_mountPoint == null) @@ -297,8 +322,8 @@ public async Task> GetCertificates() VaultClient.V1.Auth.ResetVaultToken(); _storePath = _storePath.TrimStart('/'); List subPaths = new List(); - //Grabs the list of subpaths to get certificates from, if SubFolder Inventory is turned on. - //Otherwise just define the single path _storePath + //Grabs the list of subpaths to get certificates from, if SubFolder Inventory is turned on. + //Otherwise just define the single path _storePath if (_subfolderInventory == true) { subPaths = (await ListComponentPathsAsync(_storePath)); @@ -325,12 +350,12 @@ public async Task> GetCertificates() { certNames = (await VaultClient.V1.Secrets.KeyValue.V2.ReadSecretPathsAsync(path, mountPoint: _mountPoint)).Data.Keys.ToList(); } - - certNames.ForEach(k => - { - var cert = GetCertificate($"{relative_path}{k}").Result; - if (cert != null) certs.Add(cert); - }); + + certNames.ForEach(k => + { + var cert = GetCertificate($"{relative_path}{k}").Result; + if (cert != null) certs.Add(cert); + }); } catch (Exception ex) { diff --git a/hashicorp-vault-orchestrator/HcvKeyfactorClient.cs b/hashicorp-vault-orchestrator/HcvKeyfactorClient.cs index 4d2f2b7..e97768a 100644 --- a/hashicorp-vault-orchestrator/HcvKeyfactorClient.cs +++ b/hashicorp-vault-orchestrator/HcvKeyfactorClient.cs @@ -66,8 +66,9 @@ public async Task GetCertificate(string key) string revokeTime; content.data.TryGetValue("revocation_time", out revokeTime); + - if (revokeTime.Equals(0)) + if (revokeTime.Equals("0")) { var inventoryItem = new CurrentInventoryItem() { @@ -130,7 +131,7 @@ public Task> GetVaults() throw new NotSupportedException(); } - public Task PutCertificate(string certName, string contents, string pfxPassword) + public Task PutCertificate(string certName, string contents, string pfxPassword, bool includeChain) { throw new NotSupportedException(); } diff --git a/hashicorp-vault-orchestrator/IHashiClient.cs b/hashicorp-vault-orchestrator/IHashiClient.cs index fbee83e..043dd63 100644 --- a/hashicorp-vault-orchestrator/IHashiClient.cs +++ b/hashicorp-vault-orchestrator/IHashiClient.cs @@ -16,7 +16,7 @@ public interface IHashiClient Task> GetCertificates(); Task GetCertificate(string key); Task> GetVaults(); - Task PutCertificate(string certName, string contents, string pfxPassword); + Task PutCertificate(string certName, string contents, string pfxPassword, bool includeChain); Task DeleteCertificate(string certName); } } diff --git a/hashicorp-vault-orchestrator/Jobs/JobBase.cs b/hashicorp-vault-orchestrator/Jobs/JobBase.cs index a3345b8..83e8eb7 100644 --- a/hashicorp-vault-orchestrator/Jobs/JobBase.cs +++ b/hashicorp-vault-orchestrator/Jobs/JobBase.cs @@ -24,6 +24,8 @@ public abstract class JobBase public bool SubfolderInventory { get; set; } + public bool IncludeCertChain { get; set; } + public string MountPoint { get; set; } // the mount point of the KV secrets engine. defaults to KV public string RoleName { get; set; } @@ -71,14 +73,9 @@ private void InitProps(dynamic props, string capability) VaultServerUrl = props["VaultServerUrl"]; SecretsEngine = props["SecretsEngine"]; MountPoint = props["MountPoint"] ?? null; - if (props["SubfolderInventory"] == null) - { - SubfolderInventory = false; - } - else - { - SubfolderInventory = props["SubfolderInventory"]; - } + + SubfolderInventory = props["SubfolderInventory"] ?? false; + IncludeCertChain = props["IncludeCertChain"] ?? false; var isPki = capability.Contains("HCVPKI"); diff --git a/hashicorp-vault-orchestrator/Jobs/Management.cs b/hashicorp-vault-orchestrator/Jobs/Management.cs index 90e4bd8..0670d32 100644 --- a/hashicorp-vault-orchestrator/Jobs/Management.cs +++ b/hashicorp-vault-orchestrator/Jobs/Management.cs @@ -57,7 +57,7 @@ protected virtual JobResult PerformAddition(string alias, string pfxPassword, st try { // uploadCollection is either not null or an exception was thrown. - var cert = VaultClient.PutCertificate(alias, entryContents, pfxPassword); + var cert = VaultClient.PutCertificate(alias, entryContents, pfxPassword, IncludeCertChain); complete.Result = OrchestratorJobStatusJobResult.Success; } catch (Exception ex) diff --git a/images/store_type_fields.png b/images/store_type_fields.png index 2944946448a4a14da30ca90d640518b308446493..c727456ca20e2c6ffea41bf9ffa056fb612f83e0 100644 GIT binary patch literal 17863 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 C!mJwr literal 15612 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 - The nth certificate in the chain - `PRIVATE_KEY` - The certificate private key **Note**: Key/Value secrets that do not include these keys (PUBLIC_KEY, and PRIVATE_KEY), will be ignored during inventory scans. @@ -83,6 +84,7 @@ This integration was built on the .NET Core 3.1 target framework and are compati - **VaultServerUrl** - type: *string*, *required* - **VaultToken** - type: *secret*, *required* - **SubfolderInventory** - type: *bool* (By default, this is set to false. Not a required field) + - **IncludeCertChain** - type: *bool* (If true, the available intermediate certificates will also be written to Vault during enrollment) ![](images/store_type_fields.png)