パブリック アクセス (許可された IP アドレス) を使用した Azure Database for PostgreSQL - フレキシブル サーバーのネットワークの概要
適用対象: Azure Database for PostgreSQL - フレキシブル サーバー
この記事では、Azure Database for PostgreSQL - フレキシブル サーバーの接続とネットワークの概念について説明します。
Azure Database for PostgreSQL フレキシブル サーバーを作成するときは、次のいずれかのネットワーク オプションを選択する必要があります。
- プライベート アクセス (仮想ネットワーク統合)
- パブリック アクセス (許可された IP アドレス) とプライベート エンドポイント
プライベート アクセスまたはパブリック アクセスのどちらのオプションを使用するかに関係なく、次の特性が適用されます。
- 許可された IP アドレスからの接続は、有効な資格情報を使用して Azure Database for PostgreSQL フレキシブル サーバーに対して認証する必要があります。
- ネットワーク トラフィックに対して接続の暗号化が適用されます。
- サーバーには完全修飾ドメイン名 (FQDN) があります。 接続文字列の
hostname
プロパティには、IP アドレスではなく FQDN を使用することをお勧めします。 - どちらのオプションでも、データベースまたはテーブルのレベルではなく、サーバー レベルでアクセスが制御されます。 PostgreSQL のロール プロパティを使用して、データベース、テーブル、その他のオブジェクトのアクセスを制御します。
Note
Azure Database for PostgreSQL - フレキシブル サーバーはマネージド データベース サービスであるため、pg_hba.conf
などの構成ファイルを表示、変更するためのホストまたはオペレーティング システム アクセスはユーザーに提供されません。 ファイルの内容は、ネットワーク設定に基づいて自動的に更新されます。
Azure Database for PostgreSQL - フレキシブル サーバーでパブリック アクセス ネットワークを使用する
パブリック アクセス方法を選択すると、インターネット経由でパブリック エンドポイントを介して Azure Database for PostgreSQL フレキシブル サーバーにアクセスできます。 パブリック エンドポイントは、パブリックに解決できる DNS アドレスです。 "許可された IP アドレス" という語句は、サーバーへのアクセス許可を付与することにした IP アドレスの範囲を意味します。 これらのアクセス許可は、ファイアウォール規則と呼ばれます。
次の機能が必要な場合は、このネットワーク オプションを選択します。
- 仮想ネットワークをサポートしていない Azure リソースから接続する。
- VPN または Azure ExpressRoute によって接続されていない Azure 外部のリソースから接続します。
- Azure Database for PostgreSQL フレキシブル サーバーが、インターネットからアクセスできるパブリック エンドポイントを持つようにします。
パブリック アクセスの方法には、以下のような特性があります。
- Azure Database for PostgreSQL フレキシブル サーバーへのアクセス許可を持っているのは、許可されている IP アドレスのみです。 既定では、許可されている IP アドレスはありません。 IP アドレスの追加は、サーバーの作成時または後で行えます。
- Azure Database for PostgreSQL フレキシブル サーバーには、パブリックに解決可能な DNS 名があります。
- Azure Database for PostgreSQL フレキシブル サーバーは、Azure 仮想ネットワークの 1 つではありません。
- サーバーとの間のネットワーク トラフィックは、プライベート ネットワークを経由しません。 このトラフィックでは、一般的なインターネット経路が使用されます。
ファイアウォール規則
サーバー レベルのファイアウォール規則は、同じ Azure Database for PostgreSQL フレキシブル サーバー上のすべてのデータベースに適用されます。 要求のソース IP アドレスがサーバーレベルのファイアウォール規則で指定されたいずれかの IP アドレス範囲内にある場合は、接続が許可されます。 それ以外の場合は拒否されます。 たとえば、アプリケーションが PostgreSQL の 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 portal の使用に加え、Azure CLI を使用してプログラムで管理することができます。 詳細については、「Azure CLI を使用した Azure Database for PostgreSQL - フレキシブル サーバー ファイアウォール規則の作成と管理」を参照してください。
すべての Azure IP アドレスを許可する
任意のアプリケーションまたはサービスの発信 IP アドレスを見つけ、これらの個々の IP アドレスまたは範囲へのアクセスを明示的に許可することをお勧めします。 ご使用の Azure サービスに対して固定の発信 IP アドレスが使用できない場合は、Azure データセンターのすべての IP アドレスからの接続を有効にすることを検討できます。
Azure portal からこの設定を有効にするには、[ネットワーク] ペインで、[Azure 内の Azure サービスからこのサーバーへのパブリック アクセスを許可する] チェックボックスを選択し、[保存] を選択します。
重要
[Azure サービスおよび Azure 内のリソースからのパブリック アクセスを許可する] オプションを選択すると、他の顧客のサブスクリプションからの接続を含め、Azure サービスからのすべての接続を許可するようにファイアウォールが構成されます。 このオプションを選択する場合は、許可されているユーザーのみがアクセスできるように、サインインおよびユーザーのアクセス許可が制限されていることを確認してください。
パブリック アクセスに関する問題をトラブルシューティングする
Azure Database for PostgreSQL - フレキシブル サーバーに期待どおりにアクセスできない場合は、次の点を検討してください。
許可リストに対する変更が反映されていない。 Azure Database for PostgreSQL フレキシブル サーバーのファイアウォール構成に対する変更が有効になるまで 5 分程度の遅延が発生する場合があります。
認証に失敗した。 ユーザーが Azure Database for PostgreSQL フレキシブル サーバーに対するアクセス許可を持っていないか、パスワードが正しくない場合、Azure Database for PostgreSQL フレキシブル サーバーへの接続は拒否されます。 ファイアウォール設定を作成しても、クライアントはサーバーへの接続を試行できるようになるだけです。 各クライアントは、必要なセキュリティ資格情報を提供する必要があることに変わりはありません。
動的なクライアント IP アドレスによりアクセスが妨げられている。 動的 IP アドレス指定によるインターネット接続を使用しており、ファイアウォールの通過に問題が発生している場合は、次の解決策のいずれかをお試しください。
- Azure Database for PostgreSQL フレキシブル サーバーにアクセスするクライアント コンピューターに割り当てられている IP アドレス範囲について、インターネット サービス プロバイダー (ISP) に問い合わせます。 その後、ファイアウォール規則としてその IP アドレス範囲を追加します。
- クライアント コンピューターの静的 IP アドレス指定を代わりに取得します。 その後、ファイアウォール規則として静的 IP アドレスを追加します。
ファイアウォール規則は IPv6 形式で使用できません。 ファイアウォール規則は IPv4 形式である必要があります。 IPv6 形式でファイアウォール規則を指定すると、検証エラーが返されます。
ホスト名
選ぶネットワーク オプションに関係なく、Azure Database for PostgreSQL フレキシブル サーバーに接続する場合は常に、ホスト名として FQDN を使うことをお勧めします。 サーバーの IP アドレスが静的のままであることは保証されません。 FQDN を使うと、接続文字列を変更する必要がなくなります。
ホスト名として FQDN を使用する例は、hostname = servername.postgres.database.azure.com
です。 可能であれば、hostname = 10.0.0.4
(プライベート アドレス) または hostname = 40.2.45.67
(パブリック アドレス) の使用は避けてください。
関連するコンテンツ
- Azure portal または Azure CLI でパブリック アクセス (許可された IP アドレス) オプションを使って Azure Database for PostgreSQL フレキシブル サーバーを作成する方法について学習します。