Azure Database for PostgreSQL - Single Server の仮想ネットワーク サービス エンドポイントと規則を使用するUse Virtual Network service endpoints and rules for Azure Database for PostgreSQL - Single Server

仮想ネットワーク規則は、Azure Database for PostgreSQL サーバーが仮想ネットワーク内の特定のサブネットから送信される通信を許可するかどうかを制御する 1 つのファイアウォール セキュリティ機能です。Virtual network rules are one firewall security feature that controls whether your Azure Database for PostgreSQL server accepts communications that are sent from particular subnets in virtual networks. この記事では、仮想ネットワーク規則機能が、場合によっては Azure Database for PostgreSQL サーバーへの通信を安全に許可するための最善の選択になる理由を説明します。This article explains why the virtual network rule feature is sometimes your best option for securely allowing communication to your Azure Database for PostgreSQL server.

仮想ネットワーク規則を作成するには、まず、仮想ネットワーク (VNet) と参照する規則の仮想ネットワーク サービス エンドポイントが必要です。To create a virtual network rule, there must first be a virtual network (VNet) and a virtual network service endpoint for the rule to reference. 次の図は、仮想ネットワーク サービス エンドポイントが Azure Database for PostgreSQL でどのように動作するかを示しています。The following picture illustrates how a Virtual Network service endpoint works with Azure Database for PostgreSQL:

VNet サービス エンドポイントの動作例

注意

この機能は、Azure Database for PostgreSQL が汎用サーバーとメモリ最適化サーバー用にデプロイされている Azure パブリック クラウドのすべてのリージョンで利用できます。This feature is available in all regions of Azure public cloud where Azure Database for PostgreSQL is deployed for General Purpose and Memory Optimized servers. VNet ピアリングでは、トラフィックがサービス エンドポイントを含む共通 VNet Gateway を通過して、ピアにフローするようになっている場合は、ACL/VNet ルールを作成して、Gateway VNet 内の Azure Virtual Machines が Azure Database for PostgreSQL サーバーにアクセスできるようにしてください。In case of VNet peering, if traffic is flowing through a common VNet Gateway with service endpoints and is supposed to flow to the peer, please create an ACL/VNet rule to allow Azure Virtual Machines in the Gateway VNet to access the Azure Database for PostgreSQL server.

用語と説明Terminology and description

仮想ネットワーク: ご自分の Azure サブスクリプションに仮想ネットワークを関連付けることができます。Virtual network: You can have virtual networks associated with your Azure subscription.

サブネット: 仮想ネットワークにはサブネットが含まれます。Subnet: A virtual network contains subnets. 保持している任意の Azure 仮想マシン (VM) がサブネットに割り当てられます。Any Azure virtual machines (VMs) that you have are assigned to subnets. 1 つのサブネットには、複数の VM や他のコンピューティング ノードが含まれる場合があります。One subnet can contain multiple VMs or other compute nodes. お使いの仮想ネットワークの外部にあるコンピューティング ノードは、アクセスを許可するようにセキュリティを構成しない限り、お使いの仮想ネットワークにはアクセスできません。Compute nodes that are outside of your virtual network cannot access your virtual network unless you configure your security to allow access.

仮想ネットワーク サービス エンドポイント: 仮想ネットワーク サービス エンドポイントは、プロパティ値に 1 つ以上の正式な Azure サービスの種類名が含まれるサブネットです。Virtual Network service endpoint: A Virtual Network service endpoint is a subnet whose property values include one or more formal Azure service type names. この記事では、"SQL Database" という名前の Azure サービスを参照する Microsoft.Sql という種類名に注目します。In this article we are interested in the type name of Microsoft.Sql, which refers to the Azure service named SQL Database. このサービス タグは、Azure Database for PostgreSQL サービスと MySQL サービスにも適用されます。This service tag also applies to the Azure Database for PostgreSQL and MySQL services. VNet サービス エンドポイントに Microsoft.Sql サービス タグを適用すると、サブネットの Azure SQL Database、Azure Database for PostgreSQL、および Azure Database for MySQL のすべてのサーバーに対してサービス エンドポイント トラフィックが構成されることに注意することが重要です。It is important to note when applying the Microsoft.Sql service tag to a VNet service endpoint it will configure service endpoint traffic for all Azure SQL Database, Azure Database for PostgreSQL and Azure Database for MySQL servers on the subnet.

仮想ネットワーク規則: Azure Database for PostgreSQL サーバーの仮想ネットワーク規則は、Azure Database for PostgreSQL サーバーのアクセス制御リスト (ACL) に記載されているサブネットです。Virtual network rule: A virtual network rule for your Azure Database for PostgreSQL server is a subnet that is listed in the access control list (ACL) of your Azure Database for PostgreSQL server. Azure Database for PostgreSQL の ACL 内に記載するためには、サブネットに Microsoft.Sql という種類名が含まれている必要があります。To be in the ACL for your Azure Database for PostgreSQL server, the subnet must contain the Microsoft.Sql type name.

仮想ネットワーク規則は、サブネット上にあるどのノードからの通信も許可するように、Azure Database for PostgreSQL サーバーに指示します。A virtual network rule tells your Azure Database for PostgreSQL server to accept communications from every node that is on the subnet.

仮想ネットワーク規則の利点Benefits of a virtual network rule

操作を実行するまで、サブネット上の VM は Azure Database for PostgreSQL と通信できません。Until you take action, the VMs on your subnets cannot communicate with your Azure Database for PostgreSQL server. 通信を確立するアクションの 1 つは、仮想ネットワーク規則の作成です。One action that establishes the communication is the creation of a virtual network rule. VNet ルールの方法を選択する根拠については、ファイアウォールで提供される競合するセキュリティ オプションと比較対照して考察する必要があります。The rationale for choosing the VNet rule approach requires a compare-and-contrast discussion involving the competing security options offered by the firewall.

A.A. Azure サービスへのアクセス許可Allow access to Azure services

接続のセキュリティ ペインには、 [Azure サービスへのアクセスを許可] とラベル付けされた [オン/オフ] ボタンがあります。The Connection security pane has an ON/OFF button that is labeled Allow access to Azure services. [オン] 設定は、すべての Azure IP アドレスと Azure サブネットからの通信を許可します。The ON setting allows communications from all Azure IP addresses and all Azure subnets. これらの Azure IP またはサブネットは、ユーザーが所有していない場合もあります。These Azure IPs or subnets might not be owned by you. この [オン] 設定は、おそらくは Azure Database for PostgreSQL Database に期待する範囲を超えて開かれています。This ON setting is probably more open than you want your Azure Database for PostgreSQL Database to be. 仮想ネットワーク規則機能によって、さらにきめ細かい制御が提供されます。The virtual network rule feature offers much finer granular control.

B.B. IP 規則IP rules

Azure Database for PostgreSQL のファイアウォールでは、Azure Database for PostgreSQL Database への通信が許可される IP アドレス範囲を指定できます。The Azure Database for PostgreSQL firewall allows you to specify IP address ranges from which communications are accepted into the Azure Database for PostgreSQL Database. この方法は、Azure プライベート ネットワークの外部にある安定した IP アドレスに適しています。This approach is fine for stable IP addresses that are outside the Azure private network. しかし、Azure プライベート ネットワーク内にある多数のノードは、動的 IP アドレスで構成されています。But many nodes inside the Azure private network are configured with dynamic IP addresses. 動的 IP アドレスは、VM が再起動されたときなどに変更される場合があります。Dynamic IP addresses might change, such as when your VM is restarted. 運用環境では、ファイアウォール規則に動的 IP アドレスを指定することは、賢明ではありません。It would be folly to specify a dynamic IP address in a firewall rule, in a production environment.

お使いの VM 用に静的 IP アドレスを取得することで、IP のオプションを復旧することができます。You can salvage the IP option by obtaining a static IP address for your VM. 詳細については、「Azure portal を使用して仮想マシンのプライベート IP アドレスを構成する」をご覧ください。For details, see Configure private IP addresses for a virtual machine by using the Azure portal.

ただし、静的 IP の方法は管理が困難になる場合があり、まとめて実行すると負荷がかかります。However, the static IP approach can become difficult to manage, and it is costly when done at scale. 仮想ネットワーク規則を確立して管理するほうが簡単です。Virtual network rules are easier to establish and to manage.

C.C. サービス エンドポイントを定義せずにサブネット上に Azure Database for PostgreSQL を保持することは、まだできませんCannot yet have Azure Database for PostgreSQL on a subnet without defining a service endpoint

Microsoft.Sql サーバーが仮想ネットワーク内のサブネット上のノードであった場合、仮想ネットワーク内のすべてのノードは Azure Database for PostgreSQL サーバーと通信できました。If your Microsoft.Sql server was a node on a subnet in your virtual network, all nodes within the virtual network could communicate with your Azure Database for PostgreSQL server. この場合、仮想ネットワーク規則や IP ルールがなくても、VM は Azure Database for PostgreSQL と通信できました。In this case, your VMs could communicate with Azure Database for PostgreSQL without needing any virtual network rules or IP rules.

しかし、2018 年 8 月時点ではまだ、Azure Database for PostgreSQL サービスは、サブネットに直接割り当てることができるサービスではありません。However as of August 2018, the Azure Database for PostgreSQL service is not yet among the services that can be assigned directly to a subnet.

仮想ネットワーク規則の詳細Details about virtual network rules

このセクションでは、仮想ネットワーク規則に関する詳細について、いくつか説明します。This section describes several details about virtual network rules.

geography 型の 1 つのリージョンのみOnly one geographic region

各仮想ネットワーク サービス エンドポイントは、1 つの Azure リージョンだけに適用されます。Each Virtual Network service endpoint applies to only one Azure region. エンドポイントが他のリージョンを有効にして、サブネットからの通信を許可することはありません。The endpoint does not enable other regions to accept communication from the subnet.

どの仮想ネットワーク規則も、その基本となるエンドポイントが適用先のリージョンに制限されます。Any virtual network rule is limited to the region that its underlying endpoint applies to.

データベース レベルではなく、サーバー レベルServer-level, not database-level

各仮想ネットワーク規則は、サーバー上の 1 つの特定のデータベースだけではなく、Azure Database for PostgreSQL サーバー全体に適用されます。Each virtual network rule applies to your whole Azure Database for PostgreSQL server, not just to one particular database on the server. 言い換えると、仮想ネットワーク規則はデータベース レベルではなく、サーバー レベルに適用されます。In other words, virtual network rule applies at the server-level, not at the database-level.

セキュリティ管理ロールSecurity administration roles

仮想ネットワーク サービス エンドポイントの管理では、セキュリティ ロールが分離されています。There is a separation of security roles in the administration of Virtual Network service endpoints. 以下の各ロールでは、次の操作が必要です。Action is required from each of the following roles:

  • ネットワーク管理者:   エンドポイントを有効にします。Network Admin:   Turn on the endpoint.
  • データベース管理者:   アクセス制御リスト (ACL) を更新して、指定されたサブネットを Azure Database for PostgreSQL サーバーに追加します。Database Admin:   Update the access control list (ACL) to add the given subnet to the Azure Database for PostgreSQL server.

RBAC による代替:RBAC alternative:

ネットワーク管理およびデータベース管理のロールには、仮想ネットワーク規則の管理に必要とされる機能以外もあります。The roles of Network Admin and Database Admin have more capabilities than are needed to manage virtual network rules. それらの機能のうち 1 つのサブネットだけが必要になります。Only a subset of their capabilities is needed.

必要な機能のサブネットのみを保持する単一のカスタム ロールを作成するために、Azure にはロールベースのアクセス制御 (RBAC) を使用するオプションがあります。You have the option of using role-based access control (RBAC) in Azure to create a single custom role that has only the necessary subset of capabilities. ネットワーク管理またはデータベース管理に関連付ける代わりに、カスタム ロールを使用できます。カスタム ロールにユーザーを追加する場合と、他の 2 つの主要な管理者ロールにユーザーを追加する場合では、前者の方がセキュリティ脅威にさらされる領域が少なくなります。The custom role could be used instead of involving either the Network Admin or the Database Admin. The surface area of your security exposure is lower if you add a user to a custom role, versus adding the user to the other two major administrator roles.

注意

Azure Database for PostgreSQL と VNet サブネットが異なるサブスクリプションに存在する場合があります。In some cases the Azure Database for PostgreSQL and the VNet-subnet are in different subscriptions. このような場合は、次の構成を確認する必要があります。In these cases you must ensure the following configurations:

  • 両方のサブスクリプションが同じ Azure Active Directory テナントに存在する必要がある。Both subscriptions must be in the same Azure Active Directory tenant.
  • ユーザーに操作 (サービス エンドポイントの有効化や、特定のサーバーへの VNet サブネットの追加など) を開始するために必要な権限がある。The user has the required permissions to initiate operations, such as enabling service endpoints and adding a VNet-subnet to the given Server.
  • 両方のサブスクリプションに Microsoft.Sql リソース プロバイダーが確実に登録されている。Make sure that both the subscription has the Microsoft.Sql resource provider registered. 詳細については、resource-manager-registration に関するページをご覧くださいFor more information refer resource-manager-registration

制限事項Limitations

Azure Database for PostgreSQL の場合、仮想ネットワーク規則機能には以下のような制限事項があります。For Azure Database for PostgreSQL, the virtual network rules feature has the following limitations:

  • Web アプリは、VNet/サブネット内のプライベート IP にマップできます。A Web App can be mapped to a private IP in a VNet/subnet. サービス エンドポイントが特定の VNet/サブネットから有効化されている場合でも、Web アプリからサーバーへの接続には、VNet/サブネットのソースではなく、Azure のパブリック IP ソースが使用されます。Even if service endpoints are turned ON from the given VNet/subnet, connections from the Web App to the server will have an Azure public IP source, not a VNet/subnet source. サーバーに VNet ファイアウォール規則がある場合、Web アプリからそのサーバーへの接続を有効にするには、サーバーで Azure サービスにサーバーへのアクセスを許可する必要があります。To enable connectivity from a Web App to a server that has VNet firewall rules, you must Allow Azure services to access server on the server.

  • Azure Database for PostgreSQL のファイアウォールでは、各仮想ネットワーク規則はサブネットを参照します。In the firewall for your Azure Database for PostgreSQL, each virtual network rule references a subnet. これらの参照されるサブネットはすべて、Azure Database for PostgreSQL がホストされているのと同じ地理的リージョンでホストされている必要があります。All these referenced subnets must be hosted in the same geographic region that hosts the Azure Database for PostgreSQL.

  • 各 Azure Database for PostgreSQL サーバーは、指定された仮想ネットワークに対して最大 128 個までの ACL エントリを保持できます。Each Azure Database for PostgreSQL server can have up to 128 ACL entries for any given virtual network.

  • 仮想ネットワーク規則はクラシック デプロイ モデル ネットワークではなく、Azure Resource Manager の仮想ネットワークにのみ適用されます。Virtual network rules apply only to Azure Resource Manager virtual networks; and not to classic deployment model networks.

  • Microsoft.Sql サービス タグを使用して Azure Database for PostgreSQL への仮想ネットワーク サービス エンドポイントをオンにすると、次のすべての Azure Database サービスのエンドポイントも有効になります:Azure Database for MySQL、Azure Database for PostgreSQL、Azure SQL Database、Azure SQL Data Warehouse。Turning ON virtual network service endpoints to Azure Database for PostgreSQL using the Microsoft.Sql service tag also enables the endpoints for all Azure Database services: Azure Database for MySQL, Azure Database for PostgreSQL, Azure SQL Database and Azure SQL Data Warehouse.

  • VNet サービス エンドポイントは、汎用サーバーとメモリ最適化サーバーでのみサポートされています。Support for VNet service endpoints is only for General Purpose and Memory Optimized servers.

  • ファイアウォールでは、IP アドレスは以下のネットワーク項目に適用されますが、仮想ネットワーク規則は適用されません。On the firewall, IP address ranges do apply to the following networking items, but virtual network rules do not:

ExpressRouteExpressRoute

ネットワークが ExpressRoute を使用して Azure ネットワークに接続されている場合、各回線は、Microsoft Edge で 2 つのパブリック IP アドレスを使用して構成されています。If your network is connected to the Azure network through use of ExpressRoute, each circuit is configured with two public IP addresses at the Microsoft Edge. 2 つの IP アドレスは、Azure パブリック ピアリングを使用して、Azure Storage などの Microsoft サービスへの接続に使用されます。The two IP addresses are used to connect to Microsoft Services, such as to Azure Storage, by using Azure Public Peering.

回線から Azure Database for PostgreSQL への通信を許可するには、回線のパブリック IP アドレスに対する IP ネットワーク ルールを作成する必要があります。To allow communication from your circuit to Azure Database for PostgreSQL, you must create IP network rules for the public IP addresses of your circuits. ExpressRoute 回線のパブリック IP アドレスを見つけるには、Azure Portal を使用して ExpressRoute のサポート チケットを開きます。In order to find the public IP addresses of your ExpressRoute circuit, open a support ticket with ExpressRoute by using the Azure portal.

VNET サービス エンドポイントをオンにすることなく VNET ファイアウォール規則をサーバーに追加するAdding a VNET Firewall rule to your server without turning On VNET Service Endpoints

単にファイアウォール規則を設定するだけでは、VNet へのサーバーのセキュリティ保護には役立ちません。Merely setting a Firewall rule does not help secure the server to the VNet. セキュリティを有効にするには、VNet サービス エンドポイントをオンにする必要もあります。You must also turn VNet service endpoints On for the security to take effect. サービス エンドポイントをオンにする場合、オフからオンへの切り替えが完了するまで VNet サブネットでダウンタイムが発生します。When you turn service endpoints On, your VNet-subnet experiences downtime until it completes the transition from Off to On. これは、大規模 VNet のコンテキストに特に当てはまります。This is especially true in the context of large VNets. IgnoreMissingServiceEndpoint フラグを使用すると、切り替え中のダウンタイムを軽減または除去できます。You can use the IgnoreMissingServiceEndpoint flag to reduce or eliminate the downtime during transition.

IgnoreMissingServiceEndpoint フラグは、Azure CLI またはポータルを使用して設定できます。You can set the IgnoreMissingServiceEndpoint flag by using the Azure CLI or portal.

次の手順Next steps

VNet ルールの作成については、以下の記事を参照してください。For articles on creating VNet rules, see: