From b4e3544ff7624e14a6973ac2a0847ddcb1589630 Mon Sep 17 00:00:00 2001 From: Omar Khawaja Date: Tue, 27 Nov 2018 10:28:01 -0500 Subject: [PATCH] New Nomad Vault Integration Guide (#4886) * add vault integration guide in guides section and move current vault integration content to docs section * complete guide with image * fix typos * rename step 6 and fix typos * fix typos and awkward phrasing along with links * fix duplicated step # * fix typo * fix links so that pages that pointed to the original vault integration content still point there --- .../source/assets/images/nomad-demo-app.png | Bin 0 -> 162832 bytes .../source/docs/configuration/vault.html.md | 4 +- .../source/docs/runtime/_envvars.html.md.erb | 2 +- .../docs/runtime/environment.html.md.erb | 2 +- .../docs/vault-integration/index.html.md | 351 ++++++++ .../vault-integration/index.html.md | 780 ++++++++++++------ website/source/intro/use-cases.html.markdown | 2 +- website/source/layouts/docs.erb | 4 + 8 files changed, 903 insertions(+), 242 deletions(-) create mode 100644 website/source/assets/images/nomad-demo-app.png create mode 100644 website/source/docs/vault-integration/index.html.md diff --git a/website/source/assets/images/nomad-demo-app.png b/website/source/assets/images/nomad-demo-app.png new file mode 100644 index 0000000000000000000000000000000000000000..8437c38633e7e00d9e77c20f9dca9f0e2698770e GIT binary patch literal 162832 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%0ACUk1Rr?)JGpJ1Wu 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 It is **strongly discouraged** to place the token as a configuration @@ -150,4 +150,4 @@ token needs to be given to the servers without having to restart them. A reload can be accomplished by sending the process a `SIGHUP` signal. [vault]: https://www.vaultproject.io/ "Vault by HashiCorp" -[nomad-vault]: /guides/operations/vault-integration/index.html "Nomad Vault Integration" +[nomad-vault]: /docs/vault-integration/index.html "Nomad Vault Integration" diff --git a/website/source/docs/runtime/_envvars.html.md.erb b/website/source/docs/runtime/_envvars.html.md.erb index f504b3f84..cdfa6ed76 100644 --- a/website/source/docs/runtime/_envvars.html.md.erb +++ b/website/source/docs/runtime/_envvars.html.md.erb @@ -73,7 +73,7 @@ VAULT_TOKEN - The task's Vault token. See [Vault Integration](/guides/operations/vault-integration/index.html) for more details + The task's Vault token. See [Vault Integration](/docs/vault-integration/index.html) for more details Network-related Variables diff --git a/website/source/docs/runtime/environment.html.md.erb b/website/source/docs/runtime/environment.html.md.erb index fa7c94ce2..f92f27ba0 100644 --- a/website/source/docs/runtime/environment.html.md.erb +++ b/website/source/docs/runtime/environment.html.md.erb @@ -98,4 +98,4 @@ multiple keys with the same uppercased representation will lead to undefined behavior. [jobspec]: /docs/job-specification/index.html "Nomad Job Specification" -[vault]: /guides/operations/vault-integration/index.html "Nomad Vault Integration" +[vault]: /docs/vault-integration/index.html "Nomad Vault Integration" diff --git a/website/source/docs/vault-integration/index.html.md b/website/source/docs/vault-integration/index.html.md new file mode 100644 index 000000000..ae593e30e --- /dev/null +++ b/website/source/docs/vault-integration/index.html.md @@ -0,0 +1,351 @@ +--- +layout: "docs" +page_title: "Vault Integration" +sidebar_current: "docs-vault-integration" +description: |- + Learn how to integrate Nomad with HashiCorp Vault and retrieve Vault tokens for + tasks. +--- + +# Vault Integration + +Many workloads require access to tokens, passwords, certificates, API keys, and +other secrets. To enable secure, auditable and easy access to your secrets, +Nomad integrates with HashiCorp's [Vault][]. Nomad servers and clients +coordinate with Vault to derive a Vault token that has access to only the Vault +policies the tasks needs. Nomad clients make the token available to the task and +handle the tokens renewal. Further, Nomad's [`template` block][template] can +retrieve secrets from Vault making it easier than ever to secure your +infrastructure. + +Note that in order to use Vault with Nomad, you will need to configure and +install Vault separately from Nomad. Nomad does not run Vault for you. + +-> **Note:** Vault integration requires Vault version 0.6.2 or higher. + +## Vault Configuration + +To use the Vault integration, Nomad servers must be provided a Vault token. This +token can either be a root token or a periodic token with permissions to create +from a token role. The root token is the easiest way to get started, but we +recommend a token role based token for production installations. Nomad servers +will renew the token automatically. **Note that the Nomad clients do not need to +be provided with a Vault token.** + +### Root Token Integration + +If Nomad is given a [root +token](https://www.vaultproject.io/docs/concepts/tokens.html#root-tokens), no +further configuration is needed as Nomad can derive a token for jobs using any +Vault policies. + +### Token Role based Integration + +Vault's [Token Authentication Backend][auth] supports a concept called "roles". +Token roles allow policies to be grouped together and token creation to be +delegated to a trusted service such as Nomad. By creating a token role, the set +of policies that tasks managed by Nomad can access may be limited compared to +giving Nomad a root token. Token roles allow both white-list and blacklist +management of policies accessible to the role. + +To configure Nomad and Vault to create tokens against a role, the following must +occur: + + 1. Create a "nomad-server" policy used by Nomad to create and manage tokens. + + 2. Create a Vault token role with the configuration described below. + + 3. Configure Nomad to use the created token role. + + 4. Give Nomad servers a periodic token with the "nomad-server" policy created + above. + +#### Required Vault Policies + +The token Nomad receives must have the capabilities listed below. An explanation +for the use of each capability is given. + +```hcl +# Allow creating tokens under "nomad-cluster" token role. The token role name +# should be updated if "nomad-cluster" is not used. +path "auth/token/create/nomad-cluster" { + capabilities = ["update"] +} + +# Allow looking up "nomad-cluster" token role. The token role name should be +# updated if "nomad-cluster" is not used. +path "auth/token/roles/nomad-cluster" { + capabilities = ["read"] +} + +# Allow looking up the token passed to Nomad to validate # the token has the +# proper capabilities. This is provided by the "default" policy. +path "auth/token/lookup-self" { + capabilities = ["read"] +} + +# Allow looking up incoming tokens to validate they have permissions to access +# the tokens they are requesting. This is only required if +# `allow_unauthenticated` is set to false. +path "auth/token/lookup" { + capabilities = ["update"] +} + +# Allow revoking tokens that should no longer exist. This allows revoking +# tokens for dead tasks. +path "auth/token/revoke-accessor" { + capabilities = ["update"] +} + +# Allow checking the capabilities of our own token. This is used to validate the +# token upon startup. +path "sys/capabilities-self" { + capabilities = ["update"] +} + +# Allow our own token to be renewed. +path "auth/token/renew-self" { + capabilities = ["update"] +} +``` + +The above [`nomad-server` policy](/data/vault/nomad-server-policy.hcl) is +available for download. Below is an example of writing this policy to Vault: + +``` +# Download the policy +$ curl https://nomadproject.io/data/vault/nomad-server-policy.hcl -O -s -L + +# Write the policy to Vault +$ vault policy write nomad-server nomad-server-policy.hcl +``` + +#### Vault Token Role Configuration + +A Vault token role must be created for use by Nomad. The token role can be used +to manage what Vault policies are accessible by jobs submitted to Nomad. The +policies can be managed as a whitelist by using `allowed_policies` in the token +role definition or as a blacklist by using `disallowed_policies`. + +If using `allowed_policies`, tasks may only request Vault policies that are in +the list. If `disallowed_policies` is used, task may request any policy that is +not in the `disallowed_policies` list. There are trade-offs to both approaches +but generally it is easier to use the blacklist approach and add policies that +you would not like tasks to have access to into the `disallowed_policies` list. + +An example token role definition is given below: + +```json +{ + "disallowed_policies": "nomad-server", + "explicit_max_ttl": 0, + "name": "nomad-cluster", + "orphan": true, + "period": 259200, + "renewable": true +} +``` + + +##### Token Role Requirements + +Nomad checks that token role has an appropriate configuration for use by the +cluster. Fields that are checked are documented below as well as descriptions of +the important fields. See Vault's [Token Authentication Backend][auth] +documentation for all possible fields and more complete documentation. + +* `allowed_policies` - Specifies the list of allowed policies as a + comma-separated string. This list should contain all policies that jobs running + under Nomad should have access to. + +* `disallowed_policies` - Specifies the list of disallowed policies as a + comma-separated string. This list should contain all policies that jobs running + under Nomad should **not** have access to. The policy created above that + grants Nomad the ability to generate tokens from the token role should be + included in list of disallowed policies. This prevents tokens created by + Nomad from generating new tokens with different policies than those granted + by Nomad. + + A regression occurred in Vault 0.6.4 when validating token creation using a + token role with `disallowed_policies` such that it is not usable with + Nomad. This will be remedied in 0.6.5 and does not effect earlier versions + of Vault. + +* `explicit_max_ttl` - Specifies the max TTL of a token. **Must be set to `0`** to + allow periodic tokens. + +* `name` - Specifies the name of the policy. We recommend using the name + `nomad-cluster`. If a different name is chosen, replace the token role in the + above policy. + +* `orphan` - Specifies whether tokens created against this token role will be + orphaned and have no parents. Nomad does not enforce the value of this field + but understanding the implications of each value is important. + + If set to false, all tokens will be revoked when the Vault token given to + Nomad expires. This makes it easy to revoke all tokens generated by Nomad but + forces all Nomad servers to use the same Vault token, even through upgrades of + Nomad servers. If the Vault token that was given to Nomad and used to generate + a tasks token expires, the token used by the task will also be revoked which + is not ideal. + + When set to true, the tokens generated for tasks will not be revoked when + Nomad's token is revoked. However Nomad will still revoke tokens when the + allocation is no longer running, minimizing the lifetime of any task's token. + With orphaned enabled, each Nomad server may also use a unique Vault token, + making bootstrapping and upgrading simpler. As such, **setting `orphan = true` + is the recommended setting**. + +* `period` - Specifies the length the TTL is extended by each renewal in + seconds. It is suggested to set this value on the order of magnitude of 3 days + (259200 seconds) to avoid a large renewal request rate to Vault. **Must be set + to a positive value**. + +* `renewable` - Specifies whether created tokens are renewable. **Must be set to + `true`**. This allows Nomad to renew tokens for tasks. + +The above [`nomad-cluster` token role](/data/vault/nomad-cluster-role.json) is +available for download. Below is an example of writing this role to Vault: + +``` +# Download the token role +$ curl https://nomadproject.io/data/vault/nomad-cluster-role.json -O -s -L + +# Create the token role with Vault +$ vault write /auth/token/roles/nomad-cluster @nomad-cluster-role.json +``` + + +#### Example Configuration + +To make getting started easy, the basic [`nomad-server` +policy](/data/vault/nomad-server-policy.hcl) and +[`nomad-cluster` role](/data/vault/nomad-cluster-role.json) described above are +available for download. + +The below example assumes Vault is accessible, unsealed and the operator has +appropriate permissions. + +```shell +# Download the policy and token role +$ curl https://nomadproject.io/data/vault/nomad-server-policy.hcl -O -s -L +$ curl https://nomadproject.io/data/vault/nomad-cluster-role.json -O -s -L + +# Write the policy to Vault +$ vault policy write nomad-server nomad-server-policy.hcl + +# Create the token role with Vault +$ vault write /auth/token/roles/nomad-cluster @nomad-cluster-role.json +``` + +#### Retrieving the Token Role based Token + +After the token role is created, a token suitable for the Nomad servers may be +retrieved by issuing the following Vault command: + +``` +$ vault token create -policy nomad-server -period 72h -orphan +Key Value +--- ----- +token f02f01c2-c0d1-7cb7-6b88-8a14fada58c0 +token_accessor 8cb7fcb3-9a4f-6fbf-0efc-83092bb0cb1c +token_duration 259200s +token_renewable true +token_policies [default nomad-server] +``` + +The `-orphan` flag is included when generating the Nomad server token above to +prevent revocation of the token when its parent expires. Vault typically +creates tokens with a parent-child relationship. When an ancestor token is +revoked, all of its descendant tokens and their associated leases are revoked +as well. + +When generating Nomad's Vault token, we need to ensure that revocation of the +parent token does not revoke Nomad's token. To prevent this behavior we +specify the `-orphan` flag when we create the Nomad's Vault token. All +other tokens generated by Nomad for jobs will be generated using the policy +default of `orphan = false`. + +More information about creating orphan tokens can be found in +[Vault's Token Hierarchies and Orphan Tokens documentation][tokenhierarchy]. + +The token can then be set in the server configuration's +[`vault` stanza][config], as a command-line flag, or via an environment +variable. + +``` +$ VAULT_TOKEN=f02f01c2-c0d1-7cb7-6b88-8a14fada58c0 nomad agent -config /path/to/config +``` + +An example of what may be contained in the configuration is shown below. For +complete documentation please see the [Nomad agent Vault integration][config] +configuration. + +```hcl +vault { + enabled = true + ca_path = "/etc/certs/ca" + cert_file = "/var/certs/vault.crt" + key_file = "/var/certs/vault.key" + address = "https://vault.service.consul:8200" + create_from_role = "nomad-cluster" +} +``` + +## Agent Configuration + +To enable Vault integration, please see the [Nomad agent Vault +integration][config] configuration. + +## Vault Definition Syntax + +To configure a job to retrieve Vault tokens, please see the [`vault` job +specification documentation][vault-spec]. + +## Troubleshooting + +### Invalid Vault token + +Upon startup, Nomad will attempt to connect to the specified Vault server. Nomad +will lookup the passed token and if the token is from a token role, the token +role will be validated. Nomad will not shutdown if given an invalid Vault token, +but will log the reasons the token is invalid and disable Vault integration. + +### Permission Denied errors + +If you are using a Vault version less than 0.7.1 with a Nomad version greater than or equal to 0.6.1, you will need to update your task's policy (listed in [the `vault` stanza of the job specification][vault-spec]) to add the following: + +``` +path "sys/leases/renew" { + capabilities = ["update"] +} +``` + +This is included in Vault's "default" policy beginning with Vault 0.7.1 and is relied upon by Nomad's Vault integration beginning with Nomad 0.6.1. If you're using a newer Nomad version with an older Vault version, your default policy may not automatically include this and you will see "permission denied" errors in your Nomad logs similar to the following: + +``` +Code: 403. Errors: +URL: PUT https://vault:8200/v1/sys/leases/renew +* permission denied +``` + +### No Secret Exists + +Vault has two APIs for secrets, [`v1` and `v2`][vault-secrets-version]. Each version +has different paths, and Nomad does not abstract this for you. As such you will +need to specify the path as reflected by Vault's HTTP API, rather than the path +used in the `vault kv` command. + +You can see examples of `v1` and `v2` syntax in the +[template documentation][vault-kv-templates]. + + +[auth]: https://www.vaultproject.io/docs/auth/token.html "Vault Authentication Backend" +[config]: /docs/configuration/vault.html "Nomad Vault Configuration Block" +[createfromrole]: /docs/configuration/vault.html#create_from_role "Nomad vault create_from_role Configuration Flag" +[template]: /docs/job-specification/template.html "Nomad template Job Specification" +[vault]: https://www.vaultproject.io/ "Vault by HashiCorp" +[vault-spec]: /docs/job-specification/vault.html "Nomad Vault Job Specification" +[tokenhierarchy]: https://www.vaultproject.io/docs/concepts/tokens.html#token-hierarchies-and-orphan-tokens "Vault Tokens - Token Hierarchies and Orphan Tokens" +[vault-secrets-version]: https://www.vaultproject.io/docs/secrets/kv/index.html "KV Secrets Engine" +[vault-kv-templates]: /docs/job-specification/template.html#vault-kv-api-v1 "Vault KV API v1" diff --git a/website/source/guides/operations/vault-integration/index.html.md b/website/source/guides/operations/vault-integration/index.html.md index d4b53278e..d8d0ee5da 100644 --- a/website/source/guides/operations/vault-integration/index.html.md +++ b/website/source/guides/operations/vault-integration/index.html.md @@ -1,71 +1,124 @@ --- layout: "guides" -page_title: "Vault Integration" +page_title: "Vault Integration and Retrieving Dynamic Secrets" sidebar_current: "guides-operations-vault-integration" description: |- - Learn how to integrate Nomad with HashiCorp Vault and retrieve Vault tokens for - tasks. + Learn how to deploy an application in Nomad and retrieve dynamic credentials + by integrating with Vault. --- -# Vault Integration +# Vault Integration and Retrieving Dynamic Secrets -Many workloads require access to tokens, passwords, certificates, API keys, and -other secrets. To enable secure, auditable and easy access to your secrets, -Nomad integrates with HashiCorp's [Vault][]. Nomad servers and clients -coordinate with Vault to derive a Vault token that has access to only the Vault -policies the tasks needs. Nomad clients make the token available to the task and -handle the tokens renewal. Further, Nomad's [`template` block][template] can -retrieve secrets from Vault making it easier than ever to secure your -infrastructure. +Nomad integrates seamlessly with [Vault][vault] and allows your application to +retrieve dynamic credentials for various tasks. In this guide, you will deploy a +web application that needs to authenticate against [PostgreSQL][postgresql] to +display data from a table to the user. -Note that in order to use Vault with Nomad, you will need to configure and -install Vault separately from Nomad. Nomad does not run Vault for you. +## Reference Material --> **Note:** Vault integration requires Vault version 0.6.2 or higher. +- [Vault Integration Docs Page][vault-integration] +- [Nomad Template Stanza Integration with Vault][nomad-template-vault] +- [Secrets Task Directory][secrets-task-directory] -## Vault Configuration +## Estimated Time to Complete -To use the Vault integration, Nomad servers must be provided a Vault token. This -token can either be a root token or a periodic token with permissions to create -from a token role. The root token is the easiest way to get started, but we -recommend a token role based token for production installations. Nomad servers -will renew the token automatically. **Note that the Nomad clients do not need to -be provided with a Vault token.** +20 minutes -### Root Token Integration +## Challenge -If Nomad is given a [root -token](https://www.vaultproject.io/docs/concepts/tokens.html#root-tokens), no -further configuration is needed as Nomad can derive a token for jobs using any -Vault policies. +Think of a scenario where a Nomad operator needs to deploy an application that +can quickly and safely retrieve dynamic credentials to authenticate against a +database and return information. -### Token Role based Integration +## Solution -Vault's [Token Authentication Backend][auth] supports a concept called "roles". -Token roles allow policies to be grouped together and token creation to be -delegated to a trusted service such as Nomad. By creating a token role, the set -of policies that tasks managed by Nomad can access may be limited compared to -giving Nomad a root token. Token roles allow both white-list and blacklist -management of policies accessible to the role. +Deploy Vault and configure the nodes in your Nomad cluster to integrate with it. +Use the appropriate [templating syntax][nomad-template-vault] to retrieve +credentials from Vault and then store those credentials in the +[secrets][secrets-task-directory] task directory to be consumed by the Nomad task. -To configure Nomad and Vault to create tokens against a role, the following must -occur: +## Prerequisites - 1. Create a "nomad-server" policy used by Nomad to create and manage tokens. +To perform the tasks described in this guide, you need to have a Nomad +environment with Consul and Vault installed. You can use this [repo][repo] +to easily provision a sandbox environment. This guide will assume a cluster with +one server node and three client nodes. - 2. Create a Vault token role with the configuration described below. +-> **Please Note:** This guide is for demo purposes and is only using a single +Nomad server with Vault installed alongside. In a production cluster, 3 or 5 Nomad server nodes are recommended along with a separate Vault cluster. - 3. Configure Nomad to use the created token role. +## Steps - 4. Give Nomad servers a periodic token with the "nomad-server" policy created - above. +### Step 1: Initialize Vault Server -#### Required Vault Policies +Run the following command to initialize Vault server and receive an +[unseal][seal] key and initial root [token][token]. Be sure to note the unseal +key and initial root token as you will need these two pieces of information. -The token Nomad receives must have the capabilities listed below. An explanation -for the use of each capability is given. +```shell +$ vault operator init -key-shares=1 -key-threshold=1 +``` -```hcl +The `vault operator init` command above creates a single Vault unseal key for +convenience. For a production environment, it is recommended that you create at +least five unseal key shares and securely distribute them to independent +operators. The `vault operator init` command defaults to five key shares and a key threshold of three. If you provisioned more than one server, the others will become standby nodes but should still be unsealed. + +### Step 2: Unseal Vault + +Run the following command and then provide your unseal key to Vault. + +```shell +$ vault operator unseal +``` +The output of unsealing Vault will look similar to the following: + +```shell +Key Value +--- ----- +Seal Type shamir +Initialized true +Sealed false +Total Shares 1 +Threshold 1 +Version 0.11.4 +Cluster Name vault-cluster-d12535e5 +Cluster ID 49383931-c782-fdc6-443e-7681e7b15aca +HA Enabled true +HA Cluster n/a +HA Mode standby +Active Node Address +``` + +### Step 3: Log in to Vault + +Use the [login][login] command to authenticate yourself against Vault using the +initial root token you received earlier. You will need to authenticate to run +the necessary commands to write policies, create roles, and configure a +connection to your database. + +```shell +$ vault login +``` +If your login is successful, you will see output similar to what is shown below: + +```shell +Success! You are now authenticated. The token information displayed below +is already stored in the token helper. You do NOT need to run "vault login" +again. Future Vault requests will automatically use this token. +... +``` +### Step 4: Write the Policy for the Nomad Server Token + +To use the Vault integration, you must provide a Vault token to your Nomad +servers. Although you can provide your root token to easily get started, the +recommended approach is to use a token [role][role] based token. +This first requires writing a policy that you will attach to the token you +provide to your Nomad servers. By using this approach, you can limit the set of [policies][policy] that tasks managed by Nomad can access. + +For this exercise, use the following policy for the token you will create for your Nomad server. Place this policy in a file named `nomad-server-policy.hcl`. + +```'hcl # Allow creating tokens under "nomad-cluster" token role. The token role name # should be updated if "nomad-cluster" is not used. path "auth/token/create/nomad-cluster" { @@ -108,32 +161,43 @@ path "auth/token/renew-self" { capabilities = ["update"] } ``` +You can now write a policy called `nomad-server` by running the following command: -The above [`nomad-server` policy](/data/vault/nomad-server-policy.hcl) is -available for download. Below is an example of writing this policy to Vault: - -``` -# Download the policy -$ curl https://nomadproject.io/data/vault/nomad-server-policy.hcl -O -s -L - -# Write the policy to Vault +```shell $ vault policy write nomad-server nomad-server-policy.hcl ``` +You should see the following output: -#### Vault Token Role Configuration +```shell +Success! Uploaded policy: nomad-server +``` +You will generate the actual token in the next few steps. -A Vault token role must be created for use by Nomad. The token role can be used -to manage what Vault policies are accessible by jobs submitted to Nomad. The -policies can be managed as a whitelist by using `allowed_policies` in the token -role definition or as a blacklist by using `disallowed_policies`. +### Step 5: Create a Token Role -If using `allowed_policies`, tasks may only request Vault policies that are in -the list. If `disallowed_policies` is used, task may request any policy that is -not in the `disallowed_policies` list. There are trade-offs to both approaches -but generally it is easier to use the blacklist approach and add policies that -you would not like tasks to have access to into the `disallowed_policies` list. +At this point, you must create a Vault token role that Nomad can use. The token +role allows you to limit what Vault policies are are accessible by jobs +submitted to Nomad. We will use the following token role: -An example token role definition is given below: +```json +{ + "allowed_policies": "access-tables", + "explicit_max_ttl": 0, + "name": "nomad-cluster", + "orphan": true, + "period": 259200, + "renewable": true +} +``` +Please notice that the `access-tables` policy is listed under the `allowed_policies` key. We have not created this policy yet, but it will be used by our job to +retrieve credentials to access the database. A job running in our Nomad cluster +will only be allowed to use the `access-tables` policy. + +If you would like to allow all policies to be used by any job in the Nomad +cluster except for the ones you specifically prohibit, then use the +`disallowed_policies` key instead and simply list the policies that should not +be granted. If you take this approach, be sure to include `nomad-server` in the +disallowed policies group. An example of this is shown below: ```json { @@ -145,207 +209,449 @@ An example token role definition is given below: "renewable": true } ``` - - -##### Token Role Requirements - -Nomad checks that token role has an appropriate configuration for use by the -cluster. Fields that are checked are documented below as well as descriptions of -the important fields. See Vault's [Token Authentication Backend][auth] -documentation for all possible fields and more complete documentation. - -* `allowed_policies` - Specifies the list of allowed policies as a - comma-separated string. This list should contain all policies that jobs running - under Nomad should have access to. - -* `disallowed_policies` - Specifies the list of disallowed policies as a - comma-separated string. This list should contain all policies that jobs running - under Nomad should **not** have access to. The policy created above that - grants Nomad the ability to generate tokens from the token role should be - included in list of disallowed policies. This prevents tokens created by - Nomad from generating new tokens with different policies than those granted - by Nomad. - - A regression occurred in Vault 0.6.4 when validating token creation using a - token role with `disallowed_policies` such that it is not usable with - Nomad. This will be remedied in 0.6.5 and does not effect earlier versions - of Vault. - -* `explicit_max_ttl` - Specifies the max TTL of a token. **Must be set to `0`** to - allow periodic tokens. - -* `name` - Specifies the name of the policy. We recommend using the name - `nomad-cluster`. If a different name is chosen, replace the token role in the - above policy. - -* `orphan` - Specifies whether tokens created against this token role will be - orphaned and have no parents. Nomad does not enforce the value of this field - but understanding the implications of each value is important. - - If set to false, all tokens will be revoked when the Vault token given to - Nomad expires. This makes it easy to revoke all tokens generated by Nomad but - forces all Nomad servers to use the same Vault token, even through upgrades of - Nomad servers. If the Vault token that was given to Nomad and used to generate - a tasks token expires, the token used by the task will also be revoked which - is not ideal. - - When set to true, the tokens generated for tasks will not be revoked when - Nomad's token is revoked. However Nomad will still revoke tokens when the - allocation is no longer running, minimizing the lifetime of any task's token. - With orphaned enabled, each Nomad server may also use a unique Vault token, - making bootstrapping and upgrading simpler. As such, **setting `orphan = true` - is the recommended setting**. - -* `period` - Specifies the length the TTL is extended by each renewal in - seconds. It is suggested to set this value on the order of magnitude of 3 days - (259200 seconds) to avoid a large renewal request rate to Vault. **Must be set - to a positive value**. - -* `renewable` - Specifies whether created tokens are renewable. **Must be set to - `true`**. This allows Nomad to renew tokens for tasks. - -The above [`nomad-cluster` token role](/data/vault/nomad-cluster-role.json) is -available for download. Below is an example of writing this role to Vault: - -``` -# Download the token role -$ curl https://nomadproject.io/data/vault/nomad-cluster-role.json -O -s -L - -# Create the token role with Vault -$ vault write /auth/token/roles/nomad-cluster @nomad-cluster-role.json -``` - - -#### Example Configuration - -To make getting started easy, the basic [`nomad-server` -policy](/data/vault/nomad-server-policy.hcl) and -[`nomad-cluster` role](/data/vault/nomad-cluster-role.json) described above are -available for download. - -The below example assumes Vault is accessible, unsealed and the operator has -appropriate permissions. +Save the policy in a file named `nomad-cluster-role.json` and create the token +role named `nomad-cluster`. ```shell -# Download the policy and token role -$ curl https://nomadproject.io/data/vault/nomad-server-policy.hcl -O -s -L -$ curl https://nomadproject.io/data/vault/nomad-cluster-role.json -O -s -L - -# Write the policy to Vault -$ vault policy write nomad-server nomad-server-policy.hcl - -# Create the token role with Vault $ vault write /auth/token/roles/nomad-cluster @nomad-cluster-role.json ``` +You should see the following output: -#### Retrieving the Token Role based Token - -After the token role is created, a token suitable for the Nomad servers may be -retrieved by issuing the following Vault command: - +```shell +Success! Data written to: auth/token/roles/nomad-cluster ``` + +### Step 6: Generate the Token for the Nomad Server + +Run the following command to create a token for your Nomad server: + +```shell $ vault token create -policy nomad-server -period 72h -orphan -Key Value ---- ----- -token f02f01c2-c0d1-7cb7-6b88-8a14fada58c0 -token_accessor 8cb7fcb3-9a4f-6fbf-0efc-83092bb0cb1c -token_duration 259200s -token_renewable true -token_policies [default nomad-server] ``` +The `-orphan` flag is included when generating the Nomad server token above to prevent revocation of the token when its parent expires. Vault typically creates tokens with a parent-child relationship. When an ancestor token is revoked, all of its descendant tokens and their associated leases are revoked as well. -The `-orphan` flag is included when generating the Nomad server token above to -prevent revocation of the token when its parent expires. Vault typically -creates tokens with a parent-child relationship. When an ancestor token is -revoked, all of its descendant tokens and their associated leases are revoked -as well. - -When generating Nomad's Vault token, we need to ensure that revocation of the -parent token does not revoke Nomad's token. To prevent this behavior we -specify the `-orphan` flag when we create the Nomad's Vault token. All -other tokens generated by Nomad for jobs will be generated using the policy -default of `orphan = false`. - -More information about creating orphan tokens can be found in -[Vault's Token Hierarchies and Orphan Tokens documentation][tokenhierarchy]. - -The token can then be set in the server configuration's -[`vault` stanza][config], as a command-line flag, or via an environment -variable. +If everything works, you should see output similar to the following: +```shell +Key Value +--- ----- +token 1gr0YoLyTBVZl5UqqvCfK9RJ +token_accessor 5fz20DuDbxKgweJZt3cMynya +token_duration 72h +token_renewable true +token_policies ["default" "nomad-server"] +identity_policies [] +policies ["default" "nomad-server"] ``` -$ VAULT_TOKEN=f02f01c2-c0d1-7cb7-6b88-8a14fada58c0 nomad agent -config /path/to/config -``` +### Step 7: Edit the Nomad Server Configuration to Enable Vault Integration -An example of what may be contained in the configuration is shown below. For -complete documentation please see the [Nomad agent Vault integration][config] -configuration. +At this point, you are ready to edit the [vault stanza][vault-stanza] in the Nomad Server's configuration file located at `/etc/nomad.d/nomad.hcl`. Provide the token you generated in the previous step in the `vault` stanza of +your Nomad server configuration. The token can also be provided as an +environment variable called `VAULT_TOKEN`. Be sure to specify the +`nomad-cluster-role` in the [create_from_role][create-from-role] option. After +following these steps and enabling Vault, the `vault` stanza in your Nomad server configuration will be similar to what is shown below: ```hcl vault { - enabled = true - ca_path = "/etc/certs/ca" - cert_file = "/var/certs/vault.crt" - key_file = "/var/certs/vault.key" - address = "https://vault.service.consul:8200" + enabled = true + address = "http://active.vault.service.consul:8200" + task_token_ttl = "1h" create_from_role = "nomad-cluster" + token = "" } ``` -## Agent Configuration - -To enable Vault integration, please see the [Nomad agent Vault -integration][config] configuration. - -## Vault Definition Syntax - -To configure a job to retrieve Vault tokens, please see the [`vault` job -specification documentation][vault-spec]. - -## Troubleshooting - -### Invalid Vault token - -Upon startup, Nomad will attempt to connect to the specified Vault server. Nomad -will lookup the passed token and if the token is from a token role, the token -role will be validated. Nomad will not shutdown if given an invalid Vault token, -but will log the reasons the token is invalid and disable Vault integration. - -### Permission Denied errors - -If you are using a Vault version less than 0.7.1 with a Nomad version greater than or equal to 0.6.1, you will need to update your task's policy (listed in [the `vault` stanza of the job specification][vault-spec]) to add the following: +Restart the Nomad server +```shell +$ sudo systemctl restart nomad ``` -path "sys/leases/renew" { - capabilities = ["update"] + +NOTE: Nomad servers will renew the token automatically. + +Vault integration needs to be enabled on the client nodes as well, but this has +been configured for you already in this environment. You will see the `vault` +stanza in your Nomad clients' configuration (located at `/etc/nomad.d/nomad.hcl`) looks similar to the following: + +```hcl +vault { + enabled = true + address = "http://active.vault.service.consul:8200" +} +``` +Please note that the Nomad clients do not need to be provided with a Vault +token. + +### Step 8: Deploy Database + +The next few steps will involve configuring a connection between Vault and our +database, so let's deploy one that we can connect to. Create a Nomad job called +`db.nomad` with the following content: + +```hcl +job "postgres-nomad-demo" { + datacenters = ["dc1"] + + group "db" { + + task "server" { + driver = "docker" + + config { + image = "hashicorp/postgres-nomad-demo:latest" + port_map { + db = 5432 + } + } + resources { + network { + port "db"{ + static = 5432 + } + } + } + + service { + name = "database" + port = "db" + + check { + type = "tcp" + interval = "2s" + timeout = "2s" + } + } + } + } } ``` -This is included in Vault's "default" policy beginning with Vault 0.7.1 and is relied upon by Nomad's Vault integration beginning with Nomad 0.6.1. If you're using a newer Nomad version with an older Vault version, your default policy may not automatically include this and you will see "permission denied" errors in your Nomad logs similar to the following: +Run the job as shown below: -``` -Code: 403. Errors: -URL: PUT https://vault:8200/v1/sys/leases/renew -* permission denied +```shell +$ nomad run db.nomad ``` -### No Secret Exists +Verify the job is running with the following command: -Vault has two APIs for secrets, [`v1` and `v2`][vault-secrets-version]. Each version -has different paths, and Nomad does not abstract this for you. As such you will -need to specify the path as reflected by Vault's HTTP API, rather than the path -used in the `vault kv` command. +```shell +$ nomad status postgres-nomad-demo +``` -You can see examples of `v1` and `v2` syntax in the -[template documentation][vault-kv-templates]. +The result of the status command will look similar to the output below: + +```shell +ID = postgres-nomad-demo +Name = postgres-nomad-demo +Submit Date = 2018-11-15T21:01:00Z +Type = service +Priority = 50 +Datacenters = dc1 +Status = running +Periodic = false +Parameterized = false + +Summary +Task Group Queued Starting Running Failed Complete Lost +db 0 0 1 0 0 0 + +Allocations +ID Node ID Task Group Version Desired Status Created Modified +701e2699 5de1330c db 0 run running 1m56s ago 1m33s ago +``` + +Now we can move on to configuring the connection between Vault and our database. + +### Step 9: Enable the Database Secrets Engine + +We are using the database secrets engine for Vault in this exercise so that we +can generate dynamic credentials for our PostgreSQL database. Run the following command to enable it: + +```shell +$ vault secrets enable database +``` +If the previous command was successful, you will see the following output: + +```shell +Success! Enabled the database secrets engine at: database/ +``` + +### Step 10: Configure the Database Secrets Engine + +Create a file named `connection.json` and placed the following information into +it: + +```json +{ + "plugin_name": "postgresql-database-plugin", + "allowed_roles": "accessdb", + "connection_url": "postgresql://{{username}}:{{password}}@database.service.consul:5432/postgres?sslmode=disable", + "username": "postgres", + "password": "postgres123" +} +``` +The information above allows Vault to connect to our database and create users +with specific privileges. We will specify the `accessdb` role soon. In a +production setting, it is recommended to give Vault credentials with enough +privileges to generate database credentials dynamically and and manage their +lifecycle. + +Run the following command to configure the connection between the database +secrets engine and our database: + +```shell +$ vault write database/config/postgresql @connection.json +``` + +If the operation is successful, there will be no output. + +### Step 11: Create a Vault Role to Manage Database Privileges + +Recall from the previous step that we specified `accessdb` in the +`allowed_roles` key of our connection information. Let's set up that role now. Create a file called `accessdb.sql` with the following content: + +```shell +CREATE USER "{{name}}" WITH ENCRYPTED PASSWORD '{{password}}' VALID UNTIL +'{{expiration}}'; +GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "{{name}}"; +GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "{{name}}"; +GRANT ALL ON SCHEMA public TO "{{name}}"; +``` + +The SQL above will be used in the [creation_statements][creation-statements] +parameter of our next command to specify the privileges that the dynamic +credentials being generated will possess. In our case, the dynamic database user +will have broad privileges that include the ability to read from the tables that +our application will need to access. + +Run the following command to create the role: + +```shell +$ vault write database/roles/accessdb db_name=postgresql \ +creation_statements=@accessdb.sql default_ttl=1h max_ttl=24h +``` +You should see the following output after running the previous command: + +```shell +Success! Data written to: database/roles/accessdb +``` + +### Step 12: Generate PostgreSQL Credentials + +You should now be able to generate dynamic credentials to access your database. +Run the following command to generate a set of credentials: + +```shell +$ vault read database/creds/accessdb +``` +The previous command should return output similar to what is shown below: + +```shell +Key Value +--- ----- +lease_id database/creds/accessdb/3JozEMSMqw0vHHhvla15sKTW +lease_duration 1h +lease_renewable true +password A1a-3pMGjpDXHZ2Qzuf7 +username v-root-accessdb-5LA65urB4daA8KYy2xku-1542318363 +``` +Congratulations! You have configured Vault's connection to your database and +can now generate credentials with the previously specified privileges. Now we need to deploy our application and make sure that it will be able to communicate with Vault and obtain the credentials as well. + +### Step 13: Create the `access-tables` Policy for Your Nomad Job to Use + +Recall from [Step 5][step-5] that we specified a policy named `access-tables` in +our `allowed_policies` section of the token role. We will create this policy now +and give it the capability to read from the `database/creds/accessdb` endpoint +(the same endpoint we read from in the previous step to generate credentials for +our database). We will then specify this policy in our Nomad job which will +allow it to retrieve credentials for itself to access the database. + +On the Nomad server (which is also running Vault), create a file named `access-tables-policy.hcl` with the following content: + +```hcl +path "database/creds/accessdb" { + capabilities = ["read"] +} +``` +Create the `access-tables` policy with the following command: + +```shell +$ vault policy write access-tables access-tables-policy.hcl +``` +You should see the following output: + +```shell +Success! Uploaded policy: access-tables +``` + +### Step 14: Deploy Your Job with the Appropriate Policy and Templating + +Now we are ready to deploy our web application and give it the necessary policy +and configuration to communicate with our database. Create a file called +`web-app.nomad` and save the following content in it. + +```hcl +job "nomad-vault-demo" { + datacenters = ["dc1"] + + group "demo" { + task "server" { + + vault { + policies = ["access-tables"] + } + + driver = "docker" + config { + image = "hashicorp/nomad-vault-demo:latest" + port_map { + http = 8080 + } + + volumes = [ + "secrets/config.json:/etc/demo/config.json" + ] + } + + template { + data = < + + + +

Welcome!

+

If everything worked correctly, you should be able to see a list of names below

+ +
-[auth]: https://www.vaultproject.io/docs/auth/token.html "Vault Authentication Backend" -[config]: /docs/configuration/vault.html "Nomad Vault Configuration Block" -[createfromrole]: /docs/configuration/vault.html#create_from_role "Nomad vault create_from_role Configuration Flag" -[template]: /docs/job-specification/template.html "Nomad template Job Specification" -[vault]: https://www.vaultproject.io/ "Vault by HashiCorp" -[vault-spec]: /docs/job-specification/vault.html "Nomad Vault Job Specification" -[tokenhierarchy]: https://www.vaultproject.io/docs/concepts/tokens.html#token-hierarchies-and-orphan-tokens "Vault Tokens - Token Hierarchies and Orphan Tokens" -[vault-secrets-version]: https://www.vaultproject.io/docs/secrets/kv/index.html "KV Secrets Engine" -[vault-kv-templates]: /docs/job-specification/template.html#vault-kv-api-v1 "Vault KV API v1" +

John Doe

+ +

Peter Parker

+ +

Clifford Roosevelt

+ +

Bruce Wayne

+ +

Steven Clark

+ +

Mary Jane

+ + + + +``` +- You can also deploy [fabio][fabio] and visit any Nomad client at its public IP + address using a fixed port. The details of this method are beyond the scope of +this guide, but you can refer to the [Load Balancing with Fabio][fabio-lb] guide +for more information on this topic. Alternatively, you could use the `nomad` +[alloc status][alloc-status] command along with the AWS console to determine the +public IP and port your service is running (remember to open the port in your +AWS security group if you choose this method). + +[![Web Service][web-service]][web-service] + +[alloc-status]: /docs/commands/alloc/status.html +[consul-template]: https://github.com/hashicorp/consul-template +[consul-temp-syntax]: https://github.com/hashicorp/consul-template#secret +[create-from-role]: /docs/configuration/vault.html#create_from_role +[creation-statements]: https://www.vaultproject.io/api/secret/databases/index.html#creation_statements +[destination]: /docs/job-specification/template.html#destination +[fabio]: https://github.com/fabiolb/fabio +[fabio-job]: /guides/load-balancing/fabio.html#step-1-create-a-job-for-fabio +[fabio-lb]: /guides/load-balancing/fabio.html +[inline]: /docs/job-specification/template.html#inline-template +[login]: https://www.vaultproject.io/docs/commands/login.html +[nomad-alloc-fs]: /docs/commands/alloc/fs.html +[nomad-template-vault]: /docs/job-specification/template.html#vault-integration +[policy]: https://www.vaultproject.io/docs/concepts/policies.html +[postgresql]: https://www.postgresql.org/about/ +[remote-template]: /docs/job-specification/template.html#remote-template +[repo]: https://github.com/hashicorp/nomad/tree/master/terraform +[role]: https://www.vaultproject.io/docs/auth/token.html +[seal]: https://www.vaultproject.io/docs/concepts/seal.html +[secrets-task-directory]: /docs/runtime/environment.html#secrets- +[step-5]: /guides/vault-integration.html#step-5-create-a-token-role +[template]: /docs/job-specification/template.html +[token]: https://www.vaultproject.io/docs/concepts/tokens.html +[vault]: https://www.vaultproject.io/ +[vault-integration]: /docs/vault-integration/index.html +[vault-jobspec]: /docs/job-specification/vault.html +[vault-stanza]: /docs/configuration/vault.html +[web-service]: /assets/images/nomad-demo-app.png diff --git a/website/source/intro/use-cases.html.markdown b/website/source/intro/use-cases.html.markdown index 52c11eda7..32a97c1fe 100644 --- a/website/source/intro/use-cases.html.markdown +++ b/website/source/intro/use-cases.html.markdown @@ -21,7 +21,7 @@ application deployment and management. This transition requires new tooling to automate placement, perform job updates, enable self-service for developers, and to handle failures automatically. Nomad supports a [first-class Docker workflow](/docs/drivers/docker.html) and integrates seamlessly with [Consul](/guides/operations/consul-integration/index.html) -and [Vault](/guides/operations/vault-integration/index.html) to enable a complete solution +and [Vault](/docs/vault-integration/index.html) to enable a complete solution while maximizing operational flexibility. Nomad is easy to use, can scale to thousands of nodes in a single cluster, and can easily deploy across private data centers and multiple clouds. diff --git a/website/source/layouts/docs.erb b/website/source/layouts/docs.erb index 6df95a8f3..5d661dae5 100644 --- a/website/source/layouts/docs.erb +++ b/website/source/layouts/docs.erb @@ -447,6 +447,10 @@ Variable Interpolation + > + Vault Integration + +
>