Vault の GitHub 認証は、GitHub の個人アクセストークンを用いて組織メンバーであることを検証し、所属チームに応じて Vault ポリシーを付与するシンプルで強力な方法です。
試験では「どこに何を設定するか」「チームとユーザーのマッピング差」「複数組織の扱い」など基本設計の理解が問われやすいため、実務の手順と併せて整理します。
Vault の GitHub 認証は、ログイン時に提示された GitHub 個人アクセストークンを GitHub API で検証し、指定の組織メンバーであるかを確認します。ユーザーが所属するチーム名(スラッグ)と Vault 側のチームマッピングを照合し、対応するポリシー集合をトークンに付与します。
基本構成は「GitHub 組織の指定」「チーム→ポリシーのマッピング」「ユーザー固有マッピング(必要に応じて)」の三点です。1 つの認証マウントで扱える組織は 1 つが原則で、複数組織を扱う場合は認証マウントを複数用意します。
GitHub 認証のリクエストフロー
Developer Vault (auth/github) GitHub API
| vault login -method=github token=ghp_xxx | |
|------------------------------------------->| verify token/org |
| |----------------------->|
| | team membership |
| |<-----------------------|
|<--------------------------- Vault token (policies from team maps) |
最小権限を実現するため、原則はチーム単位でポリシーを割り当てます。ユーザー個別のマッピングは例外対応(緊急時や一時的な昇格)に限定し、恒常運用は避けます。これにより GitHub 側のチーム管理がそのまま権限管理となり、監査容易性が高まります。
同一ユーザーが複数チームに所属する場合、付与されるポリシーは和集合になります。無関係な広範ポリシーを持つチームに安易に所属させない運用が重要です。複数組織を扱う必要がある場合は、認証マウントを分けて organization をそれぞれ設定します。
| 方法 | 認可粒度・適用 | 代表的な用途 | 主な注意点 |
|---|---|---|---|
| チーム→ポリシー | チーム単位(推奨) | 通常運用の最小権限管理 | チームスラッグの誤記に注意。広い権限チームへの所属は慎重に |
| ユーザー→ポリシー | 個人単位(例外対応) | 一時的昇格・緊急対応 | 恒久運用は避ける。付け外しの監査ログを残す |
| マウント分割(組織別) | 組織単位 | 複数組織を扱うインスタンス | 各マウントで organization を設定。ポリシー命名重複を回避 |
前提として、Vault 管理者権限と GitHub の個人アクセストークン(通常は read:org スコープ)が必要です。GitHub Enterprise Server を使う場合は API の base_url を指定します。
手順は「認証マウント有効化」「organization 設定」「チームマッピング」「ログイン検証」の順です。チーム名はスラッグで指定します。
実行例(CLI)
# 1) GitHub 認証マウントを有効化
vault auth enable github
# 2) 組織とトークン TTL を設定(OSS GitHub)
vault write auth/github/config \
organization="acme" \
ttl="1h" \
max_ttl="4h"
# 3) 参照専用ポリシーを用意(例)
vault policy write kv-read - <<'HCL'
path "secret/data/app/*" {
capabilities = ["read", "list"]
}
HCL
# 4) チームスラッグにポリシーをマッピング(複数可、カンマ区切り)
# 注意: GitHub のチーム「Platform Team」のスラッグが platform-team である想定
vault write auth/github/map/teams/platform-team value="kv-read,default"
# 5) ログイン検証(GitHub PAT は read:org を付与し、対象組織で SSO 認可が必要な場合は事前に承認)
export GITHUB_TOKEN="ghp_xxx..."
vault login -method=github token="$GITHUB_TOKEN"
# 6) GitHub Enterprise Server を使う場合の設定例
vault write auth/github/config \
organization="acme" \
base_url="https://github.company.com/api/v3" \
ttl="1h" \
max_ttl="4h"GitHub 認証で発行される Vault トークンは、設定した TTL と Max TTL に従って有効期限が管理されます。チーム離脱の即時反映はトークンに対して自動では行われないため、短めの TTL 設計と計画的な更新(または再ログイン)を運用基準にします。
オフボーディングやインシデント対応では、アクセサ単位の失効を活用します。監査要件がある環境では、更新・失効操作を含めて監査ログを必ず有効化します。
よく使う運用コマンド
# 現在のトークン情報確認
vault token lookup
# 可能であればトークンを更新(TTL 延長)
vault token renew
# アクセサを用いた失効(事前に accessor を把握しておく)
vault token revoke -accessor <ACCESSOR_ID>Vault の監査デバイスを有効化しておけば、GitHub 認証のリクエスト・レスポンス(機密はハッシュ化)が追跡できます。失敗理由の特定や、誰にどのポリシーが付与されたかの検証に有用です。
よくある失敗は、チームスラッグの誤り、read:org スコープ不足、SAML/SSO 組織でトークンが組織で承認されていない、GitHub Enterprise の base_url 未設定、対象チームへの未所属などです。
監査の最小設定例
sudo mkdir -p /var/log && sudo chown vault:vault /var/log
vault audit enable file file_path=/var/log/vault_audit.log試験では、設定の所在と原則が問われます。特に organization は auth/github/config に書く、チーム→ポリシーは auth/github/map/teams/<team-slug> に書く、ユーザーマッピングは例外対応という基本を外さないことが重要です。
また、1 つの GitHub 認証マウントは 1 組織に紐づく設計であり、複数組織はマウント分割で対処する点、GitHub Enterprise では base_url を API エンドポイント(/api/v3)まで含めて指定する点も頻出です。
Associate
問題 1
Vault で GitHub 認証を使い、GitHub 組織 acme の platform-team に属するメンバーだけに secret/data/app/* の読み取り権限を与えたい。最小権限かつ推奨構成として正しいのはどれか。
正解: A
GitHub 認証は auth/github/config に organization を設定し、チーム→ポリシーのマッピングは auth/github/map/teams/<team-slug> に行うのが基本です。AppRole は別の認証方式であり、sys/auth に organization を設定することはできません。ユーザーマッピングの一括運用は最小権限や運用効率の観点から非推奨です。
GitHub トークンに必要なスコープは?
通常は read:org が必要です。組織やチーム情報の参照に使われます。組織が SAML/SSO で保護されている場合、トークンを当該組織に対して承認する必要があります。
複数の GitHub 組織を 1 つの Vault で扱えますか?
1 つの GitHub 認証マウントは 1 組織に紐づきます。複数組織を扱う場合は、auth/github を組織ごとに別パスで有効化し、それぞれに organization とマッピングを設定してください。
GitHub Enterprise Server を使っています。何を設定すべきですか?
auth/github/config で base_url に https://<ghes>/api/v3 を指定します。例: base_url=https://github.company.com/api/v3。organization と TTL/Max TTL も併せて設定します。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Vault のコア概念を最短距離で理解する:Secret / Auth / Policy / Token
HashiCorp Vault Associate レベルで押さえるべきコア概念(Secret Engine、Auth ...
Vault Operations Professional: 上位資格としての範囲を実務目線で押さえる
HashiCorp Vault Operations Professional(Ops Pro)の出題範囲を、Assoc...
Vaultにおけるパスベースのルーティング: マウントとAPI構造を読み解く
HashiCorp Vaultのパスベースのルーティングを、マウント設計とAPIパスの観点から整理。Associateレ...
Vault Tokens の基礎: 認証の起点となる概念
HashiCorp Vault におけるトークンの役割、種類、ライフサイクル、ポリシー連携、設計パターンをAssocia...
Vault のトークン種類を正しく使い分ける: service / batch 実践
HashiCorp Vault Associate 向けの試験対策と実務運用を両立させた、service トークンと b...