Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cloudflare Zero Trustを利用したセキュアな開発環境へのアクセス手法の確立
Search
Kurochan
September 06, 2023
Technology
10
3.4k
Cloudflare Zero Trustを利用したセキュアな開発環境へのアクセス手法の確立
Cloudflare Meet-up Tokyo Vol.2で発表した資料です
https://cfm-cts.connpass.com/event/291753/
Kurochan
September 06, 2023
Tweet
Share
More Decks by Kurochan
See All by Kurochan
15年入社者に聞く! これまでのCAのキャリアとこれから
kurochan
1
180
入門 電気通信事業者
kurochan
13
5.5k
AWS x さくらのクラウドのハイブリッドクラウドによる安価なフレッツ閉域網接続の実装
kurochan
9
5.4k
GoでTCP Proxyを実装してみよう
kurochan
1
1k
サイバーエージェントの広告配信におけるIPoEトラフィックの概況
kurochan
0
450
スケールするというのはどういうことなのか
kurochan
14
4.7k
サイバーエージェントのGitHub Copilot導入と 開発生産性
kurochan
52
45k
セキュキャンを卒業してその後
kurochan
0
1.4k
サイバーエージェントの実践×実験Snowflake 導入の経緯から最新機能のトライアルまで / How Snowflake Is Used In CyberAgent - Go To the Future
kurochan
1
1.1k
Other Decks in Technology
See All in Technology
caching_sha2_passwordのはなし
boro1234
0
210
モジュラーモノリスでスケーラブルなシステムを作る - BASE のリアーキテクチャのいま
panda_program
7
2k
コード品質向上で得られる効果と実践的取り組み
ham0215
2
200
Amazon Q Developer 他⽣成AIと⽐較してみた
takano0131
1
120
Tirez profit de Messenger pour améliorer votre architecture
tucksaun
1
130
PHPStan をできる限り高速化してみる
colopl
0
250
3/26 クラウド食堂LT #2 GenU案件を通して学んだ教訓 登壇資料
ymae
1
200
非エンジニアにも伝えるメールセキュリティ / Email security for non-engineers
ykanoh
13
3.9k
ClineにNext.jsのプロジェクト改善をお願いしてみた / 20250321_reacttokyo_LT
optim
1
1.3k
ソフトウェアプロジェクトの成功率が上がらない原因-「社会価値を考える」ということ-
ytanaka5569
0
120
ISUCONにPHPで挑み続けてできるようになっ(てき)たこと / phperkaigi2025
blue_goheimochi
0
140
チームビルディング「脅威モデリング」ワークショップ
koheiyoshikawa
0
130
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.7k
Speed Design
sergeychernyshev
28
860
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.6k
Agile that works and the tools we love
rasmusluckow
328
21k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
30k
Into the Great Unknown - MozCon
thekraken
36
1.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
What's in a price? How to price your products and services
michaelherold
245
12k
BBQ
matthewcrist
88
9.5k
Building Applications with DynamoDB
mza
94
6.3k
Why Our Code Smells
bkeepers
PRO
336
57k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Transcript
Cloud fl are Zero Trustを利⽤した セキュアな開発環境へのアクセス⼿法の確⽴ 株式会社サイバーエージェント AI事業本部 黒崎
優太 (@kuro_m 88 )
ࠇ࡚ ༏ଠ גࣜձࣾαΠόʔΤʔδΣϯτ AIࣄۀຊ෦ @kurochan @kuro_m88 αΠόʔΤʔδΣϯτ CTO౷ׅࣨ
最近書いた記事 • サイバーエージェントのGitHub CopilotのAnalyticsデータを公開! 利⽤開始から約3ヶ⽉でエンジニアの⽣産性は向上したのか https://developers.cyberagent.co.jp/blog/archives/ 9
インターネットゼミ • インターネットの勉強をするゼミ • 社内ゼミ制度 • サイバーエージェントの実験⽤ASであるAS 6 3 79
0 を運⽤しています
普段の仕事 • AI事業本部にて⼩売企業のDXを⽀援をする事業をやっています • スマホアプリ • データ分析基盤
本⽇話すこと • AI事業本部にて⼩売企業のDXを⽀援をする事業をやっています • スマホアプリ • データ分析基盤 • 様々な取引先の様々なシステムを開発 •
関わる⼈も様々 • 接続先も様々 • ⼈や役割によって違うアクセス範囲を適切に管理したい • 本⽇のテーマ!
Before Cloud fl are Zero Trust
VPN! • VPNによるセキュリティ担保 • WireGuardを採⽤ • 個⼈的に知⾒があった • ハマりどころがほとんどない •
唯⼀のハマりどころは→くらいかも https://kurochan-note.hatenablog.jp/entry/ 9
WireGuardとOpenID Connectの連携 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalselian-xi-wogoteshi-zhuang-sitemita
WireGuardとOpenID Connectの連携 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalselian-xi-wogoteshi-zhuang-sitemita
WireGuardとOpenID Connectの連携 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalselian-xi-wogoteshi-zhuang-sitemita
WireGuardとOpenID Connectの連携 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalselian-xi-wogoteshi-zhuang-sitemita
WireGuardとOpenID Connectの連携 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalselian-xi-wogoteshi-zhuang-sitemita
WireGuardとOpenID Connectの連携 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalselian-xi-wogoteshi-zhuang-sitemita
WireGuardとOpenID Connectの連携 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalselian-xi-wogoteshi-zhuang-sitemita
WireGuardとOpenID Connectの連携 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalselian-xi-wogoteshi-zhuang-sitemita
WireGuardとOpenID Connectの連携 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalselian-xi-wogoteshi-zhuang-sitemita
WireGuardとOpenID Connectの連携 • 実装してみて、⼀応動いたが… • 便利だったようで⼀気に数⼗⼈使うようになった • 実装に必要な前提知識が意外と多くてメンテを誰かに引き継げる気がしなかった • WireGuard、OIDC
CIBA Flow、nftables、netlink、Go⾔語でのこれらの動的操作 • 固定IPだけに頼るのはイケてない • せっかく社内に内製IdPがあるので柔軟な認可の制御もしたい • VPC内アクセスとかもしたい
After Cloud fl are Zero Trust
脱WireGuard • WireGuardの導⼊によって開発プロジェクト⽤のVPNの需要は把握 • もっとやりたいことが増えてきた • 通信先によってアクセス元IPアドレスを変えたい • ⼈や役割によってアクセス可否を変えたい(認可をちゃんとやりたい) •
通信先によってVPNを切り替えるのが⾯倒 • ちょうどいい製品を探し始めた
Cloud fl are Zero Trust • いろんな機能があって充実している • アイデア次第で⾊々できそう •
その分最初は使い⽅を迷うかも…? • スマホ対応は必須だった • スマホアプリの開発で開発環境のAPIのアクセス制御もしたいのでブラウザ対応だけではダメ • APIで操作するためのクライアントライブラリが公式で⽤意されている • https://github.com/cloud fl are/cloud fl are-go • 安い!!!!!! • $ 3 /user • 現在85ユーザ使っているので、 $3 x 8 5 = $ 255 /month • 通信量課⾦なし!!!!!!
Cloud fl are Zero Trustの導⼊ https://developers.cyberagent.co.jp/blog/archives/ 9
Cloud fl are Zero Trustの導⼊ • 構成の概要
DNS応答の書き換え • Cloud fl are Zero TrustのFirewall Policyを利⽤ • www.cyberagent.co.jp
のDNSの応答を100.64.1.1に書き換える例
DNS応答の書き換え
cloud fl aredに中継する • cloud fl aredで100.64.0.1をlistenする • Cloud fl
are Zero Trustの設定で100.64.0.1/24をcloud fl aredに転送する • nginxで本来の宛先にTCP Proxy
TCP Proxyをさせる理由 • 普通に考えるとCloud fl are Zero TrustでHTTPの転送をしたい • 通信先はHTTPSもある
• cloud fl ared+nginxでHTTPSの転送をさせようとするとTLSを終端しないといけない • Cloud fl are Zero TrustはHTTPSの終端にも対応 • ただしCloud fl are提供のroot証明書をクライアント(PC、スマホ)にインストールが必要 • root証明書を信⽤してもらうということは通信内容の覗き⾒が可能、ログも残っちゃう • あくまでproxyがしたいのであって今回はMITMは不要 • 必要ないのにroot証明書のインストールをさせるのはセキュリティ的な懸念も • TCP(L 4 )でproxyすることで暗号化したままアクセス制御が可能に! https://developers.cloud fl
認可制御 • Cloud fl are AccessのPrivate Network Applicationを利⽤
認可制御 • Cloud fl are AccessのPrivate Network Applicationを利⽤ • アプリを作成するとNetwork
Policyが2つ⽣成される • AllowとBlock
認可制御 • Cloud fl are AccessのPrivate Network Applicationを利⽤ • アプリを作成するとNetwork
Policyが2つ⽣成される • Allowするルール • 通信先が100.64.0.1 • 認証しているユーザのメールアドレスが がいずれかのemail listに所属 • users-project-aaa-dev • users-project-bbb-admin users-project-aaa-dev users-project-bbb-admin
認可制御 • Cloud fl are AccessのPrivate Network Applicationを利⽤ • アプリを作成するとNetwork
Policyが2つ⽣成される • Denyするルール • 通信先が100.64.0.1 • すべてブロック
認可制御 • Cloud fl are AccessのPrivate Network Applicationを利⽤ • アプリを作成するとNetwork
Policyが2つ⽣成される • AllowとBlock • 認可制御したい単位でemail listを作成すれば⼈、役割に応じてアクセス制御可能!
認証 • OIDCで社内IdPで認証する • セットアップ時に⼀回だけやればOK • WARP or 1 .
1 . 1 . 1 アプリでスライダをオンにするだけで接続完了!
認証 • OIDCで社内IdPで認証する • セットアップ時に⼀回だけやればOK • WARP or 1 .
1 . 1 . 1 アプリでスライダをオンにするだけで接続完了! • クライアント側でやってもらうことがとても少ない! • アプリをインストールしてログインしてくださいという指⽰だけで済む • Split Tunnelの設定などもCloud fl are Zero Trustの管理者側で制御可能
アカウント棚卸しとemail listの同期 • OIDCでログイン & アカウント作成はできるが削除(棚卸し)ができない • 社内IdPのAPIとCloud fl are
Zero TrustのAPIを利⽤して同期 • 社内IdPのAPIで社員の異動退職に伴う失効を管理 • 社内IdPのAPIで社員に紐づくロールごとにCloud fl are Zero Trustのemail listを同期 • AWS Lambdaで3分に1回同期処理を実⾏ • たぶん⽉額コスト10円くらい
One more thing …
cloud fl ared + nginxの置き換え • サーバのセットアップが⼿動で⾯倒だった • 接続先が増えるごとにサーバにsshしてnginxのcon fi
gを書き換えていた • コンテナ化して配布、構築を楽にしたい欲がでてきた • ついでにcloud fl aredとTCP Proxyを1つのコンテナにして起動を簡単にしたい • ついでに定期的にS 3 から設定ファイルを読んで⾃動更新してほしい • ついでにDNSで上書きする対象のInternal IPアドレスの管理も⾯倒なので IPv 6 single stackにして⾃動採番したい
TCP Proxyの⾃前実装 • Goでデーモンを実装 • 1分に1回S 3 から設定ファイルをダウンロードする • 差分を検出したらアップデート
• Linuxのdummyインターフェイスにlistenが必要なIPアドレスを付与 • Goでnetlink経由でインターフェイスを制御 • 1万個IPアドレスを振っても⽬⽴った異常はなかったので実⽤性問題なし • TCP Proxyは勉強がてら書いてみた • proxyなので流れてきたデータを右から左に受け流す感じ • 負荷をかけてもメモリ使⽤量は30MBいかないくらい
IPv 6 アドレスの⾃動採番 • fd 00 ::/ 8 IPv 6
ULA(IPv 4 でいうPrivate IPに似ている)から/64で clud fl aredが利⽤するpre fi xを切り出す • 56 bitあるのでちゃんと管理しなくても乱数で決めておけばOK • fd 00 :caca::/ 64 を使う例 • ホスト名のsha 2 5 6 hashを取って上位64bitを取り出す • www.cyberagent.co.jp => ddc 95 2 9 d 2 d 9 d 21 c 4 • pre fi xとsha 25 6 hashの上位64bitをくっつける • fd 00 :caca::ddc 9 : 529 d: 2 d 9 d: 21 c 4 • Cloud fl are Zero TrustのDNS PolicyでOverride Policyを書く • www.cyberagent.co.jp => fd 0 0 :caca::ddc 9 : 529 d: 2 d 9 d: 21 c 4 • プロキシ先に関してのみCloud fl areによりIPv 6 アドレスのみ返却されるのでIPv 6 Single Stackになるが、 TCP Proxyがあるので最終的な転送先がIPv 4 アドレスであっても問題ない
TCP Proxyのアプリでcloud fl aredも管理する • TCP Proxyのプロセス内でcloud fl aredを起動する •
cloud fl aredもGoで実装されているが内部実装が変わって壊れると⾯倒なのでサブプロセス としてcloud fl aredのバイナリを起動
まとめ • Cloud fl are Zero Trustを使ってVPNの代替を実現しました • 85⼈くらいがこのシステムを活⽤しています! •
認可制御もできて運⽤コストも安くて⾮常に満⾜しています! • 他にもセキュリティ機能が⾊々あるので活⽤していきたい • Magic WANやMagic Transitも遊んでみたい • Enterprise契約が必要なので躊躇しています