Azure Database for PostgreSQL フレキシブル サーバーを実行している場合は、主に 2 つのネットワーク オプションがあります。 オプションは、プライベート アクセス (仮想ネットワーク統合) とパブリック アクセス (許可された IP アドレス) です。
パブリック アクセスでは、Azure Database for PostgreSQL フレキシブル サーバー インスタンスにパブリック エンドポイント経由でアクセスします。 既定では、ファイアウォールはサーバーへのすべてのアクセスをブロックします。 サーバーにアクセスできる IP ホストを指定するには、サーバー レベルの ファイアウォール規則を作成します。 ファイアウォール規則では、許可されるパブリック IP アドレス範囲を指定します。 ファイアウォールは、各要求の送信元 IP アドレスに基づいてサーバーへのアクセスを許可します。 プライベート アクセスでは、パブリック エンドポイントは使用できません。また、同じネットワーク上にあるホストのみが Azure Database for PostgreSQL フレキシブル サーバーにアクセスできます。
ファイアウォール規則は、Azure portal または Azure CLI コマンドを使用して作成できます。 サブスクリプションの所有者またはサブスクリプションの共同作成者である必要があります。
サーバー レベルのファイアウォール規則は、同じ Azure Database for PostgreSQL フレキシブル サーバー インスタンス上のすべてのデータベースに適用されます。 この規則は、Azure portal Web サイトへのアクセスには影響しません。
次の図は、インターネットと Azure からの接続試行が、Azure Database for PostgreSQL フレキシブル サーバー データベースに到達する前にファイアウォールを通過する必要がある方法を示しています。
インターネットから接続する
要求の送信元 IP アドレスが、サーバー レベルのファイアウォール規則で指定された範囲内にある場合は、接続が許可されます。 それ以外の場合は拒否されます。
たとえば、アプリケーションが Azure Database for PostgreSQL フレキシブル サーバー用の Java Database Connectivity (JDBC) ドライバーに接続している場合、ファイアウォールが接続をブロックしているため、次のエラーが発生する可能性があります。
- java.util.concurrent.ExecutionException: java.lang.RuntimeException:
- org.postgresql.util.PSQLException: 致命的エラー: ホスト「123.45.67.890」、ユーザー「adminuser」、データベース「postgresql」、SSLに対するpg_hba.confエントリがありません。
注
ローカル コンピューターから Azure Database for PostgreSQL フレキシブル サーバーにアクセスするには、ネットワークとローカル コンピューター上のファイアウォールで TCP ポート 5432 での送信通信が許可されていることを確認します。
Azure から接続する
任意のアプリケーションまたはサービスの送信 IP アドレスを検索し、それらの個々の IP アドレスまたは範囲へのアクセスを明示的に許可することをお勧めします。 たとえば、Azure App Service アプリの送信 IP アドレスを見つけたり、仮想マシンに関連付けられているパブリック IP アドレスを使用したりできます。
Azure サービスで固定の送信 IP アドレスを使用できない場合は、Azure データセンターのすべての IP アドレスからの接続を有効にすることを検討してください。
Azure portal の [ ネットワーク ] ウィンドウで、[ Azure 内の任意の Azure サービスからこのサーバーへのパブリック アクセスを許可する ] チェック ボックスをオンにします。
保存 を選択します。
Important
[ Azure 内の任意の Azure サービスからこのサーバーへのパブリック アクセスを許可 する] オプションでは、他のお客様のサブスクリプションからの接続を含め、Azure からのすべての接続を許可するようにファイアウォールが構成されます。 このオプションを使用する場合は、サインインとユーザーのアクセス許可によって、承認されたユーザーのみにアクセスが制限されていることを確認します。
ファイアウォール規則をプログラムで管理する
Azure portal を使用するだけでなく、Azure CLI を使用してファイアウォール規則をプログラムで管理することもできます。
Azure CLI から、開始アドレスと終了アドレスが 0.0.0.0 に等しいファイアウォール規則設定は、ポータル の Azure サービスからこのサーバーへのパブリック アクセスを許可する オプションと同等の機能を実行します。 ファイアウォール規則によって接続の試行が拒否された場合、アプリは Azure Database for PostgreSQL フレキシブル サーバー インスタンスに到達しません。
ファイアウォールの問題のトラブルシューティング
Azure Database for PostgreSQL フレキシブル サーバー インスタンスへのアクセスが期待どおりに動作しない場合は、次の可能性を考慮してください。
許可リストに対する変更はまだ有効になっていません。Azure Database for PostgreSQL フレキシブル サーバー インスタンスのファイアウォール構成の変更には、最大で 5 分かかる場合があります。
サインインが承認されていないか、正しくないパスワードが使用されました。サインインに Azure Database for PostgreSQL フレキシブル サーバー インスタンスに対するアクセス許可がない場合、またはパスワードが正しくない場合、サーバーへの接続は拒否されます。 ファイアウォール設定を作成すると、クライアントはサーバーへの接続を試みる機会のみが得られます。 各クライアントは、引き続き必要なセキュリティ資格情報を提供する必要があります。
たとえば、JDBC クライアントの認証に失敗すると、次のエラーが表示されることがあります。
java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: 致命的エラー: ユーザー「yourusername」のパスワード認証に失敗しました
ファイアウォールで動的 IP アドレスが許可されていない: 動的 IP アドレス指定を使用したインターネット接続があり、ファイアウォールを通過できない場合は、次のいずれかの解決策を試してください。
Azure Database for PostgreSQL フレキシブル サーバー インスタンスにアクセスするクライアント コンピューターに割り当てられている IP アドレス範囲については、インターネット サービス プロバイダー (ISP) に問い合わせてください。 次に、ファイアウォール規則として IP アドレス範囲を追加します。
代わりにクライアント コンピューターの静的 IP アドレスを取得し、ファイアウォール規則として静的 IP アドレスを追加します。
ファイアウォール規則は IPv6 形式では使用できません。ファイアウォール規則は IPv4 形式である必要があります。 IPv6 形式でファイアウォール規則を指定すると、検証エラーが発生します。