1K Views
July 04, 24
スライド概要
2024年7月4日のCloudflare Meet-up Tokyo vol.5のLT登壇資料です。
電気通信大学 CSプログラム Webのこと / Cloudflare Workers / Hono など
Cloudflare ZeroTrustで 簡単にセキュアな プレビュー環境を実現する Cloudflare Meet-up Tokyo vol.5 @sushi_chan_dev
⾃⼰紹介 sushi-chan (@sushi_chan_dev) - 情報系学部の学⽣ - 街歩きが趣味 - 3DCGライブの制作をメインに活動する学⽣団体で エンジニアとして活動
突然ですが: プレビュー環境の必要性 本番環境に近い状態で動作検証し、複数⼈で確認できる - ステージング⽤DBを使って検証 - 外部マイクロサービスなどと結合した状態で検証 - CloudflareKV / D1 / R2などは開発中は エミュレーションを使うことが多いので 実物検証はプレビューでやったり
プレビュー環境のフロントエンド - デプロイごとにプレビュー⽤の固有URLを発⾏するのが⼀般的 - アクセスに制限をかけられると嬉しいが... - BASIC認証などはあまり使いたくない - GitHubアカウントなどで認証できれば理想 - 0からこのような仕組みを作るのは⾯倒
プレビュー環境のアクセス制御をどうする AWSなどのメガクラウドを利⽤する場合、 基本的に権限制御の仕組みは整っている - AWS IAMなど - これらを使うことで 他のリソースと同様に制御できることが多い
弊団体の場合... - 主にCloudflareを利⽤している - Cloudflare Pagesなど - プレビュー環境のアクセス制御が必要だった Cloudflare Zero Trustを活⽤して実現
Cloudflare ZeroTrustでアクセス制御する 保護できるWebアプリケーションは主に2種類 - セルフホスト型アプリケーション - 対応したSaaSアプリケーション いずれの場合も、アクセスポリシーを 設定して認証などを要求できる
セルフホスト型アプリケーションの場合 Cloudflareで管理しているドメイン or Cloudflare Pagesの pages.devドメインに対してURL単位で制限をかけられる - 実態は該当URLへの前段プロキシに近い - コード側の変更は必要ない - https://developers.cloudflare.com/cloudflare-one/applications/configure-apps/sel f-hosted-apps/
セルフホスト型アプリケーションの場合 Cloudflareで管理しているドメイン or Cloudflare Pagesの pages.devドメインに対してURL単位で制限をかけられる - 実態は該当URLへの前段プロキシに近い - コード側の変更は必要ない →今回はCloudflare Pagesを例に説明する
Cloudflare Pagesを保護してみる Cloudflare Pagesはデプロイごとに固有なプレビューURLを作る 例: deploy-id.example.pages.dev →*.example.pages.devに対してアクセスポリシーを設定する
Cloudflare ZeroTrustのアクセスポリシー Cloudflare Zero Trustでは様々なアクセス制限条件を 組み合わせて設定できる - メールアドレス(完全⼀致‧ドメイン⼀致) - IaCをするならこれが⼿軽 - アクセス元IPアドレス - 外部のIdPの情報を条件に含めることも可能 - GitHubやGoogle Workspace固有のユーザー情報を利⽤できる
例: GitHubのユーザー情報を使ってみる 個⼈ / Organizationに OAuthアプリケーションを 追加することで利⽤できる ※OrganizationやTeamの所属情報を アクセスポリシーで使う場合は Organizationに追加する必要あり https://developers.cloudflare.com/cloudflareone/identity/idp-integration/github/
例: GitHubのユーザー情報を使ってみる アクセスポリシーに利⽤できる主な情報 - Primary Mail Address - 所属するOrganization - Organization Team GitHub Teamの所属情報で アクセス制御ができた
結果 GitHubでログインし、GitHub Teamの所属情報で アクセス制御できるプレビュー環境を実現
まとめ - Cloudflare Zero Trustの機能を活⽤することで、簡単に セキュアなプレビュー環境を実現できた - 外部IdPの情報を使ってオンプレミスサーバーへの アクセス制御をするなどの運⽤も簡単に可能で扱いやすい
Thank you!