-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Edit four Access Controls guides for Cloud users
Backports #11838 * Edit four Access Controls guides for Cloud users See #10638 Per-session MFA - Add scoped Tabs to the Prerequisites section - Add a ScopedBlock so Cloud users don't see the option to enable per-session MFA via static config - Minor copy-edits and organization edits. For example, turn a section that refers to an example in another section into an Admonition. Dual Authorization - Add scoped Tabs to the Prerequisites - Use a scoped Notice for the edition warning - Style/clarity/grammar edits - Hide the Troubleshooting section for Cloud users Moderated Sessions - Change the edition warning to a scoped Notice. Since this guide is a conceptual guide rather than a step-by-step tutorial, there's no other scope-irrelevant information to hide. Impersonation - Add scoped Tabs to the Prerequisites - Used ScopedBlocks to hide minor scope-irrelevant details - Minor style/grammar/clarity edits * Respond to PR feedback * Respond to PR feedback
- Loading branch information
Showing
5 changed files
with
197 additions
and
67 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,29 +7,66 @@ videoBanner: b_iqJm_o15I | |
You can set up Teleport to require require the approval of multiple team members to perform some critical actions. | ||
Here are the most common scenarios: | ||
|
||
- Improve security of your system and prevent one successful phishing attack from compromizing your system. | ||
- Improve the security of your system and prevent one successful phishing attack from compromising your system. | ||
- Satisfy FedRAMP AC-3 Dual authorization control that requires approval of two authorized individuals. | ||
|
||
Let's set up Teleport's access requests to require approval of | ||
two team members for a privileged role `dbadmin`. | ||
Let's set up Teleport's access requests to require the approval of two team members | ||
for a privileged role `dbadmin`. | ||
|
||
<Admonition | ||
type="warning" | ||
title="Version Warning" | ||
<Notice | ||
type="danger" | ||
scope="oss" | ||
> | ||
This guide requires a commercial edition of Teleport. The open source | ||
edition of Teleport only supports [Github](../../setup/admin/github-sso.mdx) as | ||
an SSO provider. | ||
</Admonition> | ||
</Notice> | ||
|
||
<Admonition title="Note" type="tip"> | ||
The steps below describe how to use Teleport with Mattermost. You can also [integrate with many other providers](../../enterprise/workflow/index.mdx). | ||
</Admonition> | ||
|
||
## Prerequisites | ||
|
||
- Installed [Teleport Enterprise](../../enterprise/introduction.mdx) or [Teleport Cloud](../../cloud/introduction.mdx) >= (=teleport.version=) | ||
- [Tctl enterprise admin tool](https://goteleport.com/teleport/download) >= (=teleport.version=) | ||
<Tabs> | ||
<TabItem | ||
scope={["enterprise"]} label="Enterprise"> | ||
|
||
- A running Teleport cluster. For details on how to set this up, see our Enterprise | ||
[Getting Started](../../enterprise/getting-started.mdx) guide. | ||
|
||
- The `tctl` admin tool and `tsh` client tool version >= (=teleport.version=), | ||
which you can download by visiting the | ||
[customer portal](https://dashboard.gravitational.com/web/login). | ||
|
||
```code | ||
$ tctl version | ||
# Teleport v(=teleport.version=) go(=teleport.golang=) | ||
$ tsh version | ||
# Teleport v(=teleport.version=) go(=teleport.golang=) | ||
``` | ||
|
||
</TabItem> | ||
<TabItem scope={["cloud"]} | ||
label="Teleport Cloud"> | ||
|
||
- A Teleport Cloud account. If you do not have one, visit the | ||
[sign up page](https://goteleport.com/signup/) to begin your free trial. | ||
|
||
- The `tctl` admin tool and `tsh` client tool version >= (=cloud.version=). | ||
To download these tools, visit the [Downloads](../../cloud/downloads.mdx) page. | ||
|
||
```code | ||
$ tctl version | ||
# Teleport v(=cloud.version=) go(=teleport.golang=) | ||
$ tsh version | ||
# Teleport v(=cloud.version=) go(=teleport.golang=) | ||
``` | ||
|
||
</TabItem> | ||
</Tabs> | ||
- Mattermost installed. | ||
|
||
<Admonition | ||
|
@@ -44,7 +81,7 @@ two team members for a privileged role `dbadmin`. | |
|
||
(!docs/pages/includes/tctl.mdx!) | ||
|
||
## Set up Teleport bot | ||
## Step 1/3. Set up a Teleport bot | ||
|
||
### Create a bot within Mattermost | ||
|
||
|
@@ -110,20 +147,25 @@ Update the config with the Teleport address, Mattermost URL, and a bot token. | |
(!examples/resources/plugins/teleport-mattermost-self.toml!) | ||
``` | ||
</TabItem> | ||
<TabItem scope={["cloud"]} label="Cloud"> | ||
<TabItem scope={["cloud"]} label="Teleport Cloud"> | ||
```yaml | ||
(!examples/resources/plugins/teleport-mattermost-cloud.toml!) | ||
``` | ||
</TabItem> | ||
</Tabs> | ||
|
||
## Dual authorization | ||
## Step 2/3. Configure dual authorization | ||
|
||
Alice and Ivan are reviewers - they can approve requests for assuming role `dbadmin`. | ||
Bob is a devops and can assume `dbadmin` role if two members of the `reviewer` role | ||
approved the request. | ||
In this section, we will use an example to show you how to require dual | ||
authorization for a user to assume a role. | ||
|
||
Create `dbadmin`, `reviewer` and `devops` roles: | ||
### Require dual authorization for a role | ||
|
||
Alice and Ivan are reviewers. They can approve requests for assuming role | ||
`dbadmin`. Bob is a DevOps engineer and can assume the `dbadmin` role if two members | ||
of the `reviewer` role approve the request. | ||
|
||
Create the following `dbadmin`, `reviewer` and `devops` roles: | ||
|
||
```yaml | ||
kind: role | ||
|
@@ -159,17 +201,17 @@ spec: | |
'type': 'db' | ||
``` | ||
Example below creates local users Alice, Ivan and Bob. | ||
Bob does not have a role `dbadmin` assigned to him, but can create an access request for it. | ||
The commands below create the local users Bob, Alice, and Ivan. | ||
```code | ||
$ tctl users add [email protected] --roles=devops | ||
$ tctl users add [email protected] --roles=reviewer | ||
$ tctl users add [email protected] --roles=reviewer | ||
``` | ||
|
||
## Access Requests flow | ||
### Create an access request | ||
|
||
Bob does not have a role `dbadmin` assigned to him, but can create an access request for it. | ||
|
||
Bob can create an access request for the `dbadmin` role in the Web UI or CLI: | ||
|
||
|
@@ -215,11 +257,16 @@ Bob can also assume granted access request roles using Web UI: | |
|
||
![Teleport Assume](../../../img/access-controls/dual-authz/teleport-7-bob-assume.png) | ||
|
||
|
||
{/* TODO: This H2 will show up in the table of contents when this section is invisible. | ||
We need a way to hide invisible H2s from the TOC. */} | ||
<ScopedBlock scope={["oss", "enterprise"]}> | ||
|
||
## Troubleshooting | ||
|
||
### Cert errors in self-hosted deployments | ||
|
||
You may be getting certificate errors if Teleport's auth server is missing an address in the server certificate: | ||
You may be getting certificate errors if Teleport's Auth Service is missing an address in the server certificate: | ||
|
||
```txt | ||
authentication handshake failed: x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs | ||
|
@@ -229,9 +276,11 @@ authentication handshake failed: x509: cannot validate certificate for 127.0.0.1 | |
x509: certificate is valid for,*.teleport.cluster.local, teleport.cluster.local, not example.com | ||
``` | ||
|
||
To fix the problem, update the auth service with a public address, and restart Teleport: | ||
To fix the problem, update the Auth Service with a public address, and restart Teleport: | ||
|
||
```yaml | ||
auth_service: | ||
public_addr: ['localhost:3025', 'example.com:3025'] | ||
``` | ||
</ScopedBlock> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.