Keeper SSO Connect では、SSO (シングルサインオン) を利用するユーザーがはじめて利用するデバイスおよびブラウザでログインを試みると、利用者または管理者による承認を求められます。 Keeper Automator サービスを利用することでこの承認プロセスを自動化することができます。
【ご案内】Keeper Automator サービスを ZUNDA が提供する「Keeper Automator Hosting」の提供を開始しました。ぜひご検討ください。 |
Keeper Security 社による以下の記事もご確認ください。
Keeper Automator Service - SSO Connect Cloud
Keeper Automator サービスの実行環境
Keeper Automator サービスを実行するには、下記条件の実行環境が必要です。
- 2GB以上のメモリを搭載した、Linux, Windows, Macの実行環境
- Oracle または OpenJDK による Java 11
- TCP のポート番号 443番で、インターネットから着信接続できる環境
- 公開DNSエントリでKeeper Automator Service が稼働するサーバを登録できること。 例えば automator.company.com といったホスト名が登録できることなど。
- 上記の公開DNSエントリ(ホスト名)を CN (Common Name) とした.pfx 形式のTLS証明書
また Keeper Automator サービスをセットアップするためには、マスターパスワードが登録されたユーザが必要です。 SSO認証だけが利用できるユーザですと、後述の Keeper Commander が利用できません。
本記事の執筆にあたっては、Linuxの実行環境としてAmazon Web Servicesの EC2 インスタンスを用い、Java 11 には Amazon Linuxから利用できる amazon-linux-extras の java-openjdk11 を利用しています。
AWS EC2の起動と設定
AWS EC2インスタンスは、本記事執筆にあたってインスタンスタイプは t2.micro を用いて、AMIには Amazon Linux を用いました。
該当EC2インスタンスのセキュリティグループでは、下記のIncoming Portの設定を行なっています。
- TCP 22番 (SSH): 接続元はお客様のご利用環境に合わせてIPアドレスの範囲を指定してください。
- TCP 443番: Keeper Automator の待ち受けに利用します。接続元IPアドレスはご利用されているKeeperのデータセンタの場所によって異なります。
- TCP 80番 (HTTP): Let's Encrypt のホスト名確認に用います。
TCP 443の接続元は Keeperのマニュアルによると下記の組み合わせとなります。
- 米国リージョン:
- 54.208.20.102/32
- 34.203.159.189/32
- 欧州リージョン:
- 52.210.163.45/32
- 54.246.185.95/32
- 豪州リージョン:
- 3.106.40.41/32
- 54.206.208.132/32
- カナダリージョン
- 35.182.216.11/32
- 15.223.136.134/32
- 日本リージョン
- 54.150.11.204/32
- 52.68.53.105/32
Keeper Commander のインストールとログイン
Keeper Automator サービスを設定するにはKeeperをCLIで設定できるKeeper Commander が必要です。Keeper Commander を利用するには、下記のものが必要です。
- Windows, Mac, Linux などの実行環境。 今回は Amazon Linux を例にします。
※ Keeper Commander は手元の管理用PCなどにインストールしても構いません。 - マスターパスワードが設定された管理者権限のあるユーザID。
Keeper Commander は、Linuxでしたら Python3 の pip3 コマンドを用いてインストールできます。 下記のコマンドを実行してインストールしてください。
pip3 install keepercommander
Keeper Commander をShellモードで実行するには、 keeper shell とコマンドを入力してください。
keeper shell
keeper shell を実行するカレントディレクトリに、 keeper commander の設定ファイルである config.json を作成します。後の作業のときに、この config.json が必要になるため、実行したカレントディレクトリは覚えやすい場所にしてください。
Shellで起動後には、利用中のKeeperのデータセンターの地域と、ログインするIDを入力します。
server US
login (お客様のユーザID)
Keeper Commander の実行環境のデバイス承認が必要になります。下記例では電子メールによる確認の email_send を行っております。
- 電子メールによるデバイス承認を行うには、email_send を選択します。
- その後にユーザ宛に届いたメールの Verification Code の数値を email_code=XXXX と入力します。
ログインができると、下記のような表示になります。
注意: ログインするユーザは、管理者権限を持ち、マスターパスワードが設定されているユーザのみとなります。SSOだけでログインできるユーザの場合は、マスターパスワードが設定されていないため、Keeper Commander をご利用いただけません。
Keeper Commanderの実行環境は、後ほど Keeper Automator サービスを登録するときに利用します。
Keeper Commander の shell を終了するには quit と入力してください。
Keeper Automator サービスの実行環境作成
Keeper Automator サービスの実行ユーザ作成
Keeper Automator サービスのプログラムを実行するユーザを作成します。
sudo useradd keeper
Keeper Automator サービスのダウンロード
Keeper Automator サービスのLinuxサーバで動かすプログラムをダウンロードします。
ダウンロードするユーザは、先ほど作成した keeper で、/home/keeper/automator/ に Keeper Automator Service を展開します。
# ユーザ keeper で shell を実行します。
sudo su - keeper
# ディレクトリ作成します。
mkdir ~/automator
# ディレクトリ内でダウンロードと展開します。
cd ~/automator/
curl -O https://keepersecurity.com/automator/keeper-automator.zip
unzip keeper-automator.zip
# ユーザ keeper での作業が終わりましたら、Shellを終了してください。
exit
JDK のインストール
sudo amazon-linux-extras install java-openjdk11
$ java -version
openjdk version "11.0.12" 2021-07-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7-LTS, mixed mode, sharing)
Route53 での公開DNSの登録
先の手順で立ち上げたEC2インスタンスを、インターネットからの着信接続ができるようにするために、DNSの公開ゾーンにレコードを作成します。
ここでは Amazon Route 53 を利用し、任意のホスト名でインスタンスに接続できるようにレコードを作成しています。(他社サービスでも構いません)
Let's Encrypt でのTLS(SSL)証明書作成
本解説では、TLS証明書をLet's Encryptで取得する方法を紹介します。 他の方法で取得されたTLS証明書もご利用いただけます。
Let's encrypt を使うのに必要な certbot を Amazon Linux 2 にインストールするには、下記コマンドを実行してください。
sudo amazon-linux-extras install -y epel
sudo yum install certbot
certbot のインストールが終わりましたら、下記のように certbot を root ユーザで実行してください。 利用するホスト名 の部分には、先の段階でDNS公開ゾーンに登録したホスト名をコマンド内で指定してください。
sudo certbot certonly -d (利用するホスト名)
- certbot の初回起動時には、重要な更新やセキュリティに関する通知を受け取るメールアドレスの入力と、 Term of Service への同意を求められます。
- ACME CA の認証方法では 「1: Spin up a temporary webserver (standalone)」を選択してください。
Certbot を実行した後はPEM形式で秘密鍵と証明書が作成されています。これを opensslコマンドを用いて pfx 形式に変換します。
# 秘密鍵・証明書が作成されたディレクトリには、Rootで入ります。
sudo su -
cd /etc/letsencrypt/live/(利用するホスト名)/
# pfx形式で作成します。
openssl pkcs12 -export -out /home/keeper/automator/settings/ssl_certificate.pfx \
-inkey privkey.pem -in fullchain.pem -passout pass:
# オーナーを変更します
sudo chown keeper ~keeper/automator/settings/ssl_certificate.pfx
# ユーザ root での作業が終わりましたら、Shellを終了してください。
exit
作成する pfx 形式のファイルでは、パスワードを空で作成しています。 パスワードを設定したい場合は -passout pass: の部分を変更してください。
Keeper Automator サービスの設定
Keeper Automator サービスの設定は、ファイル /home/keeper/automator/settings/keeper.properties に記述します。
ファイルの編集は、ユーザ keeper または root で行ってください。
ファイル内には、下記の内容を記述します
- ssl_certificate_file : pfx 形式のTLS(SSL)証明書の置いてあるパスを書きます。パスは keeper-automator.jar の置いてある /home/keeper/automator/ からの相対パスで記述できます。
- automator_host : Keeper Automator サービスを登録した公開DNSのホスト名を記述します。
ファイルの中身は下記のような内容になります。
# Settings needed for Keeper Automator for device approval
ssl_certificate_file=settings/ssl_certificate.pfx
ssl_certificate_file_password=
ssl_certificate_key_password=
automator_host=(利用するホスト名)
automator_port=8089
disable_sni_check=false
設定が完了しましたら、ユーザ keeper で下記コマンドで実行してみてください。
sudo su - keeper
cd /home/keeper/automator
java -jar keeper-automator.jar &
下記のような出力が出れば、起動しています。
INFO 2021-11-08 02:53:42,940 com.keepersecurity.automator.deviceapproval.AutomatorServer.printServerAvailable Keeper Automator 1.0.1 listening at https://(利用するホスト名):8089
起動できましたら、Keeper Automator サービスに接続できるか、Curlなどを用いて確認してください。「status!」と日付がレスポンスに入っていれば成功です。
curl -v https://(利用するホスト名):8089/api/rest/status
この後に自動起動の設定をするため、先で動かした Keeper Automator サービスを終了させてください。
# 先ほどの起動時と同じShellを使っているため、 % でバックグラウンドジョブを終了させてください。
kill %1
# または、先ほどの起動時とは違うシェルな場合は、該当のプロセスを探して終了させてください。
ps ax | grep keeper-automator.ja
kill (プロセス番号)
構築したKeeper Automator サービスをKeeper に登録する。
Keeperで管理者によるデバイス承認時に、ここまでの手順でLinuxの動くEC2に構築した Keeper Automator サービスを呼び出して自動承認するようにするため、Keeperに作成したKeeper Automator サービスを登録します。
登録には keeper Commander を用います。 keeper Commander を利用するには、マスターパスワードを設定したユーザが必要です。
Keeper commanderを実行します。
keeper shell
- Keeper Commander の設定内容が含まれている config.json は、前回 commander を実行したディレクトリに保存されています。
- config.json は特に指定がない場合は、コマンドを実行しているカレントディレクトリのものを読み込むため、 keeper コマンドを実行するカレントディレクトリをお気をつけください。
ログインパスワードなどを聞いてくるので、入力してログインしてください。
まずは automator create を実行します。
- --name の名前のところは任意の名前を設定してください。
- --node にある node名は、Keeperの管理者コンソールから選択できるノード名になります。
今回は --name に ksbot20211108、 --node に Default を用います。
automator create --name=ksbot20211108 --node Default
実行すると、下記のように Automator ID が出てきます。この後の設定で Automator ID を利用します。
次に Keeper Automator サービスのURLを設定します。下記のようなコマンドで Automator IDに対する、Keeper Automator サービスのサーバのホスト名を設定します。 ホスト名は公開DNSで登録したホスト名になります。
automator edit --url https://(利用するホスト名):8089 35???????????23
そして、下記の順に setup, init, enable と進めていきます。
automator setup 35???????????23
automator init 35???????????23
automator enable 35???????????23
あとは、新しいデバイスでの承認が自動化されるかの確認をしてください。今までKeeperのユーザが使っていなかったデバイスでKeeperの利用開始のログインなどを始めると、デバイス承認が必要になります。
証明書自動更新 と Keeper Automator サービスの自動起動
keeper Automator サービスは EC2 のInstanceが再起動するたびに起動しなければなりません。 また Let's encrypt のTLS証明書の有効期間は標準で90日で、定期的な更新が必要です。 ここでは Keeper Automator サービスの自動起動と、Certbot による Let's encrypt のTLS証明書を自動化するためのスクリプト類の配置を紹介します。
Keeper Automator サービスの自動起動
Keeper Automator サービスを Amazon Linux 2 で自動起動するには systemd への service 登録が必要です。
下記内容のファイルを rootユーザにて /etc/systemd/system/keeper-automator.service に書き込んでください。
[Unit]
Description = Keeper Automator Service installed on /home/keeper/automator
[Service]
User = keeper
WorkingDirectory = /home/keeper/automator
ExecStart = /usr/bin/java -jar keeper-automator.jar
Restart = on-abort
Type = simple
[Install]
WantedBy = multi-user.target
ファイルの記述が終わりましたら、下記コマンドを実行して確認してください。
sudo systemctl daemon-reload
sudo systemctl status keeper-automator.service
確認ができましたら、下記コマンドで有効化 (enable) と起動 (start) してください。
sudo systemctl enable keeper-automator.service
sudo systemctl start keeper-automator.service
Keeper Automator サービスの再登録
Keeper Automator サービスのプロセスを再起動したり、Keeper Automator サービスのプログラムをアップデートなどをしたあとには、Keeper Automator サービスの再登録が必要です。
Keeper Automator サービスの再登録には、keeper commander の keeper shell を用います。
$ keeper shell
まずは再登録する Automator ID を特定するために、automator list コマンドで特定してください。
automator list
一番左のIDの列に表示されるものが、Automator IDです。
上記手順で発見できた Automator ID に対して、再度 setup と init を実施してください。
automator setup (Automator ID)
automator init (Automator ID)
Let's encrypt 証明書の更新
Let's Encrypt から発行されたTLS証明書には有効期間があり、継続して使用するには証明書の更新が必要です。本文書執筆時の2022年4月では有効期間は90日で、有効期間満了の30日前から証明書を更新 (renew) できます。よってTLS証明書の発行から61日から90日の間で証明書の更新が必要です。
また、TLS証明書の変更時には Keeper Automator サービスのサーバプロセスでのTLS証明書の再読み込みが必要です。
これらの更新処理を実現するため、下記の役割を持った処理を、Shellスクリプトとcronを用いて実行します。
- Certbotによる Let's Encypt 証明書の更新
- Keeper Automator プロセスの再起動
Certbotによる証明書更新は証明書発行から61日から90日の間に行えます。発行から60日までに証明書更新のコマンドを実行しても証明書更新は行わずに、コマンドは正常終了します。
ご注意: Keeper Automator プロセスを再起動すると、 Keeper Commander による automator の setup と init が再度必要になります。 そのため、この更新操作の自動化は難しいため、手動で行ってください。
証明書の更新とKeeper Automator プロセスの再起動を行うため、下記のような Bash スクリプトを /home/keeper/automator/update-certbot.sh に配置します。
#!/bin/bash
set -e
set -x
# Keeper automator で利用しているホスト名を cert_domain に設定します。
cert_domain="(利用するホスト名)"
cd "/etc/letsencrypt/live/$cert_domain"
certbot renew
openssl pkcs12 -export -out /home/keeper/automator/settings/ssl_certificate.pfx \
-inkey privkey.pem -in fullchain.pem -passout pass:
systemctl restart keeper-automator.service
update-certbot.sh に実行権限を付けるため、下記のコマンドを実行します。
chmod +x /home/keeper/automator/update-certbot.sh
update-certbot.sh の動作を確認するために、下記のようなコマンドで root ユーザ権限で実行してください。
sudo /home/keeper/automator/update-certbot.sh
update-certbot.sh の動作確認の段階では、Let's EncryptのTLS証明書の有効期限が残り30日になっていないため証明書の更新は行われずに、Keeper Automator サービスのサーバプロセスだけが再起動する場合もあります。これは異常ではありません。
Keeper Automator プロセスを再起動した後には、前述しました方法で keeper shell で該当の Automator ID の setup と init を実施してください。
Keeper Automator サービスの停止と削除
Keeper Automator サービスを停止や削除をする場合には、 Keeper commander のコマンドで停止できます。
停止や削除対象の Automator ID を特定するために、automator list コマンドで特定してください。
automator list
一番左のIDの列に表示されるものが、Automator IDです。
Keeper Automator サービスの停止
automator disable (Automator ID)
Automator ID は、先の手順で確認したIDをご利用ください。 この動作により Keeper Automator サービスの利用が停止します。 再開するときには automator enable コマンドで再開してください。
Keeper Automator サービスの削除
Automator サービスの削除は、Keeper commander の automator delete コマンドを用いてください。
automator delete (Automator ID)
Automator ID は、先の手順で確認したIDをご利用ください。 削除すると Keeper Automator サービスの登録が削除されます。再度登録する場合は、automator create コマンドからの手順を再度行ってください。