Azure Private Link を使用した Azure Cache for Redis とは

この記事では、Azure portal を使用して、仮想ネットワークと、プライベート エンドポイントを持つ Azure Cache for Redis インスタンスを作成する方法について学習します。 既存の Azure Cache for Redis インスタンスにプライベート エンドポイントを追加する方法についても学習します。

Azure プライベート エンドポイントは、Azure Private Link を使用した Azure Cache for Redis にプライベートかつ安全に接続するネットワーク インターフェイスです。

PublicNetworkAccess フラグを無効にすることで、キャッシュのプライベート エンドポイントへのパブリック アクセスを制限できます。

重要

publicNetworkAccess フラグは既定で Disabled に設定されています。 値を Disabled または Enabled に設定できます。 有効に設定すると、このフラグにより、パブリック エンドポイントとプライベート エンドポイントの両方がキャッシュにアクセスできます。 Disabled に設定すると、プライベート エンドポイントのアクセスのみが許可されます。 Enterprise レベルと Enterprise Flash レベルのいずれも publicNetworkAccess フラグはサポートしません。 値を変更する方法の詳細については、「よくあるご質問」を参照してください。

重要

プライベート エンドポイントは、キャッシュ レベル (Basic、Standard、Premium、Enterprise) でサポートされています。 VNet の代わりにプライベート エンドポイントを使用することをお勧めします。 プライベート エンドポイントは簡単に設定または削除でき、すべてのレベルでサポートされ、一度に複数の異なる VNet にキャッシュを接続できます。

Basic レベルを使用している場合、プライベート エンドポイントを削除して再作成すると、データが失われる可能性があります。

可用性のスコープ

レベル Basic、Standard、Premium Enterprise、Enterprise Flash
利用可能 はい はい

前提条件

重要

現在、ポータルベースの Redis コンソールは、プライベート リンクではサポートされていません。

重要

プライベート リンクを使用する場合、Premium レベル キャッシュとマネージド ID を使用してストレージ アカウントを認証しない限り、ファイアウォールが有効であるストレージ アカウントにデータをエクスポートまたはインポートすることはできません。 詳細については、「ストレージ アカウントでファイアウォールを有効にした場合はどうなりますか?」を参照してください。

新しい Azure Cache for Redis インスタンスを使用してプライベート エンドポイントを作成する

このセクションでは、プライベート エンドポイントを持つ新しい Azure Cache for Redis インスタンスを作成します。

新しいキャッシュ用の仮想ネットワークを作成する

  1. Azure Portal にサインインし、[リソースの作成] を選択します。

    [リソースの作成] を選択します。

  2. [新規] ページで、 [ネットワーク] を選択してから、 [仮想ネットワーク] を選択します。

  3. [追加] を選択して仮想ネットワークを作成します。

  4. [仮想ネットワークの作成][基本] タブで次の情報を入力または選択します。

    設定 提案された値 説明
    サブスクリプション ドロップダウンで、ご自身のサブスクリプションを選択します。 この仮想ネットワークを作成するサブスクリプション。
    リソース グループ ドロップ ダウンでリソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 その中に仮想ネットワークやその他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。
    名前 仮想ネットワーク名を入力します。 名前の先頭は文字または数字、末尾は文字、数字、アンダースコアでなければならず、含めることができるのは文字、数字、アンダースコア、ピリオド、ハイフンのみです。
    リージョン ドロップ ダウンでリージョンを選択します。 ご使用の仮想ネットワークを使用する他のサービスの近くのリージョンを選択します。
  5. [IP アドレス] タブを選択するか、ページの下部にある [Next: IP Addresses](次へ: IP アドレス) ボタンを選択します。

  6. [IP アドレス] タブで、 [IPv4 アドレス空間] を、CIDR 表記で 1 つまたは複数のアドレス プレフィックスとして指定します (例: 192.168.1.0/24)。

  7. [サブネット名] で、 [既定値] を指定してサブネットのプロパティを編集します。

  8. [サブネットの編集] ペインで、 [サブネット名][サブネットのアドレス範囲] を指定します。 サブネットのアドレスの範囲は CIDR 表記である必要があります (例: 192.168.1.0/24)。 仮想ネットワークのアドレス空間に含まれている必要があります。

  9. [保存] を選択します。

  10. [確認と作成] タブを選択するか、 [確認と作成] ボタンを選択します。

  11. すべての情報が正しいことを確認し、[作成する] を選択して仮想ネットワークを作成します。

