Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Cloudflare Tunnel とネットワークポリシーで MySQL データベースへアクセスし保護する

最終更新 Markdown で表示Agent セットアップ

Cloudflare Tunnel のプライベートネットワークを使うと、データベースなどブラウザー以外の任意の TCP/UDP アプリケーションに接続できます。Cloudflare One Client を使い、誰が何にアクセスできるかを定義するゼロトラスト制御のネットワークポリシーを設定できます。

このチュートリアルの最後には、ネットワークポリシーを通過したユーザーが、Cloudflare Tunnel 経由で TCP ポート 3306 のリモート MySQL データベースへアクセスできるようになります。

始める前に

次を用意してください。

  • リモート接続を待ち受け、リモートから接続できるユーザーを設定した MySQL データベース
  • (任意)アカウントで リゾルバーポリシー が有効になっていること

Cloudflare Tunnel を作成する

プライベートネットワーク上のサーバーに cloudflared をインストールします。このサーバーは MySQL データベースへ到達できる必要があります。

  1. Cloudflare ダッシュボードにログインし、Networking > Tunnels を開きます。

    Tunnels を開く ↗
  2. Create a tunnel を選択します。

  3. トンネルの名前を入力します。このトンネル経由で接続するリソースの種類がわかる名前(例: enterprise-VPC-01)を推奨します。

  4. Create Tunnel を選択します。

  5. オペレーティングシステムを選び、インストールコマンドをコピーして、オリジンサーバーのターミナルで実行します。

  6. トンネルの接続を待ちます。接続が確立したら Continue を選択します。

プライベートネットワークのルートを追加する

  1. Cloudflare ダッシュボードで Networking > Routes を開きます。

    Routes を開く ↗
  2. Create route > Tunnel CIDR を選びます。作成したトンネルを選び、MySQL サーバーのプライベート IP/CIDR(例: 10.128.0.175/32)を入力し、Create route を選びます。

  3. (任意)内部 DNS サーバーのプライベート IP/CIDR 向けに、2 本目のルートを同じ手順で作成します。

これでアプリケーションと(任意の)DNS サーバーが Cloudflare に接続されます。

Gateway ネットワークポリシーを作成する

  1. Traffic policies > Network policies を開きます。
  2. MySQL データベースのプライベート IP アドレスとポート(デフォルトはポート 3306)を対象とする ネットワークポリシー を追加します。次の例は、@example.com のメールアドレスで Cloudflare One Client に登録したユーザーへ、データベースへのアクセスを許可します。ネットワークポリシーは デバイスポスチャチェック も考慮できます。
セレクター 演算子 論理 アクション
Destination IP in 10.128.0.175 And Allow
Destination Port in 3306 And
User Email matches regex .*example.com

上記の Allow ルールに加え、ネットワークポリシー一覧の末尾に キャッチオールの Block ポリシー を追加し、デフォルト拒否モデルにすることを推奨します。

許可された Cloudflare One Client ユーザーは、任意の MySQL クライアントで 10.128.0.175 の MySQL サーバーへ接続できます。

(任意)Gateway リゾルバーポリシーを作成する

プライベート IP アドレスではなく内部ホスト名で MySQL データベースへアクセスできるようにするには、Gateway リゾルバーポリシーを設定します。

  1. Traffic policies > Resolver policies を開きます。

  2. Add a policy を選びます。

  3. アプリケーションのプライベート ドメイン または ホスト名 に一致する式を作成します。次の例を参照してください。

    セレクター 演算子
    Domain in internalrecord.com
  4. Select DNS resolverConfigure custom DNS resolvers を選びます。

  5. DNS サーバーのプライベート IP アドレスを入力します。

  6. ドロップダウンで <IP-address> - Private を選びます。

  7. (任意)カスタムポートを入力します。

  8. Create policy を選びます。

内部 DNS サーバーに MySQL データベースの A レコードがある場合、ユーザーはそのレコードでサーバーへ接続できます。たとえば、次のエントリを含む BIND サーバーがあるとします。

mysql IN A 10.128.0.175

許可された Cloudflare One Client ユーザーは、任意の MySQL クライアントで mysql.internalrecord.com の MySQL データベースへ接続できます。

役に立ちましたか?