最新 追記

雑記帳


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.crtgoogle-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は有力な選択肢になる。