プライベート エンドポイントを利用する Azure Cache for Redis インスタンスを作成する

キャッシュ インスタンスを作成するには、次の手順に従います。

  1. Azure portal ホームページに戻るか、サイドバー メニューを開き、 [リソースの作成] を選択します。

  2. [新規] ページで、 [データベース] を選択し、 [Azure Cache for Redis] を選択します。

    [Azure Cache for Redis] を選択します。

  3. [新規 Redis Cache] ページで、新しいキャッシュの設定を構成します。

    設定 提案された値 説明
    DNS 名 グローバルに一意の名前を入力します。 キャッシュの名前は 1 文字から 63 文字の文字列である必要があります。 文字列には、数字、文字、またはハイフンのみを含めることができます。 名前の先頭と末尾には数字または文字を使用する必要があり、連続するハイフンを含めることはできません。 キャッシュ インスタンスの "ホスト名" は、<DNS name>.redis.cache.windows.net です。
    サブスクリプション ドロップダウンで、ご自身のサブスクリプションを選択します。 この新しい Azure Cache for Redis インスタンスが作成されるサブスクリプション。
    リソース グループ ドロップ ダウンでリソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 その中にキャッシュやその他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。
    場所 ドロップ ダウンで場所を選択します。 キャッシュを使用する他のサービスの近くのリージョンを選択します。
    価格レベル ドロップ ダウンで価格レベルを選択します。 価格レベルによって、キャッシュに使用できるのサイズ、パフォーマンス、および機能が決まります。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。
  4. [ネットワーク] タブを選択するか、ページの下部にある [ネットワーク] ボタンを選択します。

  5. [ネットワーク] タブで、接続方法として [プライベート エンドポイント] を選択します。

  6. [Add (追加)] ボタンを選択して、プライベート エンドポイントを作成します。

    [ネットワーク] で、プライベート エンドポイントを追加する。

  7. [プライベート エンドポイントの作成] ページで、前のセクションで作成した仮想ネットワークとサブネットを使用してプライベート エンドポイントの設定を構成し、 [OK] を選択します。

  8. [次へ: 詳細] タブを選択するか、ページの下部にある [次へ: 詳細] ボタンを選択します。

  9. Basic または Standard のキャッシュ インスタンスの [詳細] タブで、非 TLS ポートを有効にする場合は有効トグルをオンにします。

  10. Premium キャッシュ インスタンスの [詳細] タブで、非 TLS ポート、クラスタリング、データ永続化の設定を構成します。

  11. ページの下部にある [次へ: タグ] タブを選択するか、ページの下部にある [次へ: タグ] ボタンを選択します。

  12. 必要に応じて、 [タグ] タブで、リソースを分類する場合は名前と値を入力します。

  13. [Review + create](レビュー + 作成) を選択します。 [確認および作成] タブが表示され、Azure によって構成が検証されます。

  14. 緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。

キャッシュが作成されるまで、しばらく時間がかかります。 Azure Cache for Redis の [概要] ページで進行状況を監視できます。 [状態] に "実行中" と表示されている場合は、キャッシュを使用する準備ができています。

重要

publicNetworkAccess フラグは既定で Disabled に設定されています。 値を Disabled または Enabled に設定できます。 Enabled に設定すると、このフラグにより、パブリック エンドポイントとプライベート エンドポイントの両方がキャッシュにアクセスできます。 Disabled に設定すると、プライベート エンドポイントのアクセスのみが許可されます。 値を変更する方法の詳細については、「よくあるご質問」を参照してください。

