1PasswordでGitLab CLIを安全に認証する

1Passwordマニュアル|GitLabシェルプラグインを活用し、1PasswordでGitLab CLIの認証を安全かつ簡単に行う方法をご紹介します。

1PasswordでGitLab CLIを安全に認証する

GitLabシェルプラグインを使うと、1Passwordを使用してGitLab CLIを安全に認証できます。資格情報をプレーンテキストでSaveするのではなく、指紋、Apple Watch、またはシステム認証を使用してSaveします。

指示に従ってデフォルトの資格情報を設定し、plugins.shファイルを取得すると、生体認証を使用して GitLab CLI を認証するように求められます。

https://developer.1password.com/videos/gitlab.mp4

必要条件

  1. MacまたはLinux用の 1Password をインストールしてサインインします。

  2. 1Password CLI 2.9.0 以降をインストールします。 1Password CLI を既にインストールしている場合は、インストールを更新する方法を確認してください。

  3. GitLab CLIをインストールします。

次のシェルがサポートされています:

  • Bash

  • Zsh

  • fish

ステップ 1: デフォルトの資格情報

GitLabシェル プラグインを使い始めるには:

  • ①GitLabプラグインで使う 1Password アカウントにサインインします。

  • $ op signin

  • ②特定のディレクトリでのみプラグインを設定したい場合は、そのディレクトリに変更します。

  • ③プラグインを設定するには、次のコマンドを実行します。

  • $ op plugin init glab

GitLab の資格情報を 1Passwordにインポートするか、資格情報がSaveされている保存済みの 1Password 項目を選択して、資格情報をいつ使うかを設定するように求められます。

op plugin init コマンドと、アイテムをインポートまたは選択するためのオプションを表示するターミナル ウィンドウ。

ステップ 1.1: アイテムをインポートまたは選択する

新しいアイテムをインポートする

GitLab の認証情報を 1PasswordにまだSaveしていない場合は、 Import into 1Passwordを選択します。認証情報を入力し、新しい 1Password アイテムの名前を選択して、Save先の保管庫を選択します。

1Password がローカル開発環境で資格情報を検出すると、自動的にインポートするように求められます。

トークン、アイテム名、ボールトなど、アイテムをインポートするために使用できるフィールドを表示するターミナル ウィンドウ。

保存済みのアイテムを選択

既にGitLab の資格情報を 1PasswordにSaveしている場合は、Search in 1Passwordを選択します。

関連するアイテムとそれらがSaveされている保管庫のリストが表示されます。資格情報が表示されない場合は、Expand searchを選択して、アカウント内の全てのアイテムを参照します。

1Password アカウント内の既存のアイテムを検索するオプションが表示されたターミナル ウィンドウ。

ステップ 1.2: デフォルトの資格情報スコープを設定する

資格情報を選択またはインポートすると、 GitLab を認証するためにその項目をいつ使うかを設定するように求められます。

資格情報をいつ使用するかを設定するためのオプションを表示するターミナル ウィンドウ。
  • "Prompt me for each new terminal session"を選択すると、現在のターミナル セッションの期間中のみ資格情報が設定されます。ターミナルを終了すると、デフォルトは削除されます。

  • "Use automatically when in this directory or subdirectories"を選択すると、他のディレクトリ固有のデフォルトが設定されていない限り、現在のディレクトリとその全てのサブディレクトリで資格情報がデフォルトになります。ターミナル セッションのデフォルトは、ディレクトリ固有のデフォルトよりも優先されます。

  • "Use as global default on my system"を選択すると、資格情報が全てのターミナル セッションとディレクトリのデフォルトとして設定されます。ディレクトリ固有のデフォルトは、グローバル デフォルトよりも優先されます。

オプション: セルフホストインスタンスを使う場合は、ホストを設定します

セルフホスト型の GitLab インスタンスを使う場合は、前の手順で構成した GitLab 項目にホスト URL を追加する必要があります。Hostシェル プラグインで使用できるように、タイトルの付いたカスタム テキスト フィールドに URL をSaveします。

  • 1Password CLI

1Password CLI を使用してフィールドを追加するには:

  • Bash、Zsh、sh、フィッシュ

$ op item edit <item-name> \

'Host[text]=https://gitlab.yourdomain.com'

  • PowerShell

