GitHub 인증 방식

GitHub 인증 방식

사용자 지정 GUI 로그인을 지원해요.

이 방식은 Vault Enterprise GUI 사용자의 기본 또는 백업 로그인 방식으로 선택될 수 있어요. 자세한 내용은 사용자 지정 로그인 옵션 관리 가이드를 참고하세요.

github 인증 방식은 GitHub 개인 접근 토큰으로 Vault에 인증하는 데 사용할 수 있어요. 이 인증 방식은 CLI를 통해 Vault를 직접 사용하는 운영자나 개발자 같은 사람에게 가장 유용해요.

중요 참고: Vault는 GitHub 토큰을 생성하기 위한 OAuth 워크플로를 지원하지 않으므로 GitHub 애플리케이션으로 작동하지 않아요. 결과적으로 이 방식은 개인 접근 토큰을 사용해요. 아래 위험이 허용 불가능하다면 다른 인증 방식을 고려하세요.

Vault로 구성된 조직에 속한 사용자의 read:org 범위를 가진 유효한 GitHub 접근 토큰은 인증에 사용될 수 있어요. 그러한 토큰이 제3자 서비스에서 도난당하고 공격자가 Vault에 네트워크 호출을 할 수 있다면, 접근 토큰을 생성한 사용자로 로그인할 수 있게 돼요.

GitHub 팀이 SSO가 활성화된 조직의 일부라면 사용자가 개인 접근 토큰을 승인해야 해요. SSO 사용자가 그렇게 하지 않으면 개인 접근 토큰이 신원 정보를 제공하지 않을 거예요. 인증 방식이 발급한 토큰에는 기본 정책만 할당돼요.

출처: 문서

본문

인증 (Authentication)

CLI를 통해

기본 경로는 /github예요. 이 인증 방식이 다른 경로에 활성화되었다면 CLI에서 -path=/my-path를 지정하세요.

$ vault login -method=github token="MY_TOKEN"

VAULT_AUTH_GITHUB_TOKEN 환경 변수로 GitHub에 인증할 수도 있어요. 예를 들어:

$ export VAULT_AUTH_GITHUB_TOKEN="MY_TOKEN"
$ vault login -method=github

API를 통해

기본 엔드포인트는 auth/github/login이에요. 이 인증 방식이 다른 경로에 활성화되었다면 github 대신 그 값을 사용하세요.

$ curl \
    --request POST \
    --data '{"token": "MY_TOKEN"}' \
    http://127.0.0.1:8200/v1/auth/github/login

응답은 auth.client_token에 토큰을 포함해요.

{
  "auth": {
    "renewable": true,
    "lease_duration": 2764800,
    "metadata": {
      "username": "my-user",
      "org": "my-org"
    },
    "policies": ["default", "dev-policy"],
    "accessor": "f93c4b2d-18b6-2b50-7a32-0fecf88237b8",
    "client_token": "1977fceb-3bfa-6c71-4d1f-b64af98ac018"
  }
}

구성 (Configuration)

인증 방식은 사용자나 머신이 인증하기 전에 미리 구성되어야 해요. 이 단계들은 보통 운영자나 설정 관리 도구가 수행해요.

1. GitHub 인증 방식을 활성화합니다.

$ vault auth enable github

2. /config 엔드포인트를 사용해 Vault가 GitHub와 통신하도록 구성합니다.

$ vault write auth/github/config organization=hashicorp

참고: GitHub Enterprise를 사용한다면 GitHub 조직 ID로 organization_id 파라미터를 설정해야 해요. Vault는 인증 없이는 조직 세부 사항을 검색할 수 없어요.

구성 옵션의 전체 목록은 API 문서를 참고하세요.

3. 그 GitHub 조직의 사용자/팀을 Vault의 정책에 매핑합니다. 팀 이름은 "slugify"되어야 해요.

$ vault write auth/github/map/teams/dev value=dev-policy

이 예시에서, "hashicorp" 조직의 "dev" 팀 구성원이 GitHub 개인 접근 토큰으로 Vault에 인증하면 "dev-policy" 정책이 붙은 토큰을 받아요.


특정 사용자에 대한 매핑도 map/users/<user> 엔드포인트로 만들 수 있어요.

$ vault write auth/github/map/users/sethvargo value=sethvargo-policy

이 예시에서 GitHub 사용자 이름 sethvargo인 사용자는 팀 정책에 더해 sethvargo-policy 정책이 할당돼요.

API

GitHub 인증 방식은 완전한 HTTP API를 제공해요. 자세한 내용은 GitHub Auth API 문서를 참고해 주세요.

Terraform

Vault Terraform 프로바이더로 GitHub 인증 리소스를 프로그래밍 방식으로 관리할 수 있어요. 자세한 내용은 Terraform Registry 문서를 참고하세요.

더 알아보기 (Learn more)

  • GitHub 인증 방식 전체 API는 GitHub Auth API 문서를 참고하세요.
  • Vault 정책에 대한 자세한 내용은 정책 문서를 참고하세요.