既存の Azure Cache for Redis インスタンスを使用してプライベート エンドポイントを作成する

このセクションでは、既存の Azure Cache for Redis インスタンスにプライベート エンドポイントを追加します。

既存のキャッシュ用の仮想ネットワークを作成する

仮想ネットワークを作成するには、これらの手順に従います。

  1. Azure Portal にサインインし、[リソースの作成] を選択します。

  2. [新規] ページで、 [ネットワーク] を選択してから、 [仮想ネットワーク] を選択します。

  3. [追加] を選択して仮想ネットワークを作成します。

  4. [仮想ネットワークの作成][基本] タブで次の情報を入力または選択します。

    設定 提案された値 説明
    サブスクリプション ドロップダウンで、ご自身のサブスクリプションを選択します。 この仮想ネットワークを作成するサブスクリプション。
    リソース グループ ドロップ ダウンでリソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 その中に仮想ネットワークやその他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。
    名前 仮想ネットワーク名を入力します。 名前の先頭は文字または数字、末尾は文字、数字、アンダースコアでなければならず、含めることができるのは文字、数字、アンダースコア、ピリオド、ハイフンのみです。
    リージョン ドロップ ダウンでリージョンを選択します。 ご使用の仮想ネットワークを使用する他のサービスの近くのリージョンを選択します。
  5. [IP アドレス] タブを選択するか、ページの下部にある [Next: IP Addresses](次へ: IP アドレス) ボタンを選択します。

  6. [IP アドレス] タブで、 [IPv4 アドレス空間] を、CIDR 表記で 1 つまたは複数のアドレス プレフィックスとして指定します (例: 192.168.1.0/24)。

  7. [サブネット名] で、 [既定値] を指定してサブネットのプロパティを編集します。

  8. [サブネットの編集] ペインで、 [サブネット名][サブネットのアドレス範囲] を指定します。 サブネットのアドレスの範囲は CIDR 表記である必要があります (例: 192.168.1.0/24)。 仮想ネットワークのアドレス空間に含まれている必要があります。

  9. [保存] を選択します。

  10. [確認と作成] タブを選択するか、 [確認と作成] ボタンを選択します。

  11. すべての情報が正しいことを確認し、[作成する] を選択して仮想ネットワークを作成します。

プライベート エンドポイントの作成

プライベート エンドポイントを作成するには、次の手順に従います。

  1. Azure portal で、Azure Cache for Redis を検索します。 その後、Enter キーを押すか、検索候補から選択してください。

    Azure Cache for Redis を検索する。

  2. プライベート エンドポイントを追加するキャッシュ インスタンスを選択します。

  3. 画面の左側で、 [プライベート エンドポイント] を選択します。

  4. [プライベート エンドポイント] ボタンをクリックして、プライベート エンドポイントを作成します。

    プライベート エンドポイントを追加する。

  5. [プライベート エンドポイントの作成] ページで、プライベート エンドポイントの設定を構成します。

    設定 提案された値 説明
    サブスクリプション ドロップダウンで、ご自身のサブスクリプションを選択します。 このプライベート エンドポイントを作成するサブスクリプション。
    リソース グループ ドロップ ダウンでリソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 その中にプライベート エンドポイントやその他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。
    名前 プライベート エンドポイント名を入力します。 名前は先頭が文字または数字、末尾が文字、数字、アンダースコアでなければならず、中に含めることができるのは文字、数字、アンダースコア、ピリオド、ハイフンのみです。
    リージョン ドロップ ダウンでリージョンを選択します。 ご使用のプライベート エンドポイントを使用する他のサービスの近くのリージョンを選択します。
  6. ページの下部にある [次へ: リソース] ボタンを選択します。

  7. [リソース] タブで、該当するサブスクリプションを選択し、リソースの種類として [Microsoft.Cache/Redis] を選んでから、プライベート エンドポイントを接続するキャッシュを選択します。

  8. ページの下部にある [次へ: 構成] ボタンを選択します。

  9. ページの下部にある [次へ: 仮想ネットワーク] ボタンを選びます。

  10. [構成] タブで、前のセクションで作成した仮想ネットワークとサブネットを選択します。

  11. [仮想ネットワーク] タブで、前のセクションで作成した仮想ネットワークとサブネットを選びます。

  12. ページの下部にある [次へ: タグ] ボタンを選択します。

  13. 必要に応じて、 [タグ] タブで、リソースを分類する場合は名前と値を入力します。

  14. [Review + create](レビュー + 作成) を選択します。 [確認および作成] タブが表示され、Azure によって構成が検証されます。

  15. 緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。

