別のテナントの仮想ネットワークを Azure Storage アカウントのファイアウォールに追加することは、接続のテスト、ファイルの安全な共有、パートナー間のコラボレーションの実現によくあるシナリオです。これにより、ストレージアカウントをすべてのネットワークに公開することなく、データアクセスを特定のネットワークに制限できます。
このガイドでは、 PowerShell と Azure CLI をローカルマシンで使用してこの目標を達成する方法に焦点を当てます。リージョン間およびテナント間の構成に関するヒントや考慮事項も紹介します。
主なユースケース
この方法は、次のようなシナリオに最適です。
- 異なるテナントやリージョンにあるアプリケーション間の接続をテストする。
- ストレージアカウントをすべてのネットワークに公開せずに、パートナーや共同作業者がファイルに安全にアクセスできるようにする。
前提条件
先に進む前に、次のことを確認してください。
- ストレージアカウントを含む Azure サブスクリプションにアクセスできること。
- 他のテナントまたはリージョンにある仮想ネットワークとサブネットに対する管理者権限を持っていること。
- 必要なツールがインストールされていること。 Azure PowerShell または Azure CLI.
PowerShell による方法
ステップ 1:Az モジュールをインストールする
Microsoft Learn のステップバイステップの手順に従って、 Windows に Azure PowerShell をインストール.
ステップ 2:仮想ネットワークとストレージアカウントのファイアウォールを構成する
PowerShell セッションで次のコマンドを実行します。
# Import Az.Storage module
Import-Module -Name Az.Storage
# Authenticate and connect to your Azure account
Connect-AzAccount
# Select the subscription containing the storage account
Select-AzSubscription -SubscriptionId "xxxx-xxxx-xxxx-xxxx"
# List existing virtual network rules for the storage account
(Get-AzStorageAccountNetworkRuleSet -ResourceGroupName "myresourcegroup" -AccountName "mystorageaccount").VirtualNetworkRules
# Enable a service endpoint for Azure Storage on an existing virtual network and subnet
Get-AzVirtualNetwork -ResourceGroupName "myresourcegroup" -Name "myvnet" | Set-AzVirtualNetworkSubnetConfig -Name "mysubnet" -AddressPrefix "10.0.0.0/24" -ServiceEndpoint "Microsoft.Storage.Global" | Set-AzVirtualNetwork
# Add a network rule for the virtual network and subnet
$subnet = Get-AzVirtualNetwork -ResourceGroupName "myresourcegroup" -Name "myvnet" | Get-AzVirtualNetworkSubnetConfig -Name "mysubnet"
Add-AzStorageAccountNetworkRule -ResourceGroupName "myresourcegroup" -Name "mystorageaccount" -VirtualNetworkResourceId $subnet.Id
Azure CLI による方法
ステップ 1:Azure CLI をインストールする
お使いのプラットフォーム向けのインストールガイドをご覧ください。 Azure CLI のインストール.
ステップ 2:仮想ネットワークとストレージアカウントのファイアウォールを構成する
CLI セッションで次のコマンドを実行します。
# Authenticate and sign in to your Azure account
az login
# List existing virtual network rules for the storage account
az storage account network-rule list --resource-group "myresourcegroup" --account-name "mystorageaccount" --query virtualNetworkRules
# Enable a service endpoint for Azure Storage on an existing virtual network and subnet
az network vnet subnet update --resource-group "myresourcegroup" --vnet-name "myvnet" --name "mysubnet" --service-endpoints "Microsoft.Storage.Global"
# Add a network rule for the virtual network and subnet
subnetid=$(az network vnet subnet show --resource-group "myresourcegroup" --vnet-name "myvnet" --name "mysubnet" --query id --output tsv)
az storage account network-rule add --resource-group "myresourcegroup" --account-name "mystorageaccount" --subnet $subnetid
特別な考慮事項
テナント間仮想ネットワークルール
別の Microsoft Entra テナントに属する仮想ネットワーク内のサブネットにネットワークルールを追加するには、完全修飾された VirtualNetworkResourceId パラメーターを使用する必要があります。形式は次のとおりです。
/subscriptions/<subscription-ID>/resourceGroups/<resourceGroup-Name>/providers/Microsoft.Network/virtualNetworks/<vNet-name>/subnets/<subnet-name>
他のテナントにある仮想ネットワークについて、正しいサブスクリプション ID とリソースグループの詳細を確認してください。
リージョン間サービスエンドポイント
ローカルとリージョン間のサービスエンドポイントは、同じサブネット上に共存できません。既存のサービスエンドポイントをリージョン間のものに置き換える必要がある場合は、次のようにします。
- 既存の
Microsoft.Storageエンドポイントを削除します。 - それらをリージョン間エンドポイントとして再作成します(
Microsoft.Storage.Global).
追加のヒント
- 接続のテスト
仮想ネットワークルールを追加したら、 Azure Storage Explorer などのツールや、アプリケーション固有の構成を使用して、ストレージアカウントへの接続をテストしてください。 - ドキュメントの参照
詳細な手順については、 「Azure Storage ファイアウォールと仮想ネットワークの構成」. - コストに関する考慮事項
- サービスエンドポイントを有効にすると、Azure の料金モデルによっては追加コストが発生する場合があります。
- リージョン間の構成では、通常、ネットワークの送信料金が高くなります。
まとめ
PowerShell または Azure CLI を使えば、別のリージョンやテナントの仮想ネットワークを Azure Storage アカウントのファイアウォールに追加するのは簡単なプロセスです。このガイドの手順に従うことで、厳格なネットワークルールを維持しながら、ストレージアカウントへの安全なアクセスを構成できます。