雑記帳
2018-12-07 (Fri) [長年日記]
■ GoogleのセキュアLDAPを使ってPingFederateによる認証をする
セキュアLDAPとは、つい先日リリースされたばかりの、GoogleのCloud Identityまたは、G Suiteに対して、LDAPプロトコルを使って接続できるサービスのこと。
Ping IdentityのIdP製品である、PingFederateから、セキュアLDAPが使えるか試してみる。
Cloud Identity
Cloud Identityとは、GoogleのIDaaSで、企業向けモバイル管理(EMM)サービスのこと。 FreeとPremiumがあり、セキュアLDAPを使うには、Premiumが必要となる。
Freeは、G Suiteを使わないユーザーを管理するのに使うことができる。 GCPを使う開発者向けに、IDを発行し、ID統制できるようになる。
また、G Suite Enterpriseを使っている場合も、セキュアLDAPを使うことができる。 セキュアLDAPを使いたい場合、Cloud Identityを使った方がコスト面では有利なので、このためだけにG Suite Enterpriseにする必要はない。
Cloud Identity Premiumを有効にする
今回は、すでにG Suiteを使っているドメインでPremiumを有効にする。まだFree版も利用していない。
G Suiteの管理コンソールの「お支払い」から、Cloud Identity Premiumの有効化を実施する。 14日間の無料試用ができるので、そちらを選ぶ。
有効化が完了したらライセンスの割り当てをする。割り当て方法については、下記のドキュメントを参照のこと。
LDAPクライアントを追加する
セキュアLDAPに接続するためのLDAPクライアントを、Googleに追加するする必要がある。
アクセス権限を設定する
LDAPクライアントが、どんな情報にアクセスできるのかの権限を設定する。 今回は、PingFederateが認証に使うData Storeとして利用する想定なので、全て許可する。
- ユーザー認証情報の確認
- ユーザー情報の読み取り
- グループ情報の読み取り
証明書をダウンロードする
自動的に証明書が生成されるので、ダウンロードする。
LDAPクライアントをオンにする
Googleの管理コンソールで、サービスをオンにする。
LDAPクライアントを設定する
PingFederateを使う場合は、証明書を使った認証が利用できない。そのため、stunnelを使う。
stunnelのインストールと設定
今回の環境は、CentOS 7を利用している。yumでインストールする。
# yum install stunnel psmisc
Googleから取得した証明書をサーバーの/etc/stunnel
に配置する。
それぞれ、google-ldap.crt
とgoogle-ldap.key
とする。
/etc/stunnel/stunnel.conf
として、下記の内容の設定ファイルを作成する。
[ldap] client = yes accept = 127.0.0.1:1636 connect = ldap.google.com:636 cert = /etc/stunnel/google-ldap.crt key = /etc/stunnel/google-ldap.key
stunnelをサービスとして、systemdに登録する。
/etc/stunnel/stunnel.conf
として、下記の内容のファイルを作成する。
[Unit] Description=SSL tunnel for network daemons After=network.target After=syslog.target [Install] WantedBy=multi-user.target Alias=stunnel.target [Service] Type=forking ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf ExecStop=/usr/bin/killall -TERM stunnel # Give up if ping don't get an answer TimeoutSec=600 Restart=always PrivateTmp=false
systemdに登録する。
# systemctl start stunnel.service # systemctl enable stunnel.service
PingFederateを設定する
PingFederateからstunnelを経由してセキュアLDAPに接続する設定をする。
Data Storeを作成する
Data Store
を作成して設定する。
- Hostname(s):
localhost:1636
- LDAP Type:
general
- Bind Anonymously: チェックする
設定を保存する。
LDAP PCVを作成する
LDAP Username Password Credential Validatorを作成し設定する。 設定値は、Googleのドキュメントを参考にする。
- LDAP Datastore: 作成したData Store
- Search Base:
DC=example,DC=com
- Search Filter:
mail=${username}
あとは、IdP AdapterでこのPCVを使うように設定すれば良い。
まとめ
テストしたところ、認証する際に気持ち時間がかかるか?という感じだが、特に問題なく利用できた。
今更LDAP?と思う向きは少なくないと思う。しかし、統合認証を実現しようとすると、LDAPが不要になる世界は、まだ来そうにないのが実情だ。
統合認証と言えば、ほとんどのケースでActive Directoryがデファクトスタンダードになっている。そして、昨今のスタートアップ企業は、今さらActive Directoryを管理・運用したくないという話はよく聞く(自分もそう思う)。そして、そういう企業は大抵の場合、G Suiteを契約してメールはGmailを使っているのだ。
そんな場合に、セキュアLDAPは有力な選択肢になる。