正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

GitLab OpenID ConnectでのVault認証

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed、GitLab Dedicated

Vaultは、HashiCorpが提供するシークレット管理アプリケーションです。これにより、シークレット環境変数、暗号化キー、認証トークンなどの機密情報を保存および管理できます。

VaultはIDベースのアクセスを提供します。つまり、Vaultユーザーは、優先するいくつかのクラウドプロバイダーを介して認証できます。

次のコンテンツでは、VaultユーザーがOpenID Connect認証機能を使用して、GitLabを介して自身を認証する方法について説明します。

前提要件

  1. Vaultをインストールする
  2. Vaultを実行します。

GitLabからOpenID ConnectクライアントID</IDとシークレットを取得します

Vaultに認証するためのアプリケーションIDとシークレットを取得するには、まず、GitLabアプリケーションを作成する必要があります。これを行うには、GitLabにサインインして、次の手順に従います:

  1. 左側のサイドバーで、自分のアバターを選択します。
  2. プロファイルの編集を選択します。
  3. 左側のサイドバーで、アプリケーションを選択します。
  4. アプリケーションの名前Redirect URI(リダイレクト)に入力します。
  5. OpenIDスコープを選択します。
  6. アプリケーションを保存を選択します。
  7. Client ID(クライアントID)とClient Secret(クライアントシークレット)をコピーするか、参照できるようにページを開いたままにしておきます。

OAuthプロバイダーとしてのGitLab

VaultでOpenID Connectを有効にします

OpenID Connect(OIDC)は、Vaultではデフォルトで有効になっていません。

VaultでOIDC認証プロバイダーを有効にするには、ターミナルセッションを開き、次のコマンドを実行します:

vault auth enable oidc

ターミナルに次の出力が表示されます:

Success! Enabled oidc auth method at: oidc/

OIDC設定を書き込みます

GitLabによって生成されたアプリケーションIDとシークレットをVaultに渡し、VaultがGitLabを通じて認証できるようにするには、ターミナルで次のコマンドを実行します:

vault write auth/oidc/config \
  oidc_discovery_url="https://gitlab.com" \
  oidc_client_id="<your_application_id>" \
  oidc_client_secret="<your_secret>" \
  default_role="demo" \
  bound_issuer="localhost"

<your_application_id><your_secret>を、アプリ用に生成されたアプリケーションIDとシークレットに置き換えます。

ターミナルに次の出力が表示されます:

Success! Data written to: auth/oidc/config

OIDCロール設定を書き込みます

アプリケーションの作成時にGitLabに指定したRedirect URIs(リダイレクトURI)とスコープをVaultに伝える必要があります。

ターミナルで次のコマンドを実行します:

vault write auth/oidc/role/demo - <<EOF
{
   "user_claim": "sub",
   "allowed_redirect_uris": "<your_vault_instance_redirect_uris>",
   "bound_audiences": "<your_application_id>",
   "oidc_scopes": "<openid>",
   "role_type": "oidc",
   "policies": "demo",
   "ttl": "1h",
   "bound_claims": { "groups": ["<yourGroup/yourSubgrup>"] }
}
EOF

以下の値を置き換えます:

  • <your_vault_instance_redirect_uris>を実行中のVaultインスタンスと一致するリダイレクトを使用します。
  • <your_application_id>を、アプリ用に生成されたアプリケーションIDに置き換えます。

oidc_scopesフィールドには、openidを含める必要があります。

この設定は、作成するロールの名前で保存されます。この例では、demoロールを作成しています。

GitLab.comなどのパブリックGitLabインスタンスを使用している場合は、グループまたはプロジェクトのメンバーのみがアクセスできるように、bound_claimsを指定する必要があります。そうしないと、パブリックアカウントを持つすべてのユーザーがVaultインスタンスにアクセスできてしまいます。

Vaultにサインインします

  1. Vault UIに移動します。例: http://127.0.0.1:8200/ui/vault/auth?with=oidc

  2. OIDCメソッドが選択されていない場合は、ドロップダウンリストを開いて選択します。

  3. Sign in With GitLab(GitLabでサインイン)を選択します。これにより、モーダルウィンドウが開きます:

    GitLabでVaultにサインイン

  4. VaultがGitLab経由でサインインできるようにするには、許可するを選択します。これにより、認証済みユーザーとしてVault UIにリダイレクトされます。

    GitLabと接続するためにVaultを許可する

Vault CLIを使用してサインインします(オプション)

Vault CLIを使用してVaultにサインインすることもできます。

  1. 前の例で作成したロール設定を使用してサインインするには、ターミナルで次のコマンドを実行します:

    vault login -method=oidc port=8250 role=demo

    このコマンドは次を設定します:

    • role=demo Vaultがサインインに使用する設定を認識できるようにします。
    • -method=oidc VaultがOIDC認証方法を使用するように設定します。
    • port=8250 GitLabのリダイレクト先のポートを設定します。このポート番号は、リダイレクトをリストするときにGitLabに指定されたポートと一致する必要があります。

    このコマンドを実行すると、ターミナルにリンクが表示されます。

  2. このリンクをWebブラウザで開きます:

    OIDC経由でVaultにサインイン

    ターミナルに次のように表示されます:

    Success! You are now authenticated. The token information displayed below
    is already stored in the token helper. You do NOT need to run "vault login"
    again. Future Vault requests will automatically use this token.