From 929dd5abc352f5be5ae61e375900cf0728f06e3d Mon Sep 17 00:00:00 2001 From: Robin Beck Date: Wed, 13 Mar 2024 10:04:23 -0600 Subject: [PATCH] vault integrations docs (#4510) * docs: Vault integrations (#3449) * Index page * Added basic navigation * Starting the Vault integration page * Bringing in content created by Danny Knights (danny.knights@hashicorp.com) * Added for the information around Vault client count and amended wording * Updated Overview, added hyperlinks, added Resources header * Removed resources section to comply with the flow of the rest of the page * Change KV to Key-Value and amended section * Integrations changed to plural to match Consul * Added Brokered Creds UI Screenshot * Changed Boundary and Vault overview to integrations * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Update website/content/docs/integrations/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> * Apply batch suggestions from code review * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: XingLu Wang * Update website/content/docs/integrations/vault/index.mdx Co-authored-by: XingLu Wang --------- Co-authored-by: dannyjknights Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Co-authored-by: XingLu Wang * removes package-lock.json --------- Co-authored-by: Daniel Greeninger Co-authored-by: dannyjknights Co-authored-by: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Co-authored-by: XingLu Wang --- website/content/docs/integrations/index.mdx | 12 ++++ .../content/docs/integrations/vault/index.mdx | 60 ++++++++++++++++++ website/data/docs-nav-data.json | 14 ++++ website/public/img/brokered-creds-ui.png | Bin 0 -> 61484 bytes 4 files changed, 86 insertions(+) create mode 100644 website/content/docs/integrations/index.mdx create mode 100644 website/content/docs/integrations/vault/index.mdx create mode 100644 website/public/img/brokered-creds-ui.png diff --git a/website/content/docs/integrations/index.mdx b/website/content/docs/integrations/index.mdx new file mode 100644 index 0000000000..efb5d34a5c --- /dev/null +++ b/website/content/docs/integrations/index.mdx @@ -0,0 +1,12 @@ +--- +layout: docs +page_title: Integrations +description: |- + Integrations that extend Boundary +--- + +# Overview + +This section details integrations that extend Boundary's features and capabilities. + +Use the navigation on the left to learn more about a topic. diff --git a/website/content/docs/integrations/vault/index.mdx b/website/content/docs/integrations/vault/index.mdx new file mode 100644 index 0000000000..28ee861d9f --- /dev/null +++ b/website/content/docs/integrations/vault/index.mdx @@ -0,0 +1,60 @@ +--- +layout: docs +page_title: Vault integration +description: |- + Ways to integrate Vault and Boundary +--- + +# Vault integration +The integration between Boundary and Vault aims to improve two main areas of concern for organizations: + +- Security posture in relation to remote access +- Workflow efficiency + +Boundary and Vault achieve these two goals by removing the requirement for the end-user to have to know about what the credentials are or have anything to do with using them to gain access to a resource. + +From a security perspective, we can use dynamic, ephemeral credentials that are only valid for the lifetime of the session, unless a specific time to live (TTL) has been attached to the Vault token that would result in a session having a finite amount of time. + +The security benefits extend past an organization's internal team and cater to third-parties or contractors that may need to access resources. It is preferable to not expose credentials to temporary staff, while still ensuring that access to resources is secure and granted in a timely manner. + +Ensuring access is granted in a timely manner then leads to that improvement in workflow efficiency. This is the result of end-users not having to be concerned with credentials, therefore removing a large bottleneck, in relation to gaining credentials through access requests and the time associated with such a task. + +# Credentials +Vault can work with Boundary to be a credential [store](https://developer.hashicorp.com/boundary/docs/concepts/domain-model/credential-stores) and [library](https://developer.hashicorp.com/boundary/docs/concepts/domain-model/credential-libraries), which allows for credentials to be stored in Vault and used by Boundary. There are two configuration options: + +- Generic secrets +- SSH certificates + +Generic secrets reference a Vault key-value path where static secrets are stored, for example, username and password. You can use generic secrets to broker credentials to the end-user when they connect to a target. + +SSH certificates have the advantage of using Vault as the certificate authority (CA) and being able to use the [HashiCorp Vault SSH Secrets Engine](https://developer.hashicorp.com/vault/docs/secrets/ssh). You can inject SSH certificates directly into the Boundary session. + +It is worth detailing that you must bring your own Vault deployment to Boundary. + +## Brokered credentials + +Brokered credentials were added in Boundary 0.4. They let you use Boundary as a credential broker for infrastructure targets, by binding credentials with user sessions, and surfacing those credentials during session initialization, with the help of Vault. + +An example workflow and use case for this feature is database access. Certain teams within an organization, such as finance, need to access sensitive data that resides in a database. Irrespective of the frequency that the database needs to be accessed, having long-lived credentials that could be purposely or accidentally leaked, can pose a huge risk to a company. + +If Boundary and Vault are added into this workflow, it mitigates this potential security risk. You can enable the Vault database secrets engine, with the relevant database plugin configured, to then be able to issue dynamic and short-lived database credentials to end-users. Organizations can set a limit on the amount of times these credentials are valid and once they have timed-out, access is automatically revoked. + +![Brokered Credentials](/img/brokered-creds-ui.png) + +When you connect to the database using Boundary, Boundary displays the newly generated credentials to the end user so that they can connect to the target. + +## Injected credentials + +Currently SSH certificate injection is the only type of injection possible with the integration between Boundary and Vault. + +Vault is configured to act as the certificate authority (CA), to ensure that the users’ authenticity is determined by a certificate signed by a trusted CA. When key pairs are generated dynamically, they are signed by Vault to then be used to access the resources. There are two options for the key pair generation, depending on the type of Vault endpoint that you use within the Boundary credential library for SSH certification. + +`/issue` - Vault generates and signs the key pair for you. + +`/sign` - The Boundary controllers generate the key pair and then send it to Vault to sign. + + +If Boundary uses Vault for secrets management, then one credential store equates to one Vault token. The number of Boundary targets that source credentials from the stores, the number of users connecting to the targets, the number of sessions that get created or how many credential libraries the credential store contains, all have no impact on the client count in Vault. + + +When you connect to a target, which uses Vault for dynamic SSH certificates, a new certificate is generated for every target connection. As long as the target trusts the CA, then access is granted without you having any visibility into the credentials involved. \ No newline at end of file diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index 3cba14ec97..c1aff63369 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -1502,6 +1502,20 @@ } ] }, + { + "title": "Integrations", + "routes": [ + { + "title": "Overview", + "path": "integrations" + }, + { + "title": "Vault", + "path": "integrations/vault" + } + ] + }, + { "title": "Develop Boundary", "routes": [ diff --git a/website/public/img/brokered-creds-ui.png b/website/public/img/brokered-creds-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..13d76addd648f7b91cbe60c90dc8f0eaeefc448e GIT binary patch literal 61484 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