Azure Database for PostgreSQL - フレキシブル サーバーにおけるファイアウォール規則
適用対象: Azure Database for PostgreSQL - フレキシブル サーバー
Azure Database for PostgreSQL - フレキシブル サーバーを実行しているときは、主なネットワーク オプションとして次の 2 つがあります。 これらのオプションは、プライベート アクセス (仮想ネットワーク統合)とパブリック アクセス (許可されている IP アドレス) です。
パブリック アクセスを使用すると、Azure Database for PostgreSQL フレキシブル サーバー インスタンスへのアクセスはパブリック エンドポイント経由となります。 既定では、ファイアウォールによってサーバーへのすべてのアクセスがブロックされます。 サーバーにアクセスできる IP ホストを指定するには、サーバー レベルのファイアウォール規則を作成します。 ファイアウォール規則は、許可されるパブリック IP アドレス範囲を指定します。 ファイアウォールは、各要求の送信元 IP アドレスに基づいてサーバーへのアクセス権を付与します。 プライベート アクセスではパブリック エンドポイントは使用できません。Azure Database for PostgreSQL フレキシブル サーバーにアクセスできるのは、同じネットワーク上にあるホストのみです。
Microsoft Azure portal または Azure CLI コマンドを使用してファイアウォール規則を作成できます。 サブスクリプション所有者またはサブスクリプション共同作成者である必要があります。
サーバー レベルのファイアウォール規則は、同じ Azure Database for PostgreSQL フレキシブル サーバー インスタンス上のすべてのデータベースに適用されます。 ルールは、Azure portal の Web サイトへのアクセスに影響しません。
以下の図のとおり、インターネットや Azure からの接続試行は、Azure Database for PostgreSQL フレキシブル サーバー データベースに到達する前に、ファイアウォールを通過する必要があります。
インターネットからの接続
要求のソース IP アドレスがサーバーレベルのファイアウォール規則で指定されたいずれかの IP アドレス範囲内にある場合は、接続が許可されます。 それ以外の場合は拒否されます。
たとえば、アプリケーションが Azure Database for PostgreSQL フレキシブル サーバーの Java Database Connectivity (JDBC) ドライバーで接続している場合、ファイアウォールが接続をブロックしているため、次のエラーが発生するおそれがあります。
java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "123.45.67.890", user "adminuser", database "postgresql", SSL
Note
ローカル コンピューターから Azure Database for PostgreSQL - フレキシブル サーバーにアクセスするには、ネットワークとローカル コンピューターのファイアウォールで、TCP ポート 5432 で送信方向の通信が確実に許可されているようにします。
Azure から接続する
任意のアプリケーションまたはサービスの発信 IP アドレスを見つけ、これらの個々の IP アドレスまたは範囲へのアクセスを明示的に許可することをお勧めします。 例えば、Azure App Service アプリの発信 IP アドレスを見つけたり、仮想マシンに結びついているパブリック IP アドレスを利用したりすることができます。
ご使用の Azure サービスに対して固定の発信 IP アドレスが使用できない場合は、Azure データセンターのすべての IP アドレスからの接続を有効にすることを検討します。
- Azure portal の [ネットワーク] ペインで、 [Azure 内の Azure サービスからこのサーバーへのパブリック アクセスを許可する] チェックボックスを選択します。
- [保存] を選択します。
重要
[Azure 内の Azure サービスからこのサーバーへのパブリック アクセスを許可する] オプションを選択すると、他の顧客のサブスクリプションからの接続を含め、Azure サービスからのすべての接続を許可するようにファイアウォールが構成されます。 このオプションを選択する場合は、サインインおよびユーザーのアクセス許可が制限されていることを確認してください。
プログラムによってファイアウォール規則を管理する
ファイアウォール規則は、Microsoft Azure portal の使用に加え、Azure CLI を使用してプログラムで管理することができます。
Azure CLI から、開始アドレスと終了アドレスが 0.0.0.0 のファイアウォール規則設定では、ポータルの [Azure 内の任意の 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:FATAL: password authentication failed for user "yourusername"
ファイアウォールが動的 IP アドレスを許可しない: 動的 IP アドレス指定によるインターネット接続を使用しており、ファイアウォールの通過に問題が発生している場合は、次の解決策のいずれかをお試しください。
Azure Database for PostgreSQL フレキシブル サーバー インスタンスにアクセスするクライアント コンピューターに割り当てられている IP アドレス範囲について、インターネット サービス プロバイダー (ISP) に問い合わせます。 その後、ファイアウォール規則としてその IP アドレス範囲を追加します。
代わりに、クライアント コンピューター用に静的 IP アドレスを取得し、ファイアウォール規則としてその静的 IP アドレス範囲を追加してください。
ファイアウォール規則が IPv6 形式で使用できない: ファイアウォール規則は IPv4 形式である必要があります。 IPv6 形式でファイアウォール規則を指定すると、検証エラーが返されます。