次の方法で共有


パブリック アクセス (許可された IP アドレス) を使用した Azure Database for PostgreSQL のネットワークの概要

この記事では、Azure Database for PostgreSQL フレキシブル サーバー インスタンスの接続とネットワークの概念について説明します。

Azure Database for PostgreSQL フレキシブル サーバー インスタンスを作成するときは、次のいずれかのネットワーク オプションを選択する必要があります。

  • プライベート アクセス (仮想ネットワーク統合)
  • パブリック アクセス (許可された IP アドレス) とプライベート エンドポイント

プライベート アクセスまたはパブリック アクセスのどちらのオプションを使用するかに関係なく、次の特性が適用されます。

  • 許可された IP アドレスからの接続は、有効な資格情報を使用して Azure Database for PostgreSQL フレキシブル サーバー インスタンスに対して認証する必要があります。
  • ネットワーク トラフィックに対して接続の暗号化が適用されます。
  • サーバーには完全修飾ドメイン名 (FQDN) があります。 接続文字列の hostname プロパティには、IP アドレスではなく FQDN を使用することをお勧めします。
  • どちらのオプションでも、データベースまたはテーブルのレベルではなく、サーバー レベルでアクセスが制御されます。 PostgreSQL のロール プロパティを使用して、データベース、テーブル、その他のオブジェクトのアクセスを制御します。

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

ローカル コンピューターから Azure Database for PostgreSQL フレキシブル サーバー インスタンスにアクセスするには、ネットワークとローカル コンピューター上のファイアウォールで TCP ポート 5432 での送信通信が許可されていることを確認します。

プログラム管理によるファイアウォール規則

ファイアウォール規則は、Azure portal の使用に加え、Azure CLI を使用してプログラムで管理することができます。 詳細については、「 ネットワーク」を参照してください。

すべての 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 (パブリック アドレス) の使用は避けてください。

ファイアウォール構成の送信 IP アドレス

Azure Database for PostgreSQL フレキシブル サーバー インスタンスが外部サービス (論理レプリケーション、外部リソースに接続する拡張機能、外部データ ソースなど) への送信接続を行う必要がある場合は、データベース サーバーからのトラフィックを許可するように外部サービスのファイアウォール規則を構成することが必要になる場合があります。

サーバーの IP アドレスの検索

Azure Database for PostgreSQL フレキシブル サーバー インスタンスに現在割り当てられている IP アドレスを検索するには:

  • DNS 解決の使用: サーバーの FQDN (servername.postgres.database.azure.com) を解決して、現在の IP アドレスを取得できます。 nslookupdigなどのツールを使用します。

    nslookup servername.postgres.database.azure.com
    
  • Azure portal の使用: Azure portal で Azure Database for PostgreSQL フレキシブル サーバー インスタンスに移動します。 サーバーのパブリック IP アドレスは直接表示されませんが、サーバーの FQDN を解決することで見つけることができます。

  • Azure CLI の使用: Azure CLI を使用してサーバーに関する情報を取得し、ホスト名を解決できます。

    az postgres flexible-server show --resource-group myResourceGroup --name myServerName
    

送信接続に関する重要な考慮事項

  • IP アドレスは変更される可能性があります。Azure Database for PostgreSQL フレキシブル サーバー インスタンスに割り当てられたパブリック IP アドレスは静的ではなく、メンテナンス、更新、またはその他の運用イベント中に変更される可能性があります。 可能な場合は常に FQDN を使用し、必要に応じて外部ファイアウォール規則を定期的に更新します。

  • Azure データセンターの IP 範囲: より予測可能なファイアウォール構成のために、サーバーが配置されているリージョンの Azure データセンター IP 範囲全体からのトラフィックを許可できます。 Azure は、Azure IP 範囲とサービス タグのダウンロード内の各リージョンの IP 範囲を 発行します。

  • サービス タグ: 接続先の外部サービスも Azure でホストされている場合は、より動的で保守しやすいファイアウォール規則に Azure サービス タグ を使用することを検討してください。

  • プライベート エンドポイントの代替手段: より安定した接続を実現し、パブリック IP アドレスを回避するには、パブリック アクセスではなく プライベート エンドポイントを 使用することを検討してください。