次の方法で共有


Azure Cosmos DB の IP ファイアウォールを構成する

Azure Cosmos DB では、アカウントに格納されているデータをセキュリティで保護するために、強力なハッシュベースのメッセージ認証コード (HMAC) を使用してシークレットベースの承認モデルを使用します。 さらに、Azure Cosmos DB では、受信ファイアウォールのセキュリティに IP ベースのアクセス制御が使用されます。 このモデルは、従来のデータベース システムのファイアウォール規則に似ていて、アカウントに別のセキュリティレイヤーを追加します。 ファイアウォールを使用して、承認された一連のマシンまたはクラウド サービスからのアクセスのみを許可するように Azure Cosmos DB アカウントを構成します。 これらの承認されたマシンとサービスから Azure Cosmos DB データベースに格納されているデータにアクセスするには、呼び出し元が有効な承認トークンを提示する必要があります。

IP アクセス制御

要求に有効な承認トークンが含まれている場合、既定では、Azure Cosmos DB アカウントにインターネットからアクセスできます。 IP ポリシー ベースのアクセス制御を構成するためには、特定の Azure Cosmos DB アカウントにアクセスするクライアント IP の許可リストとして追加する一連の IP アドレスまたは IP アドレス範囲を CIDR (Classless Inter-Domain Routing) 形式でユーザーが指定する必要があります。 この構成を適用すると、この許可リストの外部にあるマシンからの要求はすべて、403 (禁止) 応答を受け取ります。 IP ファイアウォールを使用する場合、一部のシナリオでは Azure portal からのアクセスを有効にする必要があります。 詳細については、 Azure portal からの許可要求に関するページを参照してください。 NoSQL、Gremlin、または Table アカウント用の API にデータ エクスプローラーを使用する場合は、ファイアウォール設定を更新して、現在の IP アドレスをファイアウォール規則に追加する必要もあります。 ファイアウォールの変更が反映されるまでに最大 15 分かかる場合があり、この期間中にファイアウォールの動作に一貫性がない可能性があります。

IP ベースのファイアウォールとサブネットと仮想ネットワークアクセス制御を組み合わせます。 これらを組み合わせることで、パブリック IP を保持する任意のソースへのアクセスや、仮想ネットワーク内の特定のサブネットからのアクセスを制限できます。 サブネットと仮想ネットワークベースのアクセス制御に関する詳細については、仮想ネットワークから Azure Cosmos DB リソースへのアクセスに関するページを参照してください。

要約すると、Azure Cosmos DB アカウントにアクセスするには、常に承認トークンが必要です。 IP ファイアウォールと仮想ネットワーク アクセス制御リスト (ACL) が設定されていない場合は、認可トークンを使用して Azure Cosmos DB アカウントにアクセスできます。 Azure Cosmos DB アカウントの IP ファイアウォール規則または仮想ネットワーク アクセス リストを設定すると、許可されたソースからの要求のみが機能します。 これらの要求には、応答を取得するための有効な承認トークンも含まれている必要があります。

ご利用の Azure Cosmos DB アカウントに格納されたデータは、IP ファイアウォールを使用することによりセキュリティで保護することができます。 Azure Cosmos DB では、受信ファイアウォールをサポートするために IP ベースのアクセス制御に対応しています。 次のいずれかの方法を使用して、Azure Cosmos DB アカウントに IP ファイアウォールを設定します。

  • Azure portal から
  • Azure Resource Manager テンプレートを使用した宣言による
  • Azure CLI または Azure PowerShell を介してプログラムで、ipRangeFilter プロパティを更新する。

Azure portal を使用して IP ファイアウォールを構成する

Azure portal で IP アクセス制御ポリシーを構成するには、Azure Cosmos DB アカウント ページに移動し、ナビゲーション メニューで [ネットワーク] を選択します。 [アクセス を許可 する] の値を [選択したネットワーク] に設定し、[ 保存] を選択します。 まだ IP アドレスを追加していない場合は、 チェック ボックスをオンにして、すべての VNet と IP がブロックされていることを確認する必要もあります。 パブリック ネットワーク アクセス設定を変更した場合 (オフにしたり、すべてのネットワークに接続させるなど)、前に設定したすべてのファイアウォール IP アドレスが削除されます。

