見出し画像

Keeperのログイン時に自動承認!

おはようございます、いつきです。
気づいたらKeeperのAzure Functionsの利用が非推奨になっていたので、推奨される形式で構築しなおしていきます。

推奨される方法はこちら。

実現したいことの整理と結果

  • 低コスト:月数十円が、月3万~5万円程度に

  • 自動デバイス承認:OK

  • ユーザーのグループへの自動割り当て:SCIM側で対応

ユーザーのグループへの自動割り当ては、Azure Functionsではなく、SCIM側でできるようになっていそう。元々だっけ…?
Azure AD Provisioning with SCIM - Enterprise Guide (keeper.io)

必要な環境と、注意点

Azure Container(推奨)、Docker Compose、Windows サービスに展開できます。
今回は推奨されているAzure Containerに展開していこうと思います。

ちなみに、実装する上で注意が必要なのは以下の3点です。

  • 証明書はpfx形式で発行すること

  • DNSレコードに、SSL証明書で登録したドメインの名前解決として、Azureで発行されたパブリックIPを登録すること

  • SSL証明書やSSL証明書のパスワードファイルの名前は変更しないこと

1)SSL証明書の作成

前回の記事で作成したZeroSSLのSSL証明書を利用していきます。無償の範囲だと90日期限なので、定期的な更新は必要になることだけ覚悟して進めます。

ちなみに、更新時は14日前にメールが届き、そこから更新するだけみたいです。メールを見逃さないこと、カレンダーに証明書の失効日の予定を登録しておくなどして更新漏れは防ぎましょう。

また、CRT形式の証明書ではなく、PKCS#12 形式の証明書が必要になるため、事前にOpenSSLコマンドなどを使って、PKCS#12 形式の証明書を作成しておいてください。

openssl pkcs12 -export -inkey <秘密鍵ファイル名>.key -certfile <中間CA証明書ファイル名>.crt -in <証明書ファイル名>.crt -out <出力するPKCS#12ファイル名> 

2)Azure App GateWayでKeeper Automatorをデプロイ

次に、Azure Application GateWayを使い、Keeper Automatorをデプロイしていきます。Azure Funcitonsの代わりに、Azure App GateWayを使っているような感じっぽいです。


ファイル共有は新規に作成します。

az storage share create --account-name <ストレージアカウント名> --name <共有名>

このコマンドは、Azure Storageファイル共有を作成するためのものです。各オプションの値は任意のものに変更してください。

  • --account-name: ストレージアカウント名

  • --name: 共有名


次に、仮想ネットワークの作成をしていきます。

az network vnet create --address-prefixes 10.100.0.0/16 --name <仮想ネットワーク名> --resource-group <リソースグループ名> --subnet-name <サブネット名> --subnet-prefixes 10.100.2.0/24
  • --address-prefixes: 仮想ネットワークのアドレスプレフィックス

  • --name: 仮想ネットワーク名

  • --resource-group: リソースグループ名

  • --subnet-name: サブネット名

  • --subnet-prefixes: サブネットのアドレスプレフィックス

仮想ネットワークのアドレスは他と被らないように、必要であれば設定を変更してください。


次に、サービスエンドポイントで仮想ネットワークを有効にします。

az network vnet subnet update -g <リソースグループ名> -n <サブネット名> --vnet-name <仮想ネットワーク名> --service-endpoints Microsoft.Storage --delegations Microsoft.ContainerInstance/containerGroups
  • -g: リソースグループ名

  • -n: サブネット名

  • --vnet-name: 仮想ネットワーク名

  • --service-endpoints: サービス エンドポイントを有効にするサービスの名前

  • --delegations: 委任を追加するリソースの種類


ストレージキーと、サブネットIDを取得し、YAMLコンテナファイルを作成していきます。

ストレージキーは、key1とkey2がありますが、key1を使用していきます。
(片方は予備みたいです)

作成した、YAMLコンテナファイルと、先に発行したSSL証明書およびパスワードファイルを共有ファイルにアップロードします。

⚠️ファイル名は必ず以下にする必要があるようです。(私はパスワードファイルの名前が違っていたことで躓きました…)
SSL証明書:ssl-certificate.pfx
SSLパスワード:ssl-certificate-password.txt

アップロード後、ローカルのCLIワークスペースにアップロードしたファイルをコピーしていきます。

az storage copy -s https://<ストレージアカウント名>.file.core.windows.net/<共有名>/automator.yml -d .

ローカルにファイルがコピーされたことを確認し、コンテナを起動します。起動後に、内部IPアドレスを取得します。

az container create -g dev -f automator.yml

次に、アプリケーションゲートウェイを作成していきます。
まずアプリケーションゲートウェイのサブネットを作成していきます。

az network vnet subnet create --name <アプリケーションゲートウェイ用のサブネット> --resource-group <リソースグループ名> --vnet-name <仮想ネットワーク名> --address-prefix 10.100.1.0/24
az network application-gateway create --name <アプリケーションゲートウェイ名> --location japaneast --resource-group <リソースグループ名> --sku Standard_v2 --public-ip-address AGPublicIPAddress --cert-file <SSL証明書> --cert-password <SSL証明書パスワード> --vnet-name <仮想ネットワーク名> --subnet <アプリケーションゲートウェイのサブネット名> --frontend-port 443 --http-settings-port 443 --http-settings-protocol Https --servers <コンテナのIPアドレス> --priority 100

成功するとリソースグループの中に「アプリケーションゲートウェイ」ができています。そのアプリケーションゲートウェイからパブリックIPアドレスを取得します。

DNSサーバーのレコードに、証明書で設定したドメインにアクセスされた際に、上記のパブリックIPアドレスに接続できるように設定します。


次に、正常性プローブと、Webアプリケーション ファイアウォールの設定をしていきます。

正常性プローブは、正しく設定されていれば成功します。
先に書いた通り、SSL証明書のパスワードファイル名が間違っていたことでうまくいきませんでした…

3)Keeper Commanderのインストール

Azure App GateWayにKeeper Automatorをデプロイできたので、次に自分のPCにKeeper Commanderをインストールしていきます。

ここから、exeファイルをダウンロードして自分のPCにインストールします。

ログインしたら、SSOをさせたいノードを選択して、Automatorを作成していきます。(ノード名が重複している場合はノードIDでいけるみたいですが、ノードIDの調べ方は不明です)

この後に、FQDNの登録をおこないAutomatorをセットアップしていきます。

無事にセットアップが終わるとコンテナーのログに以下が延々と吐かれます。

INFO  2023-07-14 06:02:03,246 com.keepersecurity.automator.deviceapproval.rest.HealthCheck.doGet Automator received a HEALTH request

あとは、未承認のデバイスにログインしてみると、自動承認されることがわかると思います。Azure Functionsの時みたいな待ち時間もないのでスムーズでした。

コストはかかるので注意

ユーザー数にもよりますが、少人数でこの仕組みを使う場合はコストが見合わないかもしれません。Azure Application gatewayを使うので、1時間あたり0.522$かかるようです。(リージョンによって異なります)
結果的に月に最低でも3万円、コンテナ利用料とかも含めると5万円程度かかる見込みです。

わたしの検証環境では絶対に使えませんし、わたしが支援しているところもユーザー数は100~300人程度なので、過剰かな…とあきらめムードです。

大人しく、基本は自己承認、自己承認ができない場合は管理者に問い合わせてもらうようにしたいと思います。

それではまた来週!

この記事が気に入ったらサポートをしてみませんか?