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
3.7k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cloudflare Zero Trustを利用したセキュアな開発環境へのアクセス手法の確立
Cloudflare Meet-up Tokyo Vol.2で発表した資料です
https://cfm-cts.connpass.com/event/291753/
Kurochan
September 06, 2023
More Decks by Kurochan
See All by Kurochan
ABEMAのバグバウンティの取り組み
kurochan
1
1k
2026年の個人的テーマ: 「計算機を燃やせ🔥」
kurochan
1
150
つなぐ、届ける、変える- コンテンツ配信の最前線ト——ク
kurochan
0
140
サイバーエージェント流クラウドコスト削減施策「みんなで金塊堀太郎」
kurochan
4
3.2k
AWS Elemental MediaPackageと格闘🤼
kurochan
2
110
サイバーエージェントでのSlack活用事例 @ 2025
kurochan
5
250
15年入社者に聞く! これまでのCAのキャリアとこれから
kurochan
1
370
入門 電気通信事業者
kurochan
13
5.8k
AWS x さくらのクラウドのハイブリッドクラウドによる安価なフレッツ閉域網接続の実装
kurochan
9
6.3k
Other Decks in Technology
See All in Technology
Deep Data Security 機能解説
oracle4engineer
PRO
2
110
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
1
310
ロボティクスの技術 / Robotics Technology
ks91
PRO
0
130
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
5
1.7k
千葉での単身赴任からAWSをやり続け、千葉に戻ってきた話
yama3133
1
120
Kiro Ambassador を目指す話
k_adachi_01
0
130
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
150
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
0
130
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
270
現場のトークンマネジメント
dak2
1
190
Microsoft のサポートとフィードバック総まとめ
murachiakira
PRO
0
110
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.5k
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
470
Tell your own story through comics
letsgokoyo
1
960
Technical Leadership for Architectural Decision Making
baasie
3
420
Making Projects Easy
brettharned
120
6.7k
Code Reviewing Like a Champion
maltzj
528
40k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Odyssey Design
rkendrick25
PRO
2
700
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Producing Creativity
orderedlist
PRO
348
40k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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契約が必要なので躊躇しています