$ op item edit <item-name> `

'Host[text]=https://gitlab.yourdomain.com'

  • 1Passwordデスクトップアプリ

1Password デスクトップ アプリを使用してフィールドを追加するには:

  1. 1Password アプリを開いてロックを解除します。

  2. 前の手順で設定した項目に移動し、Editを選択します。

  3. カスタム テキスト フィールドを追加するには、Add More > Textを選択します。

  4. デフォルトのフィールド名”text”を選択し、名前をHost に変更します。

  5. フィールド値としてGitLabホストを入力します。例:https://gitlab.yourdomain.com

  6. Saveを選択します。

ステップ2: plugins.shファイルをsource化

プラグインを使用できるようにするには、plugins.shファイルをソース化します。例:

$ source ~/.config/op/plugins.sh

フォルダーのファイル パスは、構成ディレクトリopによって異なる場合があります。op plugin initは正しいファイル パスを含むソース コマンドを出力します。

シェル プラグインを初めてインストールする場合は、現在のターミナル セッションを超えてプラグインを永続化するために、RC ファイルまたはシェル プロファイルに source コマンドを追加する必要があります。例:

  • Bash

$ echo "source ~/.config/op/plugins.sh" >> ~/.bashrc && source ~/.bashrc

  • Zsh

$ echo "source ~/.config/op/plugins.sh" >> ~/.zshrc && source ~/.zshrc

  • fish

$ echo "source ~/.config/op/plugins.sh" >> ~/.config/fish/config.fish && source ~/.config/fish/config.fish

ステップ3: CLIを使う

次回GitLabでコマンドを入力するときに、生体認証またはシステム認証による認証を求めるメッセージが表示されます。

1Password CLI 生体認証ロック解除を使用して認証されている CLI。

ステップ4: インポートした資格情報をdiskから削除

GitLab の資格情報を 1PasswordにSaveしたら、以前にディスクにSaveした全てのローカル コピーを削除できます。

次のステップ

1Password Shell プラグインは60 を超えるサードパーティの CLI をサポートしています。サポートされている CLI のリストを表示するには:

$ op plugin list

別のプラグインを選択して開始するには:

$ op plugin init

シームレスなコンテキスト切り替えのためにシェル プラグインを使うには、複数の環境または複数のアカウントでプラグインを構成する方法を学習します。

ヘルプを受ける

設定を検査する

現在のGitLab構成を検査するには:

$ op plugin inspect glab

1Password CLI は、 GitLabで使うために設定した資格情報とそのデフォルトのスコープのリスト、およびGitLab用に設定されたエイリアスのリストを返します。

コマンド op plugin examine の結果を表示するターミナル ウィンドウ。

資格情報を消去する

GitLabで使用される資格情報をリセットするには:

$ op plugin clear glab

次の優先順位に従って、一度に 1 つの構成をクリアできます。

  • ①ターミナルセッションのデフォルト

  • ②ディレクトリのデフォルト、現在のディレクトリから$HOME

  • ③グローバルデフォルト

例えば、ディレクトリ内にいて$HOME/projects/awesomeProject、ターミナル セッションのデフォルト、$HOMEおよびのディレクトリのデフォルト$HOME/projects/awesomeProject、およびグローバル デフォルトの資格情報が構成されている場合、全てのデフォルトをクリアするにはop plugin clear glab を 4 回実行する必要があります。

グローバル デフォルト資格情報、ターミナル セッション デフォルト、および現在のディレクトリのデフォルトを同時にクリアするには、op plugin clear glab --all を実行します。

参照

1Password は、プラグイン コマンドに必要な資格情報を 1Password アカウントから直接環境変数に挿入することで、GitLabで認証します。

新しい項目をインポートするためにop pluginを使うのではなく、手動でGitLab の資格情報を 1PasswordにSaveした場合は、フィールド名が以下の表と一致していることを確認してください。

アイテムに必要な名前のフィールドが含まれていない場合は、保存済みのフィールドのいずれかの名前を変更するように求められます。

1Passwordフィールド名

環境変数

Token

GITLAB_TOKEN

Host (optional; required for self-hosted instances)

GITLAB_HOST

API Host (optional)

GITLAB_API_HOST

Learn more