サービス
サービスにより、サービスユーザーを使用してサーバーを認証してログインすることが可能になります。これにより、リモートユーザーへのアクセスが必要な自動化を構築している場合に、一時的な証明書によるセキュリティを活用できます。
サービスの例
簡単な例を用いてサービスについて調べましょう。CIサーバーを使用して、最新のビルドをアプリケーションサーバーに展開すると仮定しましょう。これに対する一般的なソリューションは、パスフレーズなしで静的SSHキーを使用し、SSHに依存してリモートサーバー上で必要な操作を実行することです。アドバンストサーバーアクセスでサービスを定義することで、静的資格情報を排除して、ユーザーが意図した場合にのみCIユーザーがプロダクションにのみアクセスできるよう保証することが可能になります。
この例をさらに深く掘り下げて、リモートホストへのSSH接続でサービス認証を使用するようJenkinsを構成する方法を調べましょう。
開始するには、最初に次の基本要件を構成します。
- アドバンストサーバーアクセスのエージェントをインストールし、サーバーをアドバンストサーバーアクセスに登録します。
- サーバーにアドバンストサーバーアクセスのクライアントをインストールします。
- JenkinsユーザーのUIDを特定します(例えばLinuxの場合、 id -u <username>と同様のコマンドが使用できます)。
- サービスユーザーを作成し、それにAPIキーを追加します。
- アクセスするサーバー上でサービスユーザーがプロビジョニングされていることを確認してください。
これで、Jenkinsを使用してサーバーに対して安全に認証できるサービスを作成することができます。
サービスを作成するには、Jenkinsが実行している、以前に特定したソースサーバーのサーバー詳細ページにある[Services (サービス)]タブに移動します。
ここには、このサーバーの既存のサービスのリストと、新しいサービスを作成するためのボタンが表示されます。このボタンをクリックすると、認証するサービスユーザーおよびJenkinsユーザーのUIDを選択するようプロンプトが表示されます。
この最後の手順は、登録済みクライアントを予期する代わりに、サービス認証を使用するようsftを構成することです。例えば、Jenkinsサーバーで実行するには次のコマンドを実行します: sft config service_auth.enable true
これで、sft ssh <server-name>コマンドを使用して、アドバンストサーバーアクセスに管理されているリモートホストにSSHで接続できるようになります。
Jenkinsでサービス認証をフルに活用するには、SSHに依存するコマンドを使用しながら透過的に認証できるよう、JenkinsユーザーのSSHプロクシコマンドを構成する必要があります。これを行うには、sft proxycommand --configを実行し、この出力をJenkinsユーザーのSSH構成ファイル(例えば /home/jenkins/.ssh/config)にコピーします。