「SAML認証」とは
こうした「シングルサインオン」には、「SAML認証」という標準規格を利用することもあります。
-
クライアント :リソースにアクセスしようとしているユーザー
-
サービスプロバイダー(SP):クライアントのサービス接続を許可する前にIdPに、「認証プロセス」をIdPに委任するコンポーネント(接続したいシステム/アプリやログイン先となるSaaSサービスなど)
-
Identity Provider (IdP):シングルサインオンの認証サービスを提供するコンポーネント。単一の認証ポイントを提供
このように、IdPが単一の認証ポイントになりますので、クライアントがシステム/アプリにアクセスするために複数のクレデンシャルを覚えておく必要もなくなり、クライアントとしてもハッピーになる仕組みです。一度ログインすることで、1セットのクレデンシャルで複数のアプリにアクセスできます。ハードウェア、認証用ソフトウェア保守、システム/アプリの認証機構の追加オーバーヘッドも減らしていくこともできます。
「SAML認証」の動作イメージ
NSX ALB 仮想サービスでの SAML認証の処理フロー
- クライアントから、アプリへのアクセス。アプリとして、NSX ALB「仮想サービス (Virtual Service / VIP)」を サービスプロバイダー(SP) として動作
GET https://sales.avi.com/
- クライアントが未認証の場合、「仮想サービス」 はSAMLリクエスト生成し、クライアントを IdP SSOサービスにリダイレクト (302リダイレクトを使用)
- クライアントのブラウザが、IdP SSOサービスにGETリクエストを送信(HTTP GETリクエストのURLクエリ文字列内でSAMLリクエストを送信)
例:Redirect URI: https://<IdP SSOサービス>/SAAS/auth/federation/sso?SAMLRequest=fZJfb4IwFe9iL6aDMRmhrb8Ht26%2FgYtzDfD33nJz7u%2B0caF0pEjfmIF7ZqWFgnK%2B6EkD6wQI1WhBJgQMRtGZATE528dMjGbqYKC2NzGWFbiL3ExSAacOlQM42WaD9OIzH%2FjoI%2FHC9Ccc4CKbxJJ6Es1kwXo6SYYKcN6bB%2BhfIxm0IoGFbAYYKYyXszwZ4OMBh5k8JxmQUvCMnsQxcUNOnDsYoIJ5HWy6YOUt9BFceDVWatZyd3VzWHlXqdr7vMMpTIaw%2B2vse%2BzqWUo1w4zcrf291JKLgovP%2B0f6uJiAPGRZOkhfdhmK5l0Z6fF11EFZpk4yFtaltr0nATX3bo3zy%2Bs%2B24ptksqK59%2FdvjU1%2F2%2Fgu36v8GJ
- クライアントが同一ブラウザ内の過去セッションでIdP未認証の場合、クレデンシャル情報を入力する認証フォームをクライアントに提示し、クレデンシャル情報が検証されIdP認証を実施
- 認証成功後、IdP SSOサービスから以下の内容を含むSAML認証応答パラメータを返信
– 信頼できる(改竄のない)IdPからである証明・クライアントがIdPで正常に認証されたことの証明・ユーザID、など - POSTリクエストを使用し、クライアントから「仮想サービス」にSAML認証応答パラメータを送信
例:POST https://sales.avi.com/sso/acs/
- 「仮想サービス」は SAMLアサーションを検証し、クライアントのCookieを設定し、クライアントの1.でアクセスした「仮想サービス」のURIへリダイレクト ( 302リダイレクトを使用)
- 「仮想サービス」から送られたCookieを使用してアプリ(仮想サービス)にアクセスするため、クライアントがGET要求を送信
- クライアントのアプリへのアクセスに成功
NSX ALB 仮想サービス と Workspace ONE Access のSSO連携 設定例
① Workspace ONE Access へのアプリ登録
② Workspace ONE Access のアプリへのユーザ割り当て
カタログ > 「ABC App」にチェクを入れる > 割り当て > アサインするユーザを検索し追加します。
図の例では 「snagatoishi」と「mmiki」 というユーザをアサインしています。
Workspace ONE Access での設定は以上となります。
③ NSX ALB コントローラへWorkspace ONE Access (IdP) を登録
続いて、この Workspace ONE Access 設定を用いて、NSX ALB「仮想サービス (Virtual Service / VIP)」に「SAML認証」の設定をしていきます。
④ 仮想サービスへの「SAML認証」の設定
NSX ALB のVIPでSAML認証とユーザ可視化
GET : https://abc.corp.local/finance/data.html
それでは、VMware NSX ALB のトランザクションログを見てみましょう。下段の図に表示されているログを、下から1つ1つ動作を解説していきます。
- 03/26 5:42:06 AM – GET : https://abc.corp.local/finance/data.html へのクライアントからのアクセスに対して、 IdPに302リダイレクトされています
- 03/26 5:42:16 AM – POST : https://abc.corp.local/sso/acs で、POSTリクエストを使用してクライアントから「仮想サービス」にSAML認証応答パラメータを送信し、初回にアクセスしたURIにリダイレクトされています
- 03/26 5:42:16 AM – 初回にアクセスしたURIに再度アクセスし、200 OK が返されていることがわかります。SSOの結果、クライアント情報に「User ID: [email protected]」という「ユーザID」もログに出力されていることがわかります。これは 前述の VMware Workspace ONE Access で設定した 「ユーザ名の値 : ${user.email}」の返り値となります。
おまけ
まとめ
NSX Advanced Load Balancer を導入することで、SSOを含めたアプリケーションのセキュリティを大幅に強化することができます。基本となるロードバランス機能と一緒に、ぜひこうした認証の機構を一元化させるようなセキュリティ機能も有効活用してみてください。ちなみに、本ブログで紹介した「SAML認証」 を利用するためのNSX Advanced Load Balancer としての、追加ライセンスは不要です。Workspace ONE AccessをIdPとしてご利用いただく際には、Workspace ONE Access部分のライセンスは別途必要になりますが、既存のシステムに「SAML認証」 を導入するにあたり SPとIdP両方をVMwareから一括してサポートを提供させていただきます。これにより既存のシステムに「SAML認証」 を導入することもできたりします。ユーザ認証情報ベースで様々なセキュリティレベルを設定することができ、既存システムに対してもゼロトラストを取り入れることができますね。ぜひ、お試しください。
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
〜お知らせ〜
※NSX-T Data Centerについて入門編から中級編まで各種セミナーも定期開催しております。より詳細についてご興味を持っていただけたお客さまはこちらも併せてご参加をご検討ください。
各種オンラインセミナーの開催日時はこちらから https://vmware-juku.jp/seminar/
- VMware の新たな仮想ネットワークソリューションを聞いたみたい!という方はこちら
→ 2022年度!デモで分かりやすく解説!次世代ロードバランサとは(入門編)【オンライン開催】
※VMwareでは、各種製品をクラウド上でご評価いただくHands-on Labs(HOL) という仕組みを無償でご提供しています。今回ご紹介した各種ソリューションへの最初の一歩の入り口としてぜひご活用ください。
おすすめのHOLメニューはこちらから
- VMware NSX Advanced Load Balancer (Avi Networks) – Getting Started (HOL-2237-01-NET)
- VMware NSX Advanced Load Balancer (Avi Networks) – Global Server Load Balancing (HOL-2237-02-NET)
- VMware NSX Advanced Load Balancer (Avi Networks) Web Application Security (HOL-2237-03-NET)
- VMware NSX Advanced Load Balancer (Avi Networks) with Kubernetes (HOL-2237-04-NET)
- VMware NSX Advanced Load Balancer (Avi Networks) Lightning Lab (HOL-2237-91-ISM)