重要

publicNetworkAccess フラグは既定で Disabled に設定されています。 値を Disabled または Enabled に設定できます。 有効に設定すると、このフラグにより、パブリック エンドポイントとプライベート エンドポイントの両方がキャッシュにアクセスできます。 Disabled に設定すると、プライベート エンドポイントのアクセスのみが許可されます。 値を変更する方法の詳細については、「よくあるご質問」を参照してください。

Azure PowerShell を使用してプライベート エンドポイントを作成する

既存のインスタンスに対して MyPrivateEndpoint という名前のプライベート エンドポイントAzure Cache for Redis、次の PowerShell スクリプトを実行します。 変数の値を環境の詳細に置き換えます:


$SubscriptionId = "<your Azure subscription ID>"
# Resource group where the Azure Cache for Redis instance and virtual network resources are located
$ResourceGroupName = "myResourceGroup"
# Name of the Azure Cache for Redis instance
$redisCacheName = "mycacheInstance"

# Name of the existing virtual network
$VNetName = "myVnet"
# Name of the target subnet in the virtual network
$SubnetName = "mySubnet"
# Name of the private endpoint to create
$PrivateEndpointName = "MyPrivateEndpoint"
# Location where the private endpoint can be created. The private endpoint should be created in the same location where your subnet or the virtual network exists
$Location = "westcentralus"

$redisCacheResourceId = "/subscriptions/$($SubscriptionId)/resourceGroups/$($ResourceGroupName)/providers/Microsoft.Cache/Redis/$($redisCacheName)"

$privateEndpointConnection = New-AzPrivateLinkServiceConnection -Name "myConnectionPS" -PrivateLinkServiceId $redisCacheResourceId -GroupId "redisCache"
 
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName  $ResourceGroupName -Name $VNetName  
 
$subnet = $virtualNetwork | Select -ExpandProperty subnets | Where-Object  {$_.Name -eq $SubnetName}  
 
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $ResourceGroupName -Name $PrivateEndpointName -Location "westcentralus" -Subnet  $subnet -PrivateLinkServiceConnection $privateEndpointConnection

Azure PowerShellを使用してプライベート エンドポイントを取得する

プライベートエンドポイントの詳細を取得するには、次の PowerShell コマンドを使用します:

Get-AzPrivateEndpoint -Name $PrivateEndpointName -ResourceGroupName $ResourceGroupName

Azure PowerShell を使用してプライベートエンドポイントを削除する

プライベートエンドポイントを削除するには、次の PowerShell コマンドを使用します。

Remove-AzPrivateEndpoint -Name $PrivateEndpointName -ResourceGroupName $ResourceGroupName

Azure CLI を使用してプライベート エンドポイントを作成する

Redis インスタンス用の既存の Azure キャッシュ用に myPrivateEndpoint という名前のプライベートエンドポイントを作成するには、次の Azure CLI スクリプトを実行します。 変数の値を環境の詳細に置き換えます:

# Resource group where the Azure Cache for Redis and virtual network resources are located
ResourceGroupName="myResourceGroup"

# Subscription ID where the Azure Cache for Redis and virtual network resources are located
SubscriptionId="<your Azure subscription ID>"

# Name of the existing Azure Cache for Redis instance
redisCacheName="mycacheInstance"

