サービス
サービスを利用することで、サービスユーザーを使ってサーバーを認証し、ログインすることができます。これにより、リモートユーザーへのアクセスを必要とする自動化の構築時に一時証明書のセキュリティを活用できます。
サービスの例
サービスについて簡単な例を使って説明します。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 ProxyCommandを構成します。これを行うには、sft proxycommand --configを実行し、その出力をJenkinsユーザーのSSH構成ファイル(/home/jenkins/.ssh/configなど)にコピーします。