Cloudflare Zero Trust導入の具体的考慮事項

この記事は、CyberAgent Group SRE Advent Calendar 2024の20日目の記事です。

# はじめに
メディア組織でSREを担当している @niwattittiです。

今年は、世の中的にも個人的にもセキュリティに関することを学ぶ機会が多かったと思います。
今回は既存のVPN製品をCloudflare Zero Trustへ置き換える際の考慮事項についてまとめました。

## Zero Trustとは
Zero Trustモデルは、「信頼しない、常に検証する」という原則に基づいています。
従来のセキュリティモデルでは、内部ネットワーク内のユーザーやデバイスは一度認証されると信頼されることが多かったですが、
Zero Trustではネットワークの内部と外部の区別をせず、すべてのアクセス要求を常に検証します。
Cloudflareは、このZero Trustモデルを実現するためのツールを提供しています。

## 最低限の既存VPNからの置き換えのポイント
- 固定IPを利用できるか
  - IPアドレスでの制限がなかなかなくならないですね。
- サードパーティのidpとの連携があるか
  - 弊社は内製のID Providerがあり、一般的な多要素認証はもちろん、FIDO U2FやWebAuthnにも対応しています。
- GCPやAWSなどのクラウド環境へトンネル接続できるか
  - クラウド環境へのアクセスもセキュアに行いたいですね。
- VPCのCIDRの重複に対応できるか
  - 一部のサービス間で、VPCのCIDRの重複することがあります。

などが挙げられます。

今回、活用するCloudflare Zero Trustでは他にも、
mTLS接続、Shadow IT、CASB、DEX Monitoringなど多くの機能が提供されています。
https://developers.cloudflare.com/cloudflare-one/

また、IaC環境も用意されています。
- https://developers.cloudflare.com/cloudflare-one/api-terraform/
- https://registry.terraform.io/providers/cloudflare/cloudflare/latest

## Cloudflare Zero Trustの機能
### 固定IPの利用
  - Enterpriseの機能ですが、固定IPを利用できます。
  - https://developers.cloudflare.com/cloudflare-one/policies/gateway/egress-policies/
  - 通信量が少なければNAT Gatewayを利用することで、固定IPを利用できます。
### サードパーティのIDPとの連携
  - 一般的なidpとの連携も可能です。
  - https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/
### クラウド環境へのトンネル接続
  - パブリックにルーティング可能な IP アドレスを使用せずに、リソースを Cloudflare に接続する安全な方法を提供しています。
  - https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/
### VPC CIDRの重複に対応
  - 仮想ネットワークを利用することで、CIDRの重複に対応できます。
  - https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/private-net/cloudflared/tunnel-virtual-networks

## 置き換えの流れ
置き換えの手順としては概ね以下のような流れで実施しています。
1. クラウド環境のアカウントリストとへのトンネル接続を洗い出す
2. 固定IPを活用しているサービスを洗い出す
3. サードパーティのidpとの連携をするための、ロール設計をする
4. 設定内容をセキュリティチームや関係者とレビュー
5. 設定後、一部のユーザーでトライアルを実施し、問題を洗い出し対応する
6. 運用マニュアルを作成し、全ユーザーに周知する


## Cloudflare Zero Trustの利用する機能と考慮事項
Cloudflare Zero Trustは、以下の主要なコンポーネントで構成されています。
1. Access: アプリケーションへのアクセス制御を提供し、ユーザーの認証と認可を行います。
2. Gateway: インターネットアクセスのフィルタリングと監視を行い、マルウェアやフィッシング攻撃から保護します。
3. Networks: クラウドネットワークセキュリティを提供し、クラウドネットワークへのアクセスを保護します。
4. WARP Client: セキュアなインターネット接続を提供し、モバイルデバイスやリモートワーカーを保護します。

### 考慮事項 1: WARP Clientの設定とsplit tunnelの活用
この中のWARP Clientの設定に、Device settingsがありsplit tunnelを設定できます。
この設定を利用することで、社内のアプリケーションへのアクセスはCloudflare Zero Trustを経由し、
それ以外は通常のインターネット接続を利用するといった設定が可能です

考慮事項としては、以下の点が挙げられます
- 全ての通信をCloudflare Zero Trustへ向け、excludeの設定を行い特定のIPやHostに対して通常のインターネット接続を利用するか
- 利用する社内のサービスのみCloudflare Zero Trustへ向け、その他の通信は通常のインターネット接続を利用するか

これは、ログの取得や、shadow ITの発見などに影響があるため、慎重に設定する必要があります。

### 考慮事項 2: ログ取得における個人のプライバシーとTLSの複合化
####  個人のプライバシー
Gatewayのログの取得については、従業員の個人情報 (PII) を安全に処理するための複数の方法を提供されています。
https://developers.cloudflare.com/cloudflare-one/insights/logs/gateway-logs/manage-pii/

秘匿化は可能ですが、shadow ITの発見やセキュリティインシデントの調査において個人を特定できないため、影響が出る可能性があります。
慎重に設定する必要があります。

#### TLSの複合化
GatewayでHTTP通信をフィルターする際に、TLSの複合化を行うことが必須です。
暗号化されたWebサイトにHTTPポリシーを適用したり、カスタムブロックページを表示したりする場合には、証明書が必要です。

複合化の設定する場合、split tunnelの設定で除外しないと特定のサービスは証明書のエラーが発生するため、注意が必要です。
各サービスごとにプロキシ サーバーまたはファイアウォールの構成の設定があります。
例) github
https://docs.github.com/ja/copilot/managing-copilot/managing-github-copilot-in-your-organization/configuring-your-proxy-server-or-firewall-for-copilot


## おわりに
Cloudflare Zero Trustへ置き換える際の考慮事項についてまとめました。Zero Trustモデルは、従来のセキュリティモデルとは異なり、より厳格なアクセス制御を提供します。
これにより、セキュリティの強化が期待できますが、設定や運用には注意が必要です。

今後は、Posture Findings、Shadow IT Discovery、Cloudflare Browser Isolationを活用したセキュリティ対策の強化を行っていきたいと考えています。

以上、CyberAgent Group SRE Advent Calendar 2024の20日目の記事でした。

https://qiita.com/advent-calendar/2024/ca-sre