# Name of the virtual network to create
VNetName="myVnet"

# Name of the subnet to create
SubnetName="mySubnet"

# Name of the private endpoint to create
PrivateEndpointName="myPrivateEndpoint"

# Name of the private endpoint connection to create
PrivateConnectionName="myConnection"

az network vnet create \
    --name $VNetName \
    --resource-group $ResourceGroupName \
    --subnet-name $SubnetName

az network vnet subnet update \
    --name $SubnetName \
    --resource-group $ResourceGroupName \
    --vnet-name $VNetName \
    --disable-private-endpoint-network-policies true

az network private-endpoint create \
    --name $PrivateEndpointName \
    --resource-group $ResourceGroupName \
    --vnet-name $VNetName  \
    --subnet $SubnetName \
    --private-connection-resource-id "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Cache/Redis/$redisCacheName" \
    --group-ids "redisCache" \
    --connection-name $PrivateConnectionName

Azure CLI を使用してプライベートエンドポイントを取得する

プライベートエンドポイントの詳細を取得するには、次の CLI コマンドを使用します。

az network private-endpoint show --name MyPrivateEndpoint --resource-group MyResourceGroup

Azure CLI を使用してプライベートエンドポイントを削除する

プライベートエンドポイントを削除するには、次の CLI コマンドを使用します。

az network private-endpoint delete --name MyPrivateEndpoint --resource-group MyResourceGroup

よく寄せられる質問

プライベート エンドポイントを使用してキャッシュに接続する方法

Basic、Standard、Premium レベルのキャッシュの場合、アプリケーションはポート 6380<cachename>.redis.cache.windows.net に接続する必要があります。 *.privatelink.redis.cache.windows.net という名前のプライベート DNS ゾーンがサブスクリプションに自動的に作成されます。 プライベート DNS ゾーンは、プライベート エンドポイントとの TLS 接続を確立するために不可欠です。 構成または接続文字列での <cachename>.privatelink.redis.cache.windows.net の使用を避けることをお勧めします。

Enterprise および Enterprise Flash レベルのキャッシュの場合、アプリケーションはポート 10000 上の <cachename>.<region>.redisenterprise.cache.azure.net に接続する必要があります。

詳細については、「Azure サービス DNS ゾーンの構成」を参照してください。

プライベート エンドポイントに接続できないのはなぜですか。

  • キャッシュが既 VNet に挿入されたキャッシュである場合は、プライベートエンドポイントをキャッシュインスタンスで使用することはできません。

  • Basic、Standard、Premium レベルのキャッシュの場合、プライベート リンクは 100 個に制限されています。

  • クラスタリングを使用する Premium レベルのキャッシュの場合、プライベート リンクは 1 個に制限されています。

  • Enterprise および Enterprise Flash レベルのキャッシュのプライベート リンクは 84 個に制限されています。

  • ファイアウォール規則が適用されている ストレージアカウント にデータを永続化しようとすると、プライベートリンクを作成できなくなる可能性があります。

  • キャッシュインスタンスが サポートされていない機能を使用している場合、プライベートエンドポイントに接続することはできません。

プライベート エンドポイントでサポートされていない機能は何ですか?

  • Azure portal コンソールから接続を試行するシナリオはサポートされていないため、接続の失敗が表示されます。

  • Premium レベルでパッシブ geo レプリケーションを既に使用しているキャッシュには、プライベート リンクを追加することはできません。 geo レプリケートされたキャッシュにプライベート リンクを追加するには: 1. geo レプリケーションのリンクを解除します。 2. プライベート リンクを追加します。 3. 最後に、geo レプリケーションを再リンクします。 (アクティブ geo レプリケーションを使用してする Enterprise レベルのキャッシュには、この制限がありません。)

どうすれば、プライベート エンドポイントが正しく構成されていることを確認できますか。

ポータルのリソース メニューで [概要] にアクセスします。 キャッシュの [ホスト名] が作業ウィンドウに表示されます。 プライベート エンドポイントにリンクされている nslookup <hostname> のようなコマンドを VNet 内から実行して、コマンドによって、キャッシュのプライベート IP アドレスに解決されることを確認します。

