メモのページ - チラシの裏メモ 3枚目

通信技術や気になった事を黙々とメモし続ける

Cloudflare Zero TrustのIdPとしてOktaを導入してみた①

昨年の冬に構築したCloudflare Zero Trust環境にて、ID Provider(IdP)としてOktaを利用しCloudflareへの接続にSAML認証を利用したログオン環境を追加する。これにより、様々なクラウドサービスやWebサービス毎に設定したユーザIDをOktaに統合するだけでなく、多要素認証や不正アクセスの検知やユーザ管理の集約等が可能になる。
今回はOkta導入の第一弾として、Okta側およびCloudflare側にてSAML属性値の設定と動作確認を実施した。

2023/4/15追記
当記事の続きの作業は以下を参照
https://debslink.hatenadiary.jp/entry/20230415/1681545093 Cloudflare Zero TrustのIdPとしてOktaを導入してみた②


SAMLとは
当記事にて所々に記載のあるSAMLとは、Security Assertion Markup Languageの頭文字を取ったものである。
SSOやID連携等で利用される認証情報の規格で、ユーザーの認証情報をやり取りする際に利用される。近年、業務や個人で利用されるクラウドアプリの導入が増加するに従い、ユーザの利便性と情報セキュリティを両立する手法としてSSOが注目され、SAMLが利用されるようになった。
SAMLにおいて、認証情報を提供する側(Okta、OneLogin、GMOトラストログイン等)をIdentity Provider(IdP)、認証情報を利用する側(AWS、box、Salesforce等クラウドサービスやWebアプリ)をService Provider(SP)と呼ぶ。


ID Provider(IdP)とは
ユーザのIDを保存および検証するIDaaS(Identity as a Service)サービスを提供する。セキュリティやクラウドの分野ではIdPと略される。IdPの多くはクラウド上でホストされるサービスであり、シングルサインオン(SSO)プロバイダと連携し、ユーザを認証する機能を有する。
このサービスの製品として、以下が挙げられる。
・Okta (Okta)
・GMOトラストログイン (GMO)
・OneLogin (OneLogin, Inc.)
・ID Federation (NTTコミュニケーションズ)...など。

※画像をクリックすると拡大表示します


Oktaとは
日本を含め世界中の10,000以上の企業や団体で導入されているID管理プラットフォーム。SSO(Single Sign On)や多要素認証などの機能をクラウドで提供する。
Oktaを導入する事により、ユーザのIDおよびパスワードの管理、SSO、利用可能なクラウドサービスやアプリのアクセス制御、ActiveDirectoryと連携した一括管理等が可能となる。
以下の図は、Cloudflare Zero Trustを介してクラウドアプリにアクセスするユーザのSAML認証のフローをまとめたものである。

※画像をクリックすると拡大表示します

1.クラウドアプリへの接続要求
2.ユーザの情報を確認する為、Cloudflareからリダイレクト
3.ユーザの情報をCloudflareに送信
4.SAML IdPへの認証要求と共にIdPにリダイレクト
5.ユーザはIdPの内部DBを利用、もしくは外部のディレクトリサーバを参照し検証の為に適切な資格情報をIdPに送信
6.IdPは署名されたSAMLアサーション(Token)を利用し認証の成功やユーザIDや承認属性等を含む事を確認するため、署名付きSAMLアサーションを使って応答
7.認証を証明する為SAMLアサーションをCloudflareに送信。CloudflareとIdPとの間で信頼関係が有る為、Tokenを検証しユーザが正常に認証されている事を確認
8.認証Tokenをユーザに送信
9.ユーザは、適用されたポリシーに基づいて、アクセス要求したクラウドアプリへの接続を許可もしくは拒否される


Cloudflare Zero TrustにおけるOkta導入の流れ
今回は、Cloudflare Zero Trust環境において、OktaをSAMLプロバイダーとして設定する。
以下の流れで、IdPとしてOktaを使用しSAMLの設定を行う。
 1.Okta側でSAMLの設定
 2.SAMLの属性値の設定
 3.メタデータの取得
 4.Cloudflare側の設定およびメタデータの貼り付け
 5.SAMLの属性値の設定
 6.SAMLの動作確認
IdPを使ってログインしたいクラウドサービスおよびWebアプリとCloudflareとの紐付け等、SAMLの動作確認から先は次回実施する。

始めに、OktaのDashboadにて設定作業を行う。
Oktaのアカウント登録は事前に済ませておく。尚、手順では無償利用が可能なOkta Developerにてアカウントを利用する。
Oktaの無償利用が可能なものとしてOkta Developerの他にOkta Cloud Connectが有るが、1つのアプリのみ無償利用の対象としアプリを追加すると有償になるのでお勧めしない。


1.Okta側でSAMLの設定
Okta Developerの管理Dashboardに入り、「Applications」「Applications」の順に移動する。
自分の場合、Okta DeveloperをIdPとして使用する為、Okta DeveloperのDashboardにて実行。

「Create App Intergration」をクリックする。
ポップアップ ダイアログで「SAML 2.0」を選択し、「Next」をクリックする。

アプリ名を入力し「Next」をクリック。
自分の場合「Cloudflare-SAML2」とした。


2.SAMLの属性値の設定
「SAML Settings」欄内の「General」にて、「Single sign on URL」と「Audience URL (SP Entry ID)」にチームドメインを入力する。
URLの末尾に「/cdn-cgi/access/callback」を追加する。以下のURLのような文字列になる。
https://<チーム名>.cloudflareaccess.com/cdn-cgi/access/callback

「Attribute Statements」にて以下の情報を入力する。
Name:「email」を入力。
Value:「user.email」を入力。
上記の入力後、当ページ下部に有る「Next」をクリック。

「Help Okta Support understand how you configured this applicartion」欄内にて、
「I'm an Okta customer adding an internal app」にチェックを入れる。
続けて「This is an internal app that we have created」にチェックを入れる。
「Finish」をクリックし設定内容を保存する。


3.メタデータの取得
「Assignments」タブにて「Assign」タブをクリックし、アクセスを許可する個人またはグループを割り当てる。
User Nameの設定に移り、ユーザ名を変更する際は変更し「Save and Go Back」をクリックする。
自分の場合、User NameはメールアドレスからTest01に変更した。

「Done」をクリックする。 割り当てられた個人およびグループが「Assignments」タブに表示される。

Cloudflare側の設定でSAMLプロバイダ情報が必要となる。SAMLプロバイダ情報を取得するには「Sign On」タブに移動し、画面右側の欄にある「View Setup Instructions」をクリックする。
・新しいページが開き、IdPのシングル サインオン URL、IdPの発行者およびX.509証明書が表示される。
・Cloudflare Zero Trust側の設定で使用する為、この情報を保存する。
・Optionalの「①Provide the following IDP metadata to your SP provider.」欄内の文字列をテキストファイルに貼り付け、「sp-metadata.xml」というファイル名でローカルに保存。
自分の場合、どの情報が必要なのか分からなかった為。「Sign on methods」および「View Setup Instructions」に表示されている情報は全てテキストファイルに保存した。

以下よりCloudflare側で設定作業を行う。


4.Cloudflare側の設定およびメタデータの貼り付け
Cloudflare Zero TrustのDashboardに入り、「Settings」「Authentication」の順に移る。

「Login Methods」欄内右側に有る「Add new」をクリックし、「SAML」を選択する。
※「Okta」ではなく「SAML」である点に注意。

「Add SAML」欄内にて以下の情報を入力する。
・Name:自分の場合は「SAML」とした。
・Single Sign On UR:上記3.で取得した「IdP Single Sign On URL」を入力する。
・Issuer ID: 上記3.で取得した「Identity Provider Issuer」を入力する。
・Signing Certificate:上記3.にて取得した「X.509 Certificate」の内容をコピーし貼り付ける。


5.SAMLの属性値の設定
「Sign SAML authentication request」を有効にする。
「Email attribute name」にて「email」を入力する。
「SAML attributes」にて、「email」と「name」を入力する。
「Save」をクリックし、設定内容を保存する。


6.SAMLの動作確認
SAMLの設定は完了である。ここでは当機能が正常に動作しているかテストを実施する。
「Settings」「Authentication」「Login methods」の順に移り、「Okta」の横にある「Test」をクリックする。

テストが成功すると、以下のように設定されたSAML属性を返す。(黒塗りの中)


今回はここまで。
Okta側およびCloudflare側でSAMLの設定を実施し、動作確認の結果、OktaとCloudflareで設定の紐付けが正常に出来ている事を確認した。
しかし、Oktaを使ってログインしたいクラウドサービスやWebアプリ等ユーザの接続先のサービスの設定は未実施の状態である為、次回ではCloudflare Access側と接続先のサービスで設定を行う。

続きの作業は以下をご参照ください。
https://debslink.hatenadiary.jp/entry/20230415/1681545093 Cloudflare Zero TrustのIdPとしてOktaを導入してみた②


参照サイトや資料
Cloudflare Zero TrustおよびOkta公式ドキュメント
https://www.cloudflare.com/ja-jp/products/zero-trust/ Cloudflare Zero Trust
https://developers.cloudflare.com/cloudflare-one/ CloudflareDocs
https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/okta-saml/ Okta (SAML)
https://www.okta.com/jp/ Okta
https://developer.okta.com/ Okta Developer

参照サイト
https://qiita.com/khayama/items/ddf3323c853ee9c20bc6 Cloudflare Zero TrustでIdP登録をテストする (SimpleSAMLphp)
https://www.clara.jp/media/?p=6790 SAML(Okta SSO認証)を利用したCloudflareAccess機能について
https://zenn.dev/p0n/articles/aws_sso_cloudflare_okta AWS IAM Identity Center(AWS SSO)の認証にOkta連携したCloudflare Zero Trustを使う
https://saml-doc.okta.com/SAML_Docs/How-to-Configure-SAML-2.0-for-Zscaler-Private-Access-2-0_ja-JP.html Zscaler Private Access用SAML 2.0の構成方法

Cloudflare Zero Trust関連の記事
https://debslink.hatenadiary.jp/entry/20221103/1667482863 Cloudflare Zero Trustを導入してみた - POC環境構築編
https://debslink.hatenadiary.jp/entry/20221110/1668087871 Cloudflare Zero Trustを導入してみた - ポリシー設定編①
https://debslink.hatenadiary.jp/entry/20221123/1669181060 Cloudflare Zero Trustを導入してみた - ポリシー設定編②
https://debslink.hatenadiary.jp/entry/20221129/1669714627 Cloudflare Zero TrustとZscaler ZIAのポリシーについて
https://debslink.hatenadiary.jp/entry/20230415/1681545093 Cloudflare Zero TrustのIdPとしてOktaを導入してみた②
https://debslink.hatenadiary.jp/entry/20230708/1688789939 Cloudflare DEXを使用してみた