mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 10:37:56 +00:00 
			
		
		
		
	Add ServiceNow credential resolver docs (#11996)
* Add ServiceNow credential resolver docs * Add information about using system CAs * Add field mappings and troubleshooting tips
This commit is contained in:
		
							
								
								
									
										85
									
								
								website/content/docs/platform/servicenow/configuration.mdx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								website/content/docs/platform/servicenow/configuration.mdx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| --- | ||||
| layout: docs | ||||
| page_title: Configure Vault ServiceNow Credential Resolver | ||||
| description: This section documents the configurables for the Vault ServiceNow Credential Resolver. | ||||
| --- | ||||
|  | ||||
| # Configuring the Vault Credential Resolver | ||||
|  | ||||
| ## MID server properties | ||||
|  | ||||
| The following [properties] are supported by the Vault Credential Resolver: | ||||
|  | ||||
| - `mid.external_credentials.vault.address` `(string: "")` - Address of Vault Agent as resolveable by the MID server. | ||||
|   For example, if Vault Agent is on the same server as the MID server it could be `https://127.0.0.1:8200`. | ||||
|  | ||||
| - `mid.external_credentials.vault.ca` `(string: "")` - The CA certificate to trust for TLS in PEM format. If unset, | ||||
|   the system's trusted CAs will be used. | ||||
|  | ||||
| - `mid.external_credentials.vault.tls_skip_verify` `(string: "")` - When set to true, skips verification of the Vault server | ||||
|   TLS certificiate. Setting this to true is not recommended for production. | ||||
|  | ||||
| [properties]: https://docs.servicenow.com/bundle/quebec-servicenow-platform/page/product/mid-server/reference/r_MIDServerProperties.html#t_SetMIDServerProperties | ||||
|  | ||||
| ## Configuring discovery credentials | ||||
|  | ||||
| To consume Vault credentials from your MID server, you will need to: | ||||
|  | ||||
| * Create a secret in Vault | ||||
| * Configure the resolver to use that secret | ||||
|  | ||||
| ### Creating a secret in Vault | ||||
|  | ||||
| The credential resolver supports reading credentials from the following secret engines: | ||||
|  | ||||
| * [Active Directory](/docs/secrets/ad) | ||||
| * [AWS](/docs/secrets/aws) | ||||
| * [K/V v1](/docs/secrets/kv/kv-v1) | ||||
| * [K/V v2](/docs/secrets/kv/kv-v2) | ||||
|  | ||||
| When creating K/V secrets, you must use the following keys for each component | ||||
| to ensure it is correctly mapped to ServiceNow's credential fields: | ||||
|  | ||||
| Key         | Description                            | Supported aliases | ||||
| ------------|----------------------------------------|------------------ | ||||
| username    | The username                           | access_key | ||||
| password    | The password                           | secret_key, current_password | ||||
| private_key | The private SSH key                    | | ||||
| passphrase  | The passphrase for the private SSH key | | ||||
|  | ||||
| Most ServiceNow credential types will expect at least a username and either | ||||
| a password or a private key. To help surface errors early, the credential | ||||
| resolver validates that a username and password are present for: | ||||
|  | ||||
| * aws | ||||
| * basic | ||||
| * jdbc | ||||
| * jms | ||||
| * ssh_password | ||||
| * vmware | ||||
| * windows | ||||
|  | ||||
| And the credential resolver expects the following types to specify at least | ||||
| a username and a private key: | ||||
|  | ||||
| * api_key | ||||
| * cfg_chef_credentials | ||||
| * infoblox | ||||
| * sn_cfg_ansible | ||||
| * sn_disco_certmgmt_certificate_ca | ||||
| * ssh_private_key | ||||
|  | ||||
| ### Configuring the resolver to use a secret | ||||
|  | ||||
| In the ServiceNow UI: | ||||
|  | ||||
| * Navigate to "Discovery - Credentials" -> New | ||||
|   * Select a type from the list | ||||
|   * Tick "External credential store" | ||||
|   * Fill in a meaningful name | ||||
|   * Set "Credential ID" to the path in Vault where your secret is located, e.g. | ||||
|     for a KV v2 secret engine mounted at "secret", you might have a secret stored | ||||
|     under "ssh": `secret/data/ssh`. Check the [API docs](/api-docs/secret/) for | ||||
|     your secret engine if you are unsure of the path to use | ||||
|   * **Optional:** Click "Test credential" and select a MID server and a target | ||||
|     to test against to test everything is working | ||||
							
								
								
									
										43
									
								
								website/content/docs/platform/servicenow/index.mdx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								website/content/docs/platform/servicenow/index.mdx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| --- | ||||
| layout: docs | ||||
| page_title: Vault ServiceNow Credential Resolver | ||||
| description: >- | ||||
|   The Vault Credential Resolver allows ServiceNow MID servers to use Vault as an enterprise-grade external secret store. | ||||
| --- | ||||
|  | ||||
| # Vault Credential Resolver | ||||
|  | ||||
| ServiceNow® MID servers can use the Vault Credential Resolver to consume secrets | ||||
| directly from Vault for the purpose of performing discovery. See | ||||
| [installation](/docs/platform/servicenow/installation) and | ||||
| [configuration](/docs/platform/servicenow/configuration) for help getting started | ||||
| with the Vault Credential Resolver. | ||||
|  | ||||
| ## Overview | ||||
|  | ||||
| ServiceNow uses MID servers deployed inside customer networks to perform | ||||
| agent-less discovery of their infrastructure. As infrastructure such as databases | ||||
| or servers are discovered, their attributes such as address and software versions | ||||
| are stored in a database. Naturally, this process requires a wide array of | ||||
| credentials. Customers can use ServiceNow's built-in credential storage, or install | ||||
| an external credential resolver to take advantage of their existing enterprise-grade | ||||
| secret storage solution. | ||||
|  | ||||
| [](/img/servicenow-vault-credential-resolver-diagram.png) | ||||
|  | ||||
| The Vault Credential Resolver is one such resolver. The MID server will not | ||||
| store or cache any credentials marked as external, and will invoke the | ||||
| credential resolver each time it requires credentials. | ||||
|  | ||||
| The Vault Credential Resolver is designed to communicate with a Vault Agent | ||||
| service installed on the same machine as the MID server. Authentication is | ||||
| handled between the Agent and Vault, and Vault Agent also handles caching and | ||||
| renewing leased secrets to ensure the load on Vault is minimized. | ||||
|  | ||||
| ### Features | ||||
|  | ||||
| The following features are supported by the Vault Credential Resolver: | ||||
|  | ||||
| - KV, Active Directory and AWS secret engines. | ||||
| - Communication with Vault via Vault Agent. | ||||
| - TLS communication with Vault Agent. | ||||
							
								
								
									
										88
									
								
								website/content/docs/platform/servicenow/installation.mdx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								website/content/docs/platform/servicenow/installation.mdx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | ||||
| --- | ||||
| layout: docs | ||||
| page_title: Install Vault ServiceNow Credential Resolver | ||||
| description: Installation steps for the Vault ServiceNow Credential Resolver. | ||||
| --- | ||||
|  | ||||
| # Installing the Vault Credential Resolver | ||||
|  | ||||
| ## Prerequisites | ||||
|  | ||||
| * ServiceNow version Quebec+ (untested on previous versions) | ||||
| * MID server version Quebec+ (untested on previous versions) | ||||
| * Discovery and external credential plugins activated on ServiceNow | ||||
| * Working Vault deployment accessible from the MID server | ||||
|  | ||||
| ## Installing Vault Agent | ||||
|  | ||||
| * Select your desired auth method from Agent's [supported auth methods](/docs/agent/autoauth/methods) | ||||
|   and set it up in Vault | ||||
|   * For example, to set up AppRole auth and a role called `role1` with the `demo` policy attached: | ||||
|  | ||||
|     ```bash | ||||
|     vault auth enable approle | ||||
|     vault write auth/approle/role/role1 bind_secret_id=true token_policies=demo | ||||
|     ``` | ||||
|  | ||||
|   * To get the files required for the example Agent config below, you can then | ||||
|     run: | ||||
|  | ||||
|     ```bash | ||||
|     echo -n $(vault read -format json auth/approle/role/role1/role-id | jq -r '.data.role_id') > /path/to/roleID | ||||
|     echo -n $(vault write -format json -f auth/approle/role/role1/secret-id | jq -r '.data.secret_id') > /path/to/secretID | ||||
|     ``` | ||||
|  | ||||
| * Create an `agent.hcl` config file. Your exact configuration may vary, but you | ||||
|   must set `cache.use_auto_auth_token = true`, and the `listener`, `vault` and | ||||
|   `auto_auth` blocks are also required to set up a working Agent, e.g.: | ||||
|  | ||||
|   ``` | ||||
|   listener "tcp" { | ||||
|     address = "127.0.0.1:8200" | ||||
|     tls_disable = false | ||||
|     tls_cert_file = "/path/to/cert.pem" | ||||
|     tls_key_file = "/path/to/key.pem" | ||||
|   } | ||||
|  | ||||
|   cache { | ||||
|     use_auto_auth_token = true | ||||
|   } | ||||
|  | ||||
|   vault { | ||||
|     address = "http://vault.example.com:8200" | ||||
|   } | ||||
|  | ||||
|   auto_auth { | ||||
|       method { | ||||
|           type = "approle" | ||||
|           config = { | ||||
|               role_id_file_path = "/path/to/roleID" | ||||
|               secret_id_file_path = "/path/to/secretID" | ||||
|               remove_secret_id_file_after_reading = false | ||||
|           } | ||||
|       } | ||||
|   } | ||||
|   ``` | ||||
|  | ||||
| * Install Vault Agent as a service running `vault agent -config=/path/to/agent.hcl` | ||||
|   * Documentation for Windows service installation [here](/docs/agent/winsvc) | ||||
|  | ||||
| ## Uploading JAR file to MID server | ||||
|  | ||||
| * Download the latest version of the Vault Credential Resolver JAR file from | ||||
|   [releases.hashicorp.com](https://releases.hashicorp.com/vault-servicenow-credential-resolver/) | ||||
| * In ServiceNow, navigate to "MID server - JAR files" -> New | ||||
|   * Manage Attachments -> upload Vault Credential Resolver JAR | ||||
|   * Fill in name, version etc as desired | ||||
|   * Click Submit | ||||
| * Navigate to "MID server - Properties" -> New | ||||
|   * Set Name: `mid.external_credentials.vault.address`, Value: Address of Vault | ||||
|     Agent listener from previous step, e.g. `http://127.0.0.1:8200` | ||||
|   * **Optional:** Set the property `mid.external_credentials.vault.ca` to the | ||||
|     the trusted CA in PEM format if using TLS between the MID server and Vault | ||||
|     Agent with a self-signed certificate. | ||||
|  | ||||
| ## Next steps | ||||
|  | ||||
| See [configuration](/docs/platform/servicenow/configuration) for details on | ||||
| configuring the resolver and using credentials for discovery. | ||||
							
								
								
									
										32
									
								
								website/content/docs/platform/servicenow/troubleshooting.mdx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								website/content/docs/platform/servicenow/troubleshooting.mdx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| --- | ||||
| layout: docs | ||||
| page_title: Troubleshooting the Vault ServiceNow Credential Resolver | ||||
| description: Troubleshooting tips for the Vault ServiceNow Credential Resolver. | ||||
| --- | ||||
|  | ||||
| # Troubleshooting | ||||
|  | ||||
| ## Check the logs | ||||
|  | ||||
| Check the [log files] inside `logs/` in the agent installation folder for logs and | ||||
| errors. The resolver logs a line for each credential ID that it successfully | ||||
| queries, and also logs the fields that the credentials were extracted from. | ||||
|  | ||||
| If a particular credential ID is failing, search for that ID in the logs, and | ||||
| check that it is successfully queried and that the credentials were extracted | ||||
| from the fields you expected. | ||||
|  | ||||
| You will also find any exceptions that the resolver throws in the logs, including | ||||
| if it didn't find the minimum set of required fields as specified in | ||||
| [configuration](/docs/platform/servicenow/configuration#creating-a-secret-in-vault), | ||||
| or if it couldn't communicate with Vault. | ||||
|  | ||||
| [log files]: https://docs.servicenow.com/bundle/quebec-servicenow-platform/page/product/mid-server/reference/r_MIDServerTroubleshooting.html | ||||
|  | ||||
| ## Use the Test credential feature | ||||
|  | ||||
| When creating or configuring a credential in the ServiceNow UI, you should be | ||||
| able to click "Test credential" to perform a quick targeted test. Select the | ||||
| MID server that should query Vault, and select a target that the credential | ||||
| should work for to check that everything works as expected. If it doesn't, check | ||||
| the logs for errors and debug information as detailed above. | ||||
| @@ -1334,6 +1334,10 @@ | ||||
|                 "title": "Overview", | ||||
|                 "path": "platform/k8s/csi" | ||||
|               }, | ||||
|               { | ||||
|                 "title": "Installation", | ||||
|                 "path": "platform/k8s/csi/installation" | ||||
|               }, | ||||
|               { | ||||
|                 "title": "Configurations", | ||||
|                 "path": "platform/k8s/csi/configurations" | ||||
| @@ -1341,10 +1345,6 @@ | ||||
|               { | ||||
|                 "title": "Examples", | ||||
|                 "path": "platform/k8s/csi/examples" | ||||
|               }, | ||||
|               { | ||||
|                 "title": "Installation", | ||||
|                 "path": "platform/k8s/csi/installation" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
| @@ -1362,6 +1362,27 @@ | ||||
|             "path": "platform/aws-mp/run" | ||||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       { | ||||
|         "title": "ServiceNow", | ||||
|         "routes": [ | ||||
|           { | ||||
|             "title": "Overview", | ||||
|             "path": "platform/servicenow" | ||||
|           }, | ||||
|           { | ||||
|             "title": "Installation", | ||||
|             "path": "platform/servicenow/installation" | ||||
|           }, | ||||
|           { | ||||
|             "title": "Configuration", | ||||
|             "path": "platform/servicenow/configuration" | ||||
|           }, | ||||
|           { | ||||
|             "title": "Troubleshooting", | ||||
|             "path": "platform/servicenow/troubleshooting" | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     ] | ||||
|   }, | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 262 KiB | 
		Reference in New Issue
	
	Block a user
	 Tom Proctor
					Tom Proctor