Vault

Vault の GitHub 認証を実務で使い切る:組織・チームベース認可の設計と実装

2026-04-19
NicheeLab編集部

Vault の GitHub 認証は、GitHub の個人アクセストークンを用いて組織メンバーであることを検証し、所属チームに応じて Vault ポリシーを付与するシンプルで強力な方法です。

試験では「どこに何を設定するか」「チームとユーザーのマッピング差」「複数組織の扱い」など基本設計の理解が問われやすいため、実務の手順と併せて整理します。

GitHub 認証の全体像

Vault の GitHub 認証は、ログイン時に提示された GitHub 個人アクセストークンを GitHub API で検証し、指定の組織メンバーであるかを確認します。ユーザーが所属するチーム名(スラッグ)と Vault 側のチームマッピングを照合し、対応するポリシー集合をトークンに付与します。

基本構成は「GitHub 組織の指定」「チーム→ポリシーのマッピング」「ユーザー固有マッピング(必要に応じて)」の三点です。1 つの認証マウントで扱える組織は 1 つが原則で、複数組織を扱う場合は認証マウントを複数用意します。

  • ログインコマンド: vault login -method=github token=<GitHub_PAT>
  • 前提: GitHub トークンは通常 read:org スコープが必要(組織/チーム情報の参照用)
  • チーム名は GitHub のチームスラッグを使用(表示名ではなく、例: platform-team)
  • 付与ポリシーは、該当する全チームとユーザーマッピングの和集合

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 をそれぞれ設定します。

  • チームスラッグは GitHub 側で一意。Vault マッピング時もスラッグを用いる
  • ポリシーは「読み取り」「書き込み」「管理」を明確に分離した命名にする(例: kv-read, kv-write)
  • 複数組織対応はマウント分割で行い、パスとポリシー名衝突に注意
  • デフォルトポリシーは最小限(できれば無し)とし、チームマッピングのみで権限を付与
方法認可粒度・適用代表的な用途主な注意点
チーム→ポリシーチーム単位(推奨)通常運用の最小権限管理チームスラッグの誤記に注意。広い権限チームへの所属は慎重に
ユーザー→ポリシー個人単位(例外対応)一時的昇格・緊急対応恒久運用は避ける。付け外しの監査ログを残す
マウント分割(組織別)組織単位複数組織を扱うインスタンス各マウントで organization を設定。ポリシー命名重複を回避

セットアップ手順(OSS GitHub / GitHub Enterprise Server)

前提として、Vault 管理者権限と GitHub の個人アクセストークン(通常は read:org スコープ)が必要です。GitHub Enterprise Server を使う場合は API の base_url を指定します。

手順は「認証マウント有効化」「organization 設定」「チームマッピング」「ログイン検証」の順です。チーム名はスラッグで指定します。

  • Vault で auth/github を有効化
  • organization と TTL/Max TTL を設定
  • auth/github/map/teams/<team-slug> にポリシーを割り当て
  • GitHub Enterprise Server は base_url=https://<ghes>/api/v3 を指定

実行例(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"

トークン運用:TTL、更新、失効の考え方

GitHub 認証で発行される Vault トークンは、設定した TTL と Max TTL に従って有効期限が管理されます。チーム離脱の即時反映はトークンに対して自動では行われないため、短めの TTL 設計と計画的な更新(または再ログイン)を運用基準にします。

オフボーディングやインシデント対応では、アクセサ単位の失効を活用します。監査要件がある環境では、更新・失効操作を含めて監査ログを必ず有効化します。

  • 短めの TTL(例: 1h)と Max TTL(例: 4h)でリスクを低減
  • 再ログインでチーム変更を確実に反映させる
  • 問題発生時は accessor で迅速に失効(ユーザーのすべての子トークンを対象にできる)

よく使う運用コマンド

# 現在のトークン情報確認
vault token lookup

# 可能であればトークンを更新(TTL 延長)
vault token renew

# アクセサを用いた失効(事前に accessor を把握しておく)
vault token revoke -accessor <ACCESSOR_ID>

監査とトラブルシュート

Vault の監査デバイスを有効化しておけば、GitHub 認証のリクエスト・レスポンス(機密はハッシュ化)が追跡できます。失敗理由の特定や、誰にどのポリシーが付与されたかの検証に有用です。

よくある失敗は、チームスラッグの誤り、read:org スコープ不足、SAML/SSO 組織でトークンが組織で承認されていない、GitHub Enterprise の base_url 未設定、対象チームへの未所属などです。

  • 監査有効化: vault audit enable file file_path=/var/log/vault_audit.log
  • エラー時に確認: organization 設定、team マッピング、ポリシー名の誤記、トークンスコープ
  • SSO 保護された組織では、トークンを組織に対して承認する必要がある

監査の最小設定例

sudo mkdir -p /var/log && sudo chown vault:vault /var/log
vault audit enable file file_path=/var/log/vault_audit.log

資格対策の要点(Associate)

試験では、設定の所在と原則が問われます。特に organization は auth/github/config に書く、チーム→ポリシーは auth/github/map/teams/<team-slug> に書く、ユーザーマッピングは例外対応という基本を外さないことが重要です。

また、1 つの GitHub 認証マウントは 1 組織に紐づく設計であり、複数組織はマウント分割で対処する点、GitHub Enterprise では base_url を API エンドポイント(/api/v3)まで含めて指定する点も頻出です。

  • チーム所属が複数の場合、付与ポリシーは和集合
  • read:org スコープがないとチーム検証に失敗し得る
  • デフォルトポリシーは最小に、チームマッピング中心で最小権限を実現
  • SSO 組織ではトークンの組織承認が必要になる場合がある

問題で確認

Associate

問題 1

Vault で GitHub 認証を使い、GitHub 組織 acme の platform-team に属するメンバーだけに secret/data/app/* の読み取り権限を与えたい。最小権限かつ推奨構成として正しいのはどれか。

  1. auth/github を有効化し、auth/github/config に organization=acme を設定。auth/github/map/teams/platform-team に kv-read ポリシーをマッピングして、ユーザーは GitHub PAT でログインする。
  2. AppRole を使い、GitHub のチーム名を role_id として設定し、users は secret_id のみでログインさせる。
  3. system レベルの設定(sys/auth)で organization=acme を設定し、すべての認証マウントに適用する。
  4. ユーザー個別に auth/github/map/users/<username> を作成し、全員分に kv-read を割り当てる。

正解: 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 も併せて設定します。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Vault

Vault のコア概念を最短距離で理解する:Secret / Auth / Policy / Token

HashiCorp Vault Associate レベルで押さえるべきコア概念(Secret Engine、Auth ...

Vault

Vault Operations Professional: 上位資格としての範囲を実務目線で押さえる

HashiCorp Vault Operations Professional(Ops Pro)の出題範囲を、Assoc...

Vault

Vaultにおけるパスベースのルーティング: マウントとAPI構造を読み解く

HashiCorp Vaultのパスベースのルーティングを、マウント設計とAPIパスの観点から整理。Associateレ...

Vault

Vault Tokens の基礎: 認証の起点となる概念

HashiCorp Vault におけるトークンの役割、種類、ライフサイクル、ポリシー連携、設計パターンをAssocia...

Vault

Vault のトークン種類を正しく使い分ける: service / batch 実践

HashiCorp Vault Associate 向けの試験対策と実務運用を両立させた、service トークンと b...

Vaultの記事一覧 (100件)
© 2026 NicheeLab All rights reserved.