Cloudflare ZeroTrustで簡単にセキュアなプレビュー環境を実現する

347 Views

July 04, 24

スライド概要

2024年7月4日のCloudflare Meet-up Tokyo vol.5のLT登壇資料です。

profile-image

電気通信大学 コンピューターサイエンスプログラム B3 Cloudflare WorkersとHonoをこよなく愛する。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Cloudflare ZeroTrustで 簡単にセキュアな プレビュー環境を実現する Cloudflare Meet-up Tokyo vol.5 @sushi_chan_dev

2.

⾃⼰紹介 sushi-chan (@sushi_chan_dev) - 情報系学部の学⽣ - 街歩きが趣味 - 3DCGライブの制作をメインに活動する学⽣団体で エンジニアとして活動

3.

突然ですが: プレビュー環境の必要性 本番環境に近い状態で動作検証し、複数⼈で確認できる - ステージング⽤DBを使って検証 - 外部マイクロサービスなどと結合した状態で検証 - CloudflareKV / D1 / R2などは開発中は エミュレーションを使うことが多いので 実物検証はプレビューでやったり

4.

プレビュー環境のフロントエンド - デプロイごとにプレビュー⽤の固有URLを発⾏するのが⼀般的 - アクセスに制限をかけられると嬉しいが... - BASIC認証などはあまり使いたくない - GitHubアカウントなどで認証できれば理想 - 0からこのような仕組みを作るのは⾯倒

5.

プレビュー環境のアクセス制御をどうする AWSなどのメガクラウドを利⽤する場合、 基本的に権限制御の仕組みは整っている - AWS IAMなど - これらを使うことで 他のリソースと同様に制御できることが多い

6.

弊団体の場合... - 主にCloudflareを利⽤している - Cloudflare Pagesなど - プレビュー環境のアクセス制御が必要だった Cloudflare Zero Trustを活⽤して実現

7.

Cloudflare ZeroTrustでアクセス制御する 保護できるWebアプリケーションは主に2種類 - セルフホスト型アプリケーション - 対応したSaaSアプリケーション いずれの場合も、アクセスポリシーを 設定して認証などを要求できる

8.

セルフホスト型アプリケーションの場合 Cloudflareで管理しているドメイン or Cloudflare Pagesの pages.devドメインに対してURL単位で制限をかけられる - 実態は該当URLへの前段プロキシに近い - コード側の変更は必要ない - https://developers.cloudflare.com/cloudflare-one/applications/configure-apps/sel f-hosted-apps/

9.

セルフホスト型アプリケーションの場合 Cloudflareで管理しているドメイン or Cloudflare Pagesの pages.devドメインに対してURL単位で制限をかけられる - 実態は該当URLへの前段プロキシに近い - コード側の変更は必要ない →今回はCloudflare Pagesを例に説明する

10.

Cloudflare Pagesを保護してみる Cloudflare Pagesはデプロイごとに固有なプレビューURLを作る 例: deploy-id.example.pages.dev →*.example.pages.devに対してアクセスポリシーを設定する

11.

Cloudflare ZeroTrustのアクセスポリシー Cloudflare Zero Trustでは様々なアクセス制限条件を 組み合わせて設定できる - メールアドレス(完全⼀致‧ドメイン⼀致) - IaCをするならこれが⼿軽 - アクセス元IPアドレス - 外部のIdPの情報を条件に含めることも可能 - GitHubやGoogle Workspace固有のユーザー情報を利⽤できる

12.

例: GitHubのユーザー情報を使ってみる 個⼈ / Organizationに OAuthアプリケーションを 追加することで利⽤できる ※OrganizationやTeamの所属情報を アクセスポリシーで使う場合は Organizationに追加する必要あり https://developers.cloudflare.com/cloudflareone/identity/idp-integration/github/

13.

例: GitHubのユーザー情報を使ってみる アクセスポリシーに利⽤できる主な情報 - Primary Mail Address - 所属するOrganization - Organization Team GitHub Teamの所属情報で アクセス制御ができた

14.

結果 GitHubでログインし、GitHub Teamの所属情報で アクセス制御できるプレビュー環境を実現

15.

まとめ - Cloudflare Zero Trustの機能を活⽤することで、簡単に セキュアなプレビュー環境を実現できた - 外部IdPの情報を使ってオンプレミスサーバーへの アクセス制御をするなどの運⽤も簡単に可能で扱いやすい

16.

Thank you!