Azure portal でのプライベート エンドポイント DNS の設定。

プライベート エンドポイントをパブリック ネットワーク アクセスに対して無効または有効になるように変更するにはどうすればよいですか。

既定では、publicNetworkAccess フラグは Disabled です。 Enabled に設定すると、このフラグにより、パブリック エンドポイントとプライベート エンドポイントの両方がキャッシュにアクセスできます。 Disabled に設定すると、プライベート エンドポイントのアクセスのみが許可されます。 Azure portal または RESTful API パッチ要求で、この値を Disabled または Enabled に設定できます。

Azure portal で値を変更するには、次の手順を実行します。

  1. Azure portal で、Azure Cache for Redis を検索します。 その後、Enter キーを押すか、検索候補から選択してください。

  2. パブリック ネットワーク アクセスの値を変更するキャッシュ インスタンスを選択します。

  3. 画面の左側で、 [プライベート エンドポイント] を選択します。

  4. [Enable public network access (パブリック ネットワーク アクセスを有効にする)] ボタンを選択します。

RESTful API PATCH 要求を介して値を変更することもできます。 たとえば、Basic、Standard、または Premium レベルのキャッシュに次のコードを使用し、キャッシュに必要なフラグが反映されるように値を編集します。

PATCH  https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resourcegroup}/providers/Microsoft.Cache/Redis/{cache}?api-version=2020-06-01
{    "properties": {
       "publicNetworkAccess":"Disabled"
   }
}

詳細については、「Redis - 更新」を参照してください。

VNet インジェクションされたキャッシュを Private Link キャッシュに移行するさまざまな方法については、移行ガイドを参照してください。

異なる仮想ネットワーク内に複数のエンドポイントを配置するにはどうすればよいですか。

異なる仮想ネットワーク内に複数のプライベート エンドポイントを配置するには、プライベート エンドポイントを作成する前に、プライベート DNS ゾーンを複数の仮想ネットワークに手動で構成する必要があります。 詳細については、「Azure プライベート エンドポイントの DNS 構成」をご覧ください。

キャッシュのすべてのプライベート エンドポイントを削除するとどうなりますか。

キャッシュのプライベート エンドポイントを削除すると、明示的にパブリック ネットワーク アクセスを有効にするか、別のプライベート エンドポイントを追加するまで、キャッシュ インスタンスに到達できなくなる可能性があります。 publicNetworkAccess フラグは、Azure portal または RESTful API パッチ要求のいずれかで変更できます。 値を変更する方法の詳細については、「よくあるご質問」を参照してください

ネットワーク セキュリティ グループ (NSG) はプライベート エンドポイントでは有効になっていますか。

いいえ、プライベート エンドポイントでは無効になっています。 プライベート エンドポイントを含むサブネットに NSG を関連付けることはできますが、プライベート エンドポイントによって処理されるトラフィックに対して規則は有効ではありません。 サブネットにプライベート エンドポイントをデプロイするには、ネットワーク ポリシーの適用を無効にする必要があります。 NSG は、同じサブネット上にホストされている他のワークロードにも適用されます。 クライアント サブネット上のルートは /32 プレフィックスを使用するため、既定のルーティング動作を変更するには同様の UDR が必要です。

ソース クライアントにおけるアウトバウンド トラフィックに対して NSG 規則を使用して、トラフィックを制御します。 /32 プレフィックスを持つ個々のルートをデプロイして、プライベート エンドポイント ルートをオーバーライドします。 送信接続の NSG フロー ログと監視情報は引き続きサポートされており、使用することができます。

プライベート エンドポイント インスタンスは自分の VNet に含まれていませんが、VNet とどのように関連付けられていますか?

お使いの VNet にリンクされているだけです。 これは VNet 内に存在しないため、依存エンドポイントに対して NSG 規則を変更する必要はありません。