Azure portal での Azure Cosmos DB ネットワークのファイアウォール設定のスクリーンショット。

IP アクセス制御がオンの場合、Azure portal では、IP アドレス、IP アドレス範囲、およびスイッチを指定できます。 スイッチを使用して、他の Azure サービスと Azure portal にアクセスすることができます。 以下のセクションでは、これらのスイッチの詳細について説明します。

注意

Azure Cosmos DB アカウントの IP アクセス制御を有効にすると、許可された IP アドレスからの要求のみが自分のアカウントに到達できます。 IP アドレスが許可リストにない場合、その要求はブロックされます。 ポータルへのアクセスを許可しない限り、Azure portal で Cosmos DB リソースを参照することもできません。

Azure portal からの要求を許可する

IP アクセス制御ポリシーをプログラムで有効にする場合、ポータル機能を使用し続けるために、Azure portal サービスの IP アドレスを ipRangeFilter プロパティに追加することが必要になる場合があります。

このオプションを有効にする必要があるポータル シナリオは次のとおりです。

  • 特に MongoDB 用の API または Apache Cassandra 用 API の場合は、Data Explorer または https://cosmos.azure.com
  • すべての API で、Azure portal 内で次の Azure Cosmos DB セクションを使用します。
    • コレクションを閲覧する
    • Power BI
    • Azure Synapse

次のスクリーン ショットに示すように、[Azure portal ミドルウェア IP] オプションを選択することで、Azure portal へのアクセス要求を有効にできます。

Azure portal でミドルウェア IP アドレスをネットワークに追加するオプションのスクリーンショット。

次のスクリーンショットに示すように、Azure portal ミドルウェアの IP アドレスは別の一覧に追加されます。 [ 保存] を 選択して、これらのアドレスをデータベース アカウントに追加します。 ミドルウェアの IP アドレスの詳細については、この記事で詳しく説明します。

Azure portal でのネットワークのミドルウェア IP アドレスの一覧のスクリーンショット。

Azure portal ミドルウェア IP アドレスを削除するには、[ Azure Portal ミドルウェア IP の削除 ] オプションを選択し、[保存] を選択 します

Azure portal ミドルウェアの IP アドレス

Azure portal ミドルウェアの IP アドレスの一覧を次に示します。 IP アドレスの中には、特定のデータベース アカウント API にのみ必要なものがあります。 前に説明したように、ポータルでミドルウェア IP アドレスを追加すると、アカウントに必要な IP アドレスのみが追加されます。

次に例を示します。

  • NoSQL 用 API アカウントの場合は、[ すべて ] カテゴリの IP アドレスが追加されます。
  • MongoDB 用 API アカウントの場合、 All カテゴリと MongoDB カテゴリのみの IP アドレスが追加されます。
Azure パブリック
データベース アカウント API IP アドレス
すべて 13.91.105.2154.210.172.10713.88.56.14840.91.218.243
MongoDB のみ 20.245.81.5440.118.23.12640.80.152.19913.95.130.121
Apache Cassandra のみ 40.113.96.14104.42.11.145137.117.230.240168.61.72.237
21Vianet によって運営される Azure
データベース アカウント API IP アドレス
すべて 163.228.137.6143.64.170.142
MongoDB のみ 52.131.240.99143.64.61.130
Apache Cassandra のみ 40.73.99.146143.64.62.47
Azure 米国政府機関
データベース アカウント API IP アドレス
すべて 52.247.163.652.244.134.181
MongoDB のみ 52.244.176.11252.247.148.42
Apache Cassandra のみ 52.244.50.10152.227.165.24

レガシ ミドルウェア IP アドレス

