IDチームの前田です。NuPhy Halo65 に続き NuPhy Air60 というロープロファイルキーボードを入手し、最高の打鍵感と打鍵音を追求し、夜な夜なカスタムを繰り返してます。
さてみなさん、PIngOne DaVinciというノーコードで認証フローが作成出来るサービスをご存じでしょうか。今回はそのPingOne DaVinciの紹介を簡単にしたいと思います。
三行まとめ
- Ping Identityが提供するノーコードツール、PingOne DaVinciの紹介です
- PingOne DaVinciを利用することで少ない工数で、認証フローを構築することが可能
- 比較的新しいツールで機能やコネクタがまだまだ不足していますが今後の拡充に期待
Ping Identityとは
- https://www.pingidentity.com/ja.html
- Ping Identityはアイデンティティセキュリティ会社で、Fortune100の半数以上を含む世界最大規模の企業で利用されており、「Gartner Magic Quadrant for Access Management」レポートではアクセス管理のリーダーとして選出されている会社です。
- Microsoft, Okta, ForgeRock, CyberArkなどとともに業界を牽引している企業になります。

世界的にはよく知られた会社で、日本でも多くの会社で採用されています。
特徴としてはクラウドだけでなく、オンプレミス上でも動くため、オンプレミス上で機密情報を扱う場合などに採用されています。世界で展開している大規模なサービスでも採用されているため、パフォーマンス面でも優れています。
PingOne DaVinciとは
Ping Identity社が提供するいわゆるノーコードツールで、キャンバス上でドラッグアンドドロップでパーツを組み合わせて認証フローを作成が出来ます。QRコードによるパスワード不要のログイン、生体認証などもドラッグアンドドロップで追加することで統合が可能です。
数百種類のアプリケーションコネクタが存在し、認証フローにサードパーティーのツールを組み込むことも容易です。
下記はPingOne DaVinciでSign OnとPassword Resetを実装したFlow図です。
PingOne DaVinci上のキャンバスに書かれた認証をFlowと表現します。

Connectorの話
PingOne DaVinciにはサードパーティーの製品との連携のためにConnectorという機能が用意されています。Connectorは2023年6月現在数百種類用意されており、主要なサービスはカバーされている印象ですが、痒いところに手が届かない印象があるので、今後の拡充に期待です。
Amazon DynamoDB Connectorを利用した簡単なFlowを作ってみる
ログインID/Password、MFAを利用した認証フローはサンプルが用意されているので、今回はAmazon DynamoDBに入っている情報を認証に利用するFlowを作ってみます。
前提の話
本筋から離れるため以下は既に済んでいるものとして話を進めます。
- Amazon DynamoDBは構築済で利用中
- Amazon DynamoDBから必要なデータが取得出来るようAWS IAM周りも用意済
- Amazon DynamoDBにはデバイスのSerialNumberとそれに紐付くステータス情報が格納されている状態(※1)(※2)
- Amazon DynamoDB Connectorの秘匿情報やRegionの初期設定も完了済
今回実装するFlow
- デバイスのSerialNumberを入力
- 入力されたSerialNumberを元にDynamoDBからデータを取得
- 返ってきた値を条件にFlowを分岐
Flowを作ってみる
Flowを作成する場合は、まず機能単位など小さく、動くフローを作っていき、完成した物をあとでそれぞれを結合するのがオススメです。最初から大きいものを作ろうとすると大変難しいです。
- SerialNumberの入力フォームを用意する
Httpコネクタを追加し、Custom HTML Template
を選択し入力フォームを作ります。 Sample Flowの入力フォームを参考にすれば特に難しいことはないかと思います。もちろんCSSなどでカスタムも可能です。

2. 入力されたSerialNumberを元にDynamoDBからデータを取得する
初期設定済のDynamoDBコネクタを追加し、 1の手順で作成したHtmlコネクタとDynamoDBコネクタをTriggerで接続します。今回の例ではHttpコネクタのフォームに何かしら値が入力されたら、DynamoDBコネクタを実行する流れになります。
入力されたSerialNumberを元に、DynamoDBにGetItemオペレーションを実行しています。


3. DynamoDBから取得した値を評価し、その後のフローを分岐する
値の評価にはFunctionコネクタを利用します。DynamoDBコネクタとTriggerで接続します。DynamoDBから取得した値に Enabled
が含まれる、つまり端末上で Netskope Private Access Device Status
が有効になっているかを判定します。


4. 条件分岐で処理を変更する
Triggerで True
と False
毎で処理を変更します。今回はHttpコネクタで、Custom Html Message
を利用して、DynamoDBのItemを返すだけの処理にします。


今回作成して完成したFlowは下記になります。

実際の画面遷移を確認してみる
作成したFlowは、すぐにFlow作成の画面から動作検証が可能です。Flow作成 -> デプロイ -> 動作確認がシームレスに出来るのもPingOne DaVinciの魅力です。
- 入力フォームに端末シリアル番号を入力し、Submitをクリック
実運用では入力フォームに端末シリアル番号を入力することはあり得ないので、入力フォームではログインIDを入力をさせ、Google Chrome Device Trust Connector などでアクセス元の端末シリアル番号を取得するFlowを用意する必要があるでしょう

2. 条件により画面遷移が変わる
端末上でNetskope Private Access
が有効になっている場合は下記画面が表示されます。

端末上でNetskope Private Access
が無効の場合はNG画面が表示されます

まとめ
- ノーコードで認証フローが作れるPingOne DaVinciの紹介でした
- PingOne DaVinciでは認証フローに介在できるため、これまでIDaaS(identity as a service)では作るのが難しかった複雑な要件の認証フローを作ることが可能
- 比較的新しいツールで機能やコネクタがまだまだ不足していますが今後の拡充に期待
(※1) Netskope Client バージョン104以降から、SerialNumberとNetskope Private Access Device Statusが同時に取得出来るようになったため、端末上でNetskope Clientが正常に稼働しているかを判定し認証に利用.
(※2) Netskope APIのRate Limit厳しく、認証の度にAPIを叩いていると制限がかかるため、定期的にNetskope APIからデータを取得し、DynamoDBへ格納しそちらを利用してます