From 6db6cc18e27d0043bdbc03f7e09066310ae9f65b Mon Sep 17 00:00:00 2001 From: Dan Heath <76443935+Dan-Heath@users.noreply.github.com> Date: Thu, 20 Apr 2023 16:11:37 -0400 Subject: [PATCH] docs: Credential management documentation (#3147) * docs: Create credential management documentation * docs: Copy edits * docs: Update graphics * docs: Additional copy edits * docs: Fix typos * docs: Reduce size of graphics * docs: Fix pixel density in brokering graphic * docs: Increase size of graphics * docs: Fix pixel density in brokering graphic * docs: Fix issue with brokering image size * docs: Adjust cred brokering image width * docs: Adjust width of brokering graphic * docs: Specify width for gifs * docs: Undo width settings on gifs * docs: Test brokering gif at 75% * doc: Test resized images in preview deployment * docs: Resize gifs smaller * docs: Resize gifs a bit larger * doc: Cleanup extra graphics, test zoomable link * docs: Test gif loop with original * docs: Update gif with loop, fix legacy link * docs: Clean up file names, add updated graphics * docs: Increase size of terminal gif * docs: Update terminal graphic * docs: Update with larger terminal graphic * docs: Move large graphics to DatoCMS --- .../docs/concepts/credential-management.mdx | 111 ++++++++++++++++++ website/data/docs-nav-data.json | 4 + website/public/img/credential-brokering.png | Bin 0 -> 22726 bytes website/public/img/credential-injection.png | Bin 0 -> 19811 bytes 4 files changed, 115 insertions(+) create mode 100644 website/content/docs/concepts/credential-management.mdx create mode 100644 website/public/img/credential-brokering.png create mode 100644 website/public/img/credential-injection.png diff --git a/website/content/docs/concepts/credential-management.mdx b/website/content/docs/concepts/credential-management.mdx new file mode 100644 index 000000000..0d83e92e0 --- /dev/null +++ b/website/content/docs/concepts/credential-management.mdx @@ -0,0 +1,111 @@ +--- +layout: docs +page_title: Credential management +description: |- + An overview of credential management in Boundary +--- + +# Credential management + +When users connect to a remote machine, they typically need a set of credentials for authentication. +After they connect to the machine, they may also require another set of credentials to access services or other machines within the network. + +There are two credential management paradigms in Boundary, [credential brokering](#credential-brokering) and [credential injection](#credential-injection-hcp-only). + +## Credential brokering + +Credential brokering is the process by which credentials are fetched from a credential store, and then returned back to the user. +The user must already be authorized to connect to a specific target to have credentials for that target brokered back to them. +Credentials are brokered when the session is established. + +The credential brokering process works as follows: + +1. The user authenticates to Boundary using either the CLI or desktop app. +1. The user requests a connection to the target. + + The controller fetches credentials from the credential store and passes the credentials to the user. +1. The user establishes a connection to the session. + + The controller assigns the job to a worker, and the worker establishes a session to the target. +1. The user enters the credentials. + + The user is authenticated to the target. + +You can attach brokered credentials to either TCP targets or SSH targets. +Brokered credentials can take the form of a token, username and password, SSH private key, certificate, JSON blob, or an unstructured secret stored in Vault, for example. + +### Security considerations + +Consider a scenario where a user wants to access a target using SSH. + +![Credential brokering diagram](/img/credential-brokering.png) + +In this scenario, the user must be authorized to access the target. +If they are authorized, they can authenticate themselves to the machine using credentials that were brokered, or returned, back to them. +If the user is not authorized to access the target, they will not be able to retrieve brokered credentials for that target. + + Boundary credential brokering animated + +If a user wants to abstract the authentication process using brokered credentials, they can use the `boundary connect` ssh-style command, and pass credentials to sshpass, PuTTY, or another such tool. +In this scenario, while the brokered credential may not be visible to the user, they still interact with the brokered credentials to perform authentication. + + Pass credentials using the boundary connect command + +Additionally, with Vault's dynamic secrets engine, an administrator could configure their environment such that secrets are essentially one-time passwords, as the credentials are revoked after the session is terminated. + +Learn more about [credential brokering](/boundary/tutorials/hcp-getting-started/hcp-getting-started-credentials). + +Learn more about the [Vault dynamic secrets engine](/vault/docs/secrets). + +## Credential injection HCP only + +Credential injection is the process by which a credential is fetched from a credential store and then passed on to a worker for authentication to a remote machine. +With credential injection, the user never sees the credential required to authenticate to the target. +This provides a passwordless experience for the user, as the worker does both session establishment and authentication to the target on behalf of the user. +This process differs from credential brokering, where credentials are returned to the user rather than injected into the session on worker nodes. + +The credential injection process works as follows: + +1. The user authenticates to Boundary. +1. The user requests a connection to a target. + + The controller fetches credentials from the credential store. +1. The user establishes a connection to the session. + + The controller assigns the job to a worker, and the worker establishes a session to the target. + Then the controller passes credentials to the worker. + The worker authenticates to the target, and the user is then authenticated to the target. + +Credential injection is available for the SSH target type, allowing users to inject the following credential types when accessing targets using SSH: + +- SSH certificates +- Usernames and passwords +- Usernames and public keys + +### Security considerations + +Consider a scenario where a user wants to access a target using SSH. + +![Credential injection diagram](/img/credential-injection.png) + +In this scenario, the user must be authorized to access the target. +If they are authorized, they have the ability to connect to the worker. +Upon connecting to the worker, the worker attempts to establish a remote session to the target, and attempts authentication on behalf of the user. + + Boundary credential injection animated + +If the user is not authorized to access the target, the credentials are not injected on their behalf, nor are the credentials brokered back to them. + +Learn more about [credential injection](/boundary/tutorials/hcp-administration/hcp-ssh-cred-injection). \ No newline at end of file diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index 21f9cd195..e7b0d4f69 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -211,6 +211,10 @@ "title": "Service Discovery", "path": "concepts/service-discovery" }, + { + "title": "Credential Management", + "path": "concepts/credential-management" + }, { "title": "Security", "routes": [ diff --git a/website/public/img/credential-brokering.png b/website/public/img/credential-brokering.png new file mode 100644 index 0000000000000000000000000000000000000000..27e3dce9fa362bd6076c1eed4692abbad6cc446c GIT binary patch literal 22726 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 literal 0 HcmV?d00001 diff --git a/website/public/img/credential-injection.png b/website/public/img/credential-injection.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5fcf5c99e98b5a94b0a7d1b9092b2e4da5ed1f GIT binary patch literal 19811 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 OIP-M%b6Mw<&;$TS*;D-h literal 0 HcmV?d00001