サービス
サービスを利用することで、サービスユーザーを使ってサーバーを認証し、サインインすることができます。これにより、リモートユーザーへのアクセスを必要とする自動化の構築時に一時証明書のセキュリティを活用できます。
サービスの例
サービスについて簡単な例を使って説明します。CIサーバーを使って最新のビルドをアプリケーションサーバーにデプロイするとします。そのための一般的なソリューションでは、パスフレーズなしで静的SSHキーを使用し、SSH接続を使ってリモートサーバー上で必要な操作を行います。Advanced Server Accessにサービスを定義することで、静的資格情報は不要になり、管理者が意図した場合にのみCIユーザーに本番サーバーへのアクセスを許可できます。
この例をさらに深く掘り下げて、リモートホストに対するSSH接続を使ったサービス認証が使用されるようにJenkinsを構成する方法について説明します。
サーバーを設定する
開始するには、以下を構成します。
- Advanced Server Access のエージェントをインストールし、JenkinsサーバーをAdvanced Server Accessに登録します。
- サーバーにAdvanced Server Access のクライアントをインストールします。
- JenkinsユーザーのUIDを特定します。たとえば、Linuxではid -u <username>のようなコマンドを使用できます
- sft proxycommand --configを実行し、その出力をJenkinsユーザーのSSH構成ファイル(/home/jenkins/.ssh/configなど)にコピーします。Jenkinsでサービス認証をフルに活用するには、SSH接続を使用するコマンドを使って透過的に認証できるように、JenkinsユーザーのSSHプロキシコマンドを構成します。
これで、Jenkinsを使用してサーバーに対して安全に認証できるサービスを作成することができます。
サービスアカウントを作成する
-
Advanced Server Accessのダッシュボードを開きます。
- サービスユーザーを作成し、それにAPIキーを追加します。「サービスユーザー」をご覧ください。
-
Jenkinsが通信する必要があるサーバーを含むプロジェクトにサービスアカウントを割り当てます。
ユーザーをサービスアカウントにリンクする
-
Advanced Server Accessのダッシュボードで[Projects(プロジェクト)]をクリックします。
-
Jenkinsサーバーが登録されているプロジェクトを選択します。
-
[Servers(サーバー)]を選択し、サービスユーザーを使用するJenkinsサーバーを選択します。
- [Services(サービス)]をクリックしてから[Add Service(サービスを追加する)]をクリックします。
- 作成したサービスユーザーを「Service User(サービスユーザー)」ドロップダウンから選択し、Jenkins「ユーザーのUID」を入力します。
-
[Submit(送信)]をクリックします。
これにより、Advanced Server Accessが管理するリモートホストにsft ssh <server-name>コマンドでSSH接続できるようになります。