Cosmos DB ポータル サービスは最近、新しいミドルウェア IP アドレスを必要とする新しいインフラストラクチャに移行しました。 移行が完了したことで、古いインフラストラクチャで使用されているレガシ IP アドレスは安全に削除できます。 アカウントにファイアウォール規則にレガシ ミドルウェア IP アドレスが存在する場合は、[ Azure Portal レガシ ミドルウェア IP の削除 ] オプションが表示されます。 そのオプションを選択し、[保存] を選択して、レガシ IP アドレスを削除します。

Azure portal でネットワークのレガシ ミドルウェア IP アドレスを削除するオプションのスクリーンショット。

レガシ IP アドレスはクラウド環境によって異なります。

Azure 環境 IP アドレス
Azure パブリック 104.42.195.9240.76.54.13152.176.6.3052.169.50.4552.187.184.26
21Vianet によって運営される Azure 139.217.8.25252.176.6.3052.169.50.4552.187.184.26
Azure 米国政府機関 52.244.48.7152.176.6.3052.169.50.4552.187.184.26

注意

データ エクスプローラーから Azure Cosmos DB アカウントに接続する際に問題が発生している場合は、 データ エクスプローラーのトラブルシューティング ガイドを確認してください。

世界中の Azure データ センターまたは Azure 内の他のソースからの要求を許可する

Azure Stream Analytics や Azure Functions などの一部の Azure サービスでは、固定 IP アドレスを使用しません。 引き続き IP ファイアウォールを使用して、これらのサービスのアクセスを制御できます。 他の Azure リソースからのアクセスを許可するには、[ Azure データセンター内からの接続を受け入れる ] オプションを選択します。 このオプションを使用すると、Azure で実行されているサービスが Cosmos DB アカウントに接続できます。

Azure portal でパブリック Azure データセンター内からの接続を受け入れるオプションのスクリーンショット。

このオプションを有効にすると、IP アドレス 0.0.0.0 が、許可される IP アドレスの一覧に追加されます。 0.0.0.0 の IP アドレスにより、要求が、Azure データセンターの IP 範囲からご利用の Azure Cosmos DB アカウントに制限されます。 この設定では、その他の IP 範囲からご利用の Azure Cosmos DB アカウントへのアクセスは許可されません。

注意

publicNetworkAccess を無効に設定すると、 Azure データセンター内からの接続を受け入れる オプションよりも優先されます。 「アカウントの作成中のパブリック ネットワーク アクセスのブロック」を参照してください

注意

このオプションでは、Azure にデプロイされた他のお客様のサブスクリプションからの要求を含む、Azure からのすべての要求を許可するようにファイアウォールが構成されます。 このオプションで許可される IP のリストは非常に範囲が広くなるので、ファイアウォール ポリシーの有効性が制限されます。 このオプションは、ご利用の要求が静的 IP または仮想ネットワーク内のサブネットから発生しない場合にのみ使用してください。 このオプションを選択すると Azure portal からのアクセスは自動的に許可されるようになります。これは、Azure portal が Azure にデプロイされているからです。

現在ご利用の IP からの要求

開発を簡略化するために、Azure portal はクライアント マシンの IP を識別し、許可リストに追加するのに役立ちます。 マシンを実行しているアプリから Azure Cosmos DB アカウントにアクセスすることができます。

ポータルでは自動的にクライアントの IP アドレスが検出されます。 ご利用のマシンのクライアント IP アドレスである場合や、ご利用のネットワーク ゲートウェイの IP アドレスである場合があります。 運用環境にご利用のワークロードを移行する前に、この IP アドレスを必ず削除してください。

現在の IP を IP の一覧に追加するには、[現在の IP を追加する] を選択します。 その後、 [保存] を選びます。

Azure portal で現在の IP アドレスをネットワークに追加するオプションのスクリーンショット。

クラウド サービスからの要求

Azure では、Azure Cosmos DB を使用して中間層のサービス ロジックをホストする手段としてクラウド サービスがよく利用されます。 クラウド サービスが Azure Cosmos DB アカウントに接続できるようにするには、クラウド サービスのパブリック IP アドレスを許可された IP リストに追加します。 この操作は、Azure portal で IP アクセス制御ポリシーを更新することで実行できます。 この手順により、クラウド サービスのすべてのロール インスタンスが Azure Cosmos DB アカウントにアクセスできるようになります。

クラウド サービスの IP アドレスは Azure Portal で確認できます。次のスクリーンショットをご覧ください。

Azure portal に表示されるクラウド サービスのパブリック IP アドレスを示すスクリーンショット。 ロール インスタンスを追加してクラウド サービスをスケールアウトすると、新しいインスタンスは同じクラウド サービスの一部であるため、Azure Cosmos DB アカウントに自動的にアクセスできます。

仮想マシンからの要求

Azure Cosmos DB を使用する中間層サービスのホスティングには、仮想マシンまたは仮想マシン スケール セットを使用することもできます。 仮想マシンが Azure Cosmos DB アカウントに接続できるようにするには、そのパブリック IP アドレスを許可リストに追加します。 この手順は、IP アクセス制御ポリシーを更新することで実行できます。 この構成は、仮想マシン スケール セットでも機能します。 パブリック IP アドレスを追加すると、仮想マシンは Cosmos DB アカウントにアクセスできます。

仮想マシンの IP アドレスは Azure portal で取得できます。次のスクリーンショットを参照してください。

Azure portal に表示される仮想マシンのパブリック IP アドレスを示すスクリーンショット。

このグループに仮想マシン インスタンスを追加した場合、それらのインスタンスにも自動的にご利用の Azure Cosmos DB アカウントへのアクセス権が割り当てられます。

インターネットからの要求

インターネット上のコンピューターから Azure Cosmos DB アカウントに接続するには、そのコンピューターの IP アドレスまたは IP 範囲を許可リストに追加します。 この一覧に追加したコンピューターのみが Cosmos DB アカウントにアクセスできます。

ファイアウォールにアウトバウンド規則を追加する

ファイアウォール設定に追加する送信 IP 範囲の現在の一覧を取得するには、「 Azure IP 範囲とサービス タグのダウンロード」を参照してください。

この一覧を自動化するには、「Service Tag Discovery API を使用する」を参照してください。

Resource Manager テンプレートを使用して IP ファイアウォールを構成する

Azure Cosmos DB アカウントのアクセス制御を設定するには、Resource Manager テンプレートで ipRules プロパティが許可されている IP 範囲の配列で指定されていることを確認します。 既にデプロイされている Azure Cosmos DB アカウントの IP ファイアウォールを設定する場合は、 locations 配列が現在のデプロイと一致していることを確認します。 locations配列とその他のプロパティを同時に変更することはできません。 Azure Cosmos DB 用の Azure Resource Manager テンプレートの詳細とサンプルについては、Azure Cosmos DB 用の Azure Resource Manager テンプレートに関するページを参照してください。

重要

ipRules プロパティは、API バージョンの2020-04-01で導入されています。 以前のバージョンでは、代わりに ipRangeFilter プロパティが使用されています。これは、コンマ区切りの IP アドレスの一覧です。

この例は、API バージョン 2020-04-01 以降で ipRules プロパティを公開する方法を示しています。

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2020-04-01",
  "___location": "[parameters('___location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRules": [
      {
        "ipAddressOrRange": "13.91.105.215"
      },
      {
        "ipAddressOrRange": "4.210.172.107"
      },
      {
        "ipAddressOrRange": "13.88.56.148"
      },
      {
        "ipAddressOrRange": "40.91.218.243"
      }
    ]
  }
}

2020-04-01より前の API バージョンの場合と同じ例を次に示します。

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2019-08-01",
  "___location": "[parameters('___location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRangeFilter":"13.91.105.215,4.210.172.107,13.88.56.148,40.91.218.243"
  }
}

Azure CLI を使用して IP アクセス制御ポリシーを構成する

次のコマンドでは、IP アクセス制御を使用して Azure Cosmos DB アカウントを作成する方法が示されています。

# Create an Azure Cosmos DB account with default values and IP firewall enabled
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
ipRangeFilter='192.168.221.17,183.240.196.255,40.76.54.131'

# Ensure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
az cosmosdb create \
    -n $accountName \
    -g $resourceGroupName \
    --locations regionName='West US 2' failoverPriority=0 isZoneRedundant=False \
    --locations regionName='East US 2' failoverPriority=1 isZoneRedundant=False \
    --ip-range-filter $ipRangeFilter

PowerShell を使用して IP アクセス制御ポリシーを構成する

次のスクリプトでは、IP アクセス制御を使用して Azure Cosmos DB アカウントを作成する方法が示されています。

# Create an Azure Cosmos DB account with default values and IP Firewall enabled
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$ipRules = @("192.168.221.17","183.240.196.255","40.76.54.131")

$locations = @(
    @{ "locationName"="West US 2"; "failoverPriority"=0; "isZoneRedundant"=False },
    @{ "locationName"="East US 2"; "failoverPriority"=1, "isZoneRedundant"=False }
)

# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
$CosmosDBProperties = @{
    "databaseAccountOfferType"="Standard";
    "locations"=$locations;
    "ipRules"=$ipRules
}

New-AzResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    -ApiVersion "2020-04-01" -ResourceGroupName $resourceGroupName `
    -Name $accountName -PropertyObject $CosmosDBProperties

IP アクセス制御ポリシーに関する問題のトラブルシューティング

次のオプションを使用して IP アクセス制御ポリシーに関する問題のトラブルシューティングを行うことができます。

Azure portal

Azure Cosmos DB アカウントに対して IP アクセス制御ポリシーを有効にすると、IP アドレス範囲の許可リスト外のマシンからのすべての要求がブロックされます。 コンテナーの参照やドキュメントのクエリなどのポータル データ プレーン操作を有効にするには、ポータルの [ファイアウォール ] ウィンドウを使用して Azure portal へのアクセスを明示的に許可します。

ソフトウェア開発キット

許可リストにないマシンからソフトウェア開発キット (SDK) を使用して Azure Cosmos DB リソースにアクセスすると、追加の詳細なしで一般的な 403 Forbidden 応答が返されます。 アカウントの許可されている IP リストを確認し、Azure Cosmos DB アカウントに正しいポリシー構成が適用されていることを確認します。

ブロックされた要求内のソース IP

Azure Cosmos DB アカウントで診断ログを有効にして、各要求と応答を表示します。 ファイアウォールに関連するメッセージは、403 リターン コードを使用してログに記録されます。 これらのメッセージをフィルター処理することにより、ブロックされた要求のソース IP を確認できます。 「Azure Cosmos DB 診断ログ」を参照してください。

Azure Cosmos DB 用のサービス エンドポイントが有効にされているサブネットからの要求

Azure Cosmos DB のサービス エンドポイントが有効になっている仮想ネットワーク内のサブネットからの要求は、仮想ネットワークとサブネット ID を Azure Cosmos DB アカウントに送信します。 これらの要求にはソースのパブリック IP がないため、IP フィルターでは拒否されます。 仮想ネットワーク内の特定のサブネットからのアクセスを許可するには、ご利用の Azure Cosmos DB アカウントへの仮想ネットワークおよびサブネット ベースのアクセスを構成する方法に関するページに概説されているアクセス制御リストを追加します。 ファイアウォール規則が適用されるまでに最大 15 分かかる場合があり、この期間中はファイアウォールの動作が不安定になる場合があります。

許可されたアドレスのリスト内のプライベート IP アドレス

プライベート IP アドレスを含む許可されたアドレスの一覧を使用して Azure Cosmos DB アカウントを作成または更新すると、失敗します。 リストにプライベート IP アドレスが指定されていないことを確認してください。