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

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

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

前回はCloudflare Zero Trust経由のSAML認証の第一弾として、OktaおよびCloudflare側にてSAML属性値の設定とSAML認証の動作確認を実施した。
今回はOkta導入作業の続きとして、ユーザの接続先のクラウドサービスをCloudflare AccessとSSO連携させ、実際の認証はCloudflareに登録したIdPを利用するという設定を行う。
当記事の設定を行う事で、対象となるクラウドサービスにアクセスするとOktaのサインイン画面が表示され、ユーザ名とパスワードを入力し認証が通るとクラウドサービスに入る事が出来るという、業務でいつも見ている(?)一連の流れが出来るようになる。

前回の作業:
https://debslink.hatenadiary.jp/entry/20230321/1679325069 Cloudflare Zero TrustのIdPとしてOktaを導入してみた①


今回の構成
IdPとして、前回導入したOktaを使用。
接続先のクラウドサービスとしてAWSを使用。AWSはIAM Identity Center(要はSSO)としても利用する。
Cloudflare Zero Trustの認証基盤であるCloudflare AccessをAWSのIDソースとして使用すべく、前回設定したIdP情報をCloudflare Accessに紐付けする。また、AWSのメタデータ情報をCloudflare Accessに紐付けし、AWSへのログインの際はCloudflare Access経由でOktaでユーザ認証を行うようにする。

当記事の設定が完了するとユーザ認証は以下の流れになる。
設定完了に実施するクラウドサービスへのログインテストはCloudflare WARPを有効にした状態で実施する為、通信はCloudflare Zero Trust経由となる。

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

①ユーザがAWSに接続要求
②ユーザにSAML認証要求
③SAML認証要求をCloudflare Accessに転送
④ユーザに対し認証画面を表示
⑤認証の処理
⑥ユーザにSAML認証の応答
⑦SAML認証の応答をAWSに転送
⑧ログインOK


Cloudflare Accessとは
今回初登場のCloudflare Accessとは、Cloudflare EdgeやCloudflare Gate等のようにCloudflare Zero Trustサービスを構成する基盤の1つであり、これも無償利用が可能である。
Cloudflare Accessは、Webアプリやクラウドサービスへのユーザアクセス制御のポリシーを提供する。
また、IdPやデバイスポスチャやCloudflare WARP等と連携させる事が可能で、ユーザ〜接続先のWebアプリやクラウドサービスとの間をよりセキュアに接続する事が出来る。
当環境では、Cloudflare AccessはIdPプロキシのような役割を持つ。


Cloudflare Zero TrustにおけるOkta導入の流れ
前回は、OktaをSAMLプロバイダーとして設定しSAMLの動作テストを実施した。Cloudflare側とOkta(Okta Developer)側のみの設定だったが、今回はCloudflare Accessと接続先のクラウドサービスであるAWSが加わる。
前回の続きとして以下の流れでAWSにてIDソースの設定およびログインユーザの設定、Cloudflare AccessにてAWS IAM Identity Centerの登録を実施し、最後にクラウドサービスへのログインを試行する。
 1.Cloudflare AccessにてSAML認証対象のクラウドサービスの設定
 2.クラウドサービス(AWS)にてメタデータの設定
 3.クラウドサービス(AWS)にてログインユーザの設定
 4.クラウドサービス(AWS)へのログインテスト


1.Cloudflare AccessにてSAML認証対象のクラウドサービスの設定
前述のとおりAWSを使用する。AWSにログインし、IAM Identity Centerに入る。

IAM Identity Center内の「設定」に入り、「アイデンティティソース」欄内の「アクション」にて「アイデンティティソースを変更」を選択。

「アイデンティティソースを変更」のページ内の「アイデンティティソースを選択」欄内にて「外部IDプロバイダー」を選択し、「次へ」をクリック。

「外部アイデンティティプロバイダーを設定」欄内に、「AWSアクセスポータルのサインインURL」「IAM Identity Center Assertion Consumer Service(ACS)のURL」「IAM Identity Centerの発行者URL」が表示される。
これらのURLは後で使用する為、このページは閉じずに次の作業に進む。

Cloudflare Zero Trustにログインし「Access」「Applications」の順に進み、「Add an application」をクリック。

「Add an application undefined」ページ内にて「SaaS」枠内の「Select」をクリック。

「Add an application」ページ内にて、上記のAWSの画面の「外部アイデンティティプロバイダーを設定」欄内から以下の情報を入力する。
・Application:「Amazon AWS」を選択
・Entity ID:「IAM Identity Centerの発行者URL」
・Assertion Consumer Service URL:「IAM Identity Center Assertion Consumer Service(ACS)のURL」

「Application logo」欄内にて「AWS」がデフォルトで選択されている事を確認。
続いて「Identity providers」にて「「SAML」が選択されている事を確認する。
前回の設定にてOktaをSAMLプロバイダーとして設定している為、Cloudflare Accessは外部IdPとしてOktaを使用する事となる。
「Accept all available identity providers」のチェックを外し「SAML」のみ選択された状態にし、「Next」をクリック。

AWS IAM Identity Centerの利用を許可するポリシーを作成する。
・Policy name:任意の文字列を入力
・Action:利用を許可する為「Allow」を選択
・Session duration:「Same as application session timeout」から変更無し

続いて「Configure rules」欄内の「Include」設定は以下のとおり。
・Selector:「Login Methods」を選択
・Value:「SAML」を選択

「Setup your SaaS application」欄内の「SSO endpoint」「Access Entity ID or Issuer」「Public key」の各情報は次の作業で使用する為、この画面は閉じないで次に進む。
「Public key」の文字列はテキストファイルに保存する。自分の場合「pubkey.txt」で保存した。


2.クラウドサービス(AWS)にてメタデータの設定
「アイデンティティプロバイダーのメタデータ」欄内にて、以下の情報を貼り付けて「次へ」をクリック。
・IdPサインインURL:上記の「SSO endpoint」
・IdP発行者URL:上記の「Access Entity ID or Issuer」
・IdP証明書:上記の「Public key」が記載されたテキストファイルを選択

尚、当手順で設定した内容でAWSにログインをする際は「IdPサインインURL」を使用する事になる為、Webブラウザのブックマーク登録を行うと良いだろう。

設定内容を反映させる為には、「承諾」を入力し「アイデンティティソースを変更」をクリックする。
「承諾」の文字列を入力するとエラーになる事が有る為、承諾をコピー&ペーストで貼り付ける方をおすすめする。

設定内容が正常に反映されると、以下の画面に遷移する。


3.クラウドサービス(AWS)にてログインユーザの設定
IAM Identity Center内の「ユーザー」に入り、「ユーザーの追加」をクリックし認証対象のユーザを設定する。

「ユーザーの詳細を指定」ページ内の「プライマリ情報」欄内にて以下を入力し、画面下部の「次へ」をクリック。
・ユーザー名:任意の文字列を入力
・Eメールアドレス:認証対象ユーザのメールアドレス
・Eメールアドレスを確認;認証対象ユーザのメールアドレスをもう一度入力
・名:認証対象ユーザの名を入力
・姓:認証対象ユーザの姓を入力
・表示名:ユーザーリストに表示する名前を入力(変更可能)

「ユーザーをグループに追加 - 任意」ページ内で、上記で作成したユーザをグループに追加する。
当環境ではグループを作成していない為、「次へ」をクリック。

「ユーザーの確認と追加」ページ内で、設定内容を確認し問題が無ければページ内下部の「ユーザーを追加」をクリックし、設定内容を保存する。


4.クラウドサービス(AWS)へのログインテスト
Cloudflare AccessとAWS IAM Identity Centerの設定が完了したら、クラウドサービスへの接続テストを実施する。
アクセス先のURLは、AWSのトップ画面ではなくIdPサインイン用のURL(SSO endpoint)となる。
ゼロトラストネットワーク経由でAWSにログインする為、まずは接続元の端末にてCloudflare WARPを立ち上げてCloudflare Zero Trustに接続する。
尚、Cloudflare WARPを立ち上げなくてもログインテストの実施は可能である。

Webブラウザを立ち上げ、IdPサインイン用のURL(SSO endpoint)にアクセス。
「Identity providerへリダイレクト中」が表示される。

Oktaのサインインの前に、Cloudflare Accessのログイン画面に遷移する。
これにより、Cloudflare AccessとAWS IAM Identity Centerとの連携が出来ている事が分かる。
SAMLをクリックし次に進む。

Oktaのサインイン画面に遷移する。
上記の「3.クラウドサービス(AWS)にてログインユーザの設定」で設定したユーザ名を入力し、パスワードを入力。
自分の場合、パスワードはOktaで設定したものとなる。
「サインイン」をクリックし次に進む。

ログイン成功。
画面が真っ白で「You do not have any applications.」が小さく表示されているのは、AWSでまだ何も立てていない為である。


今回はここまで。
前回にてOkta側およびCloudflare側でSAMLの設定を実施。そして今回はCloudflare AccessにてSAML認証対象のクラウドサービス(AWS)の設定とAWSにてIAM Identity Centerの設定を実施し、Okta連携でCloudflare Access経由でAWSにログインする事が出来るようになった。
CloudflareとOkta(Okta Developer)共に無償版での利用、AWSは無償枠内での利用で全ての機能の利用は出来ないものの、商用環境に近い形でここまで触れる事が出来るのは非常にありがたい事である。試したい機能がまだ有るので、Cloudflare Zero Trustに今後も触れ続けようと思う。


参照サイトや資料
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://dev.classmethod.jp/articles/cloudflare-access-idp-proxy/ SaaSサービスのアクセスにCloudflare Accessを介したIdPプロキシをやってみる
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/20230321/1679325069 Cloudflare Zero TrustのIdPとしてOktaを導入してみた①
https://debslink.hatenadiary.jp/entry/20230708/1688789939 Cloudflare DEXを使用してみた