open-vault/website/content/docs/auth/github.mdx

114 lines
3.3 KiB
Plaintext
Raw Normal View History

2015-04-18 20:45:50 +00:00
---
layout: docs
page_title: GitHub - Auth Methods
sidebar_title: GitHub
description: The GitHub auth method allows authentication with Vault using GitHub.
2015-04-18 20:45:50 +00:00
---
# GitHub Auth Method
2015-04-18 20:45:50 +00:00
The `github` auth method can be used to authenticate with Vault using a GitHub
2016-10-15 02:39:56 +00:00
personal access token. This method of authentication is most useful for humans:
operators or developers using Vault directly via the CLI.
2015-04-18 20:45:50 +00:00
~> **IMPORTANT NOTE:** Vault does not support an OAuth workflow to generate
GitHub tokens, so does not act as a GitHub application. As a result, this method
uses personal access tokens. An important consequence is that any valid GitHub
access token with the `read:org` scope can be used for authentication. If such a
token is stolen from a third party service, and the attacker is able to make
2017-08-11 21:03:18 +00:00
network calls to Vault, they will be able to log in as the user that generated
the access token. When using this method it is a good idea to ensure that access
to Vault is restricted at a network level rather than public. If these risks are
unacceptable to you, you should use a different method.
2015-04-18 20:45:50 +00:00
## Authentication
### Via the CLI
2015-04-18 20:45:50 +00:00
The default path is `/github`. If this auth method was enabled at a different
path, specify `-path=/my-path` in the CLI.
2015-04-18 20:45:50 +00:00
```shell-session
$ vault login -method=github token="MY_TOKEN"
```
### Via the API
2016-01-23 19:02:00 +00:00
The default endpoint is `auth/github/login`. If this auth method was enabled
at a different path, use that value instead of `github`.
```shell-session
$ curl \
--request POST \
--data '{"token": "MY_TOKEN"}' \
2018-03-23 15:41:51 +00:00
http://127.0.0.1:8200/v1/auth/github/login
```
The response will contain a token at `auth.client_token`:
```json
{
"auth": {
2016-10-15 02:39:56 +00:00
"renewable": true,
"lease_duration": 2764800,
"metadata": {
"username": "my-user",
"org": "my-org"
},
"policies": ["default", "dev-policy"],
2016-10-15 02:39:56 +00:00
"accessor": "f93c4b2d-18b6-2b50-7a32-0fecf88237b8",
"client_token": "1977fceb-3bfa-6c71-4d1f-b64af98ac018"
}
}
```
2015-04-18 20:45:50 +00:00
## Configuration
Auth methods must be configured in advance before users or machines can
authenticate. These steps are usually completed by an operator or configuration
management tool.
1. Enable the GitHub auth method:
```text
$ vault auth enable github
```
1. Use the `/config` endpoint to configure Vault to talk to GitHub.
```text
$ vault write auth/github/config organization=hashicorp
```
2015-04-18 20:45:50 +00:00
For the complete list of configuration options, please see the API
documentation.
2015-04-18 20:45:50 +00:00
1. Map the users/teams of that GitHub organization to policies in Vault. Team
names must be "slugified":
```text
$ vault write auth/github/map/teams/dev value=dev-policy
```
In this example, when members of the team "dev" in the organization
"hashicorp" authenticate to Vault using a GitHub personal access token, they
will be given a token with the "dev-policy" policy attached.
***
2015-04-18 20:45:50 +00:00
You can also create mappings for a specific user `map/users/<user>`
endpoint:
```text
$ vault write auth/github/map/users/sethvargo value=sethvargo-policy
```
In this example, a user with the GitHub username `sethvargo` will be
assigned the `sethvargo-policy` policy **in addition to** any team policies.
2017-08-09 15:22:19 +00:00
## API
The GitHub auth method has a full HTTP API. Please see the
[GitHub Auth API](/api/auth/github) for more
2017-08-11 21:03:18 +00:00
details.