概要
この記事は、GCE上に構築したDifyコミュニティ版のモック環境を、社内VPN接続ユーザーのみがアクセスできるよう、GCPファイアウォールを設定方法を説明したものです。
前提条件
- GCPプロジェクト、GCEインスタンスが作成済みであること。
- Difyコミュニティ版がDockerでデプロイされ、正常に起動していること。
- 社内VPN接続時に利用されるIPアドレスレンジが判明していること。
- GCPへのアクセス権限(Compute Engineの編集権限など)があること。
手順
1. ネットワークの確認
まず、GCEインスタンスが属するネットワークを確認します。
- GCPコンソールにログインします。
- ナビゲーションメニューから「Compute Engine」→「VMインスタンス」を選択します。
- Difyが稼働しているインスタンスの名前をクリックします。
- インスタンスの詳細ページで、「ネットワークインターフェース」のセクションを確認し、該当するネットワーク名(例:
default
)をメモします。
2. ファイアウォールルールの作成
次に、社内VPNからのアクセスを許可するファイアウォールルールを作成します。
- GCPコンソールで、ナビゲーションメニューから「VPCネットワーク」→「ファイアウォール」を選択します。
- 画面上部の「ファイアウォールルールを作成」ボタンをクリックします。
- 以下の情報を入力します。
- 名前:
allow-dify-from-vpn
(識別しやすい名前を付けてください) - ネットワーク: 手順1で確認したネットワーク名 (例:
default
) - 優先度:
1000
(デフォルト値で問題ありません。他のルールとの優先度関係で調整が必要な場合もあります) - 方向: 「入力」を選択
- 一致するルール:
- ソースフィルタ: 「IPアドレス範囲」を選択
- ソースIPアドレス範囲: 社内VPNで使用するIPアドレスレンジを入力します。(例:
10.0.0.0/16
) 複数のレンジがある場合は、カンマ区切りで指定します。 - 登録するIPアドレスはGCEの外部IPへ接続するので、グローバルIPの設定が必要
- プロトコルとポート:
- 「指定したプロトコルとポート」を選択
- Difyが使用するプロトコルとポートを指定します。通常は、
tcp
で、ポート番号は80
(HTTP) または443
(HTTPS) など、Difyの設定に合わせて指定します。 例えば、HTTPSでポート443の場合はtcp:443
と入力します。
- ターゲット:
- 「指定されたターゲットタグ」を選択
- ターゲットタグに、GCEインスタンスに設定されているタグを入力します。タグがない場合は、インスタンスの詳細ページで設定するか、「すべてのインスタンス」を選択することもできますが、セキュリティリスクが高まる可能性があります。
- タグを設定していない場合は、GCEインスタンスの詳細ページで、「ネットワークタグ」にタグを追加し、そのタグ名をここに指定してください。(例:
dify-instance
)
- 名前:
- 画面下部の「作成」ボタンをクリックします。
3. ファイアウォールルールの確認
作成したファイアウォールルールが有効になっていることを確認します。
- 「VPCネットワーク」→「ファイアウォール」の画面で、作成したルール (
allow-dify-from-vpn
) がリストに表示されていることを確認します。 - ルールの「有効」列が「はい」になっていることを確認します。
4. GCEインスタンスへのタグ適用(ターゲットタグを使用する場合)
ファイアウォールルールでターゲットタグを指定した場合、GCEインスタンスにそのタグが設定されていることを確認します。
- 「Compute Engine」→「VMインスタンス」から、Difyが稼働しているインスタンスを選択します。
- 「編集」ボタンをクリックします。
- 「ネットワークタグ」に、手順2で指定したタグ名が入力されていることを確認します。 入力されていなければ、タグ名を入力して「保存」をクリックします。
5. 動作確認
社内VPNに接続した状態で、Difyのモック環境にアクセスできることを確認します。 ブラウザでDifyのURL(例: http://<GCEインスタンスの外部IPアドレス>
または、HTTPSを設定している場合は https://<GCEインスタンスの外部IPアドレス>
) を開いて、Difyの画面が表示されることを確認してください。
6. デフォルト拒否ルールの設定(推奨)
セキュリティを強化するため、明示的に許可したトラフィック以外はすべて拒否するファイアウォールルールを作成することを推奨します。
- 「VPCネットワーク」→「ファイアウォール」画面で、「ファイアウォールルールを作成」をクリックします。
- 以下の情報を入力します。
- 名前:
deny-all-ingress
(識別しやすい名前を付けてください) - ネットワーク: 手順1で確認したネットワーク名 (例:
default
) - 優先度:
65535
(最も低い優先度) - 方向: 「入力」を選択
- 一致するルール:
- ソースフィルタ: 「IPアドレス範囲」を選択
- ソースIPアドレス範囲:
0.0.0.0/0
(すべてのIPアドレス)
- ターゲット:
- 「すべてのインスタンス」を選択
- アクション:
- 「拒否」を選択
- 名前:
- 画面下部の「作成」ボタンをクリックします。
注意点
- GCEインスタンスに割り当てられているサービスアカウントに、適切な権限が付与されていることを確認してください。
- 社内VPNの構成によっては、上記のIPアドレスレンジの設定だけではアクセスできない場合があります。必要に応じて、VPNの設定も確認してください。
- この手順は基本的な設定例です。より詳細なセキュリティ要件に合わせて、ファイアウォールルールを調整してください。
- HTTPSを使用する場合は、GCEインスタンスにSSL証明書を設定する必要があります。Let's Encryptなどを利用して無料で証明書を取得できます。
- Difyのポート番号がデフォルト(例:3000)から変更されている場合は、ファイアウォールルールにも反映してください。
トラブルシューティング
- アクセスできない場合:
- ファイアウォールルールが有効になっているか確認してください。
- GCEインスタンスのネットワークタグが正しく設定されているか確認してください。
- 社内VPNのIPアドレスレンジがファイアウォールルールに正しく設定されているか確認してください。
- Difyが正常に起動しているか確認してください。
- ブラウザのキャッシュをクリアして、再度アクセスしてみてください。
- ログの確認:
- GCPのCloud Loggingで、ファイアウォールルールのログを確認できます。アクセスが拒否されている場合、ログに記録されます。