はじめに
ストレージアカウントのデータプレーンアクセスを強化することは、セキュリティを高めるための一般的な方法です。ただし、仮想ネットワーク (VNET) 統合を使用する Azure リソースを利用したり、プライベート IP や他のテナントからストレージエンドポイントにアクセスしたりする場合、送信元が適切に許可リストに登録されていないと、承認エラーが発生する可能性があります。この記事では、そのようなエラーを引き起こす一般的なシナリオを検討し、実行可能な解決方法を紹介します。
一般的な承認エラーのシナリオ
シナリオ 1:別のリージョンからのアクセス
呼び出し元のソースが別の Azure リージョンにある場合、通常はソースの パブリック IP アドレス をストレージアカウントのファイアウォールに追加することで解決できます。
シナリオ 2:同じリージョンからのアクセスが失敗する
同じ Azure リージョンからの要求では、通常 Azure プライベート IP アドレス をパブリック IP の代わりに使用します。この場合、パブリック IP を許可リストに登録しても失敗します。詳細については、次を参照してください。 Azure Storage のファイアウォールと仮想ネットワークを構成する
シナリオ 3:特定のサブネットへのアクセス制限
リソースにパブリック IP がなく、クライアントが特定のサブネットへのアクセスを制限したい場合、可視性の制限により問題が発生する可能性があります。ストレージアカウントのファイアウォールには対象のサブネットが表示されない場合があり、 共同作成者 RBAC アクセス 以上のアクセス権を持つ人物による手動での許可リスト登録が必要になります。
シナリオ 4:別の Azure テナントからのアクセス
ストレージアカウントにアクセスしようとするリソースが別の Azure テナントに属している場合、送信元サブネットを許可リストに登録するには追加の手順が必要です。
解決手順
別のテナントからのサブネットの追加
別の Azure テナントの仮想ネットワークにあるサブネットを許可リストに登録するには、 VirtualNetworkResourceId パラメータを使用する必要があります。これには、次の形式でサブネット URI を指定します。
/subscriptions/<subscription-ID>/resourceGroups/<resourceGroup-Name>/providers/Microsoft.Network/virtualNetworks/<vNet-name>/subnets/<subnet-name>
PowerShell コマンドの例
サブネット URI を取得するには、次のコマンドを使用します。
$subnet = Get-AzVirtualNetwork -ResourceGroupName "myresourcegroup" -Name "myvnet" | Get-AzVirtualNetworkSubnetConfig -Name "mysubnet"
ソーステナントでこのコマンドを実行するのに十分なアクセス権がユーザーにない場合、Azure の VNET リソースの JSON 本文を調べることでサブネット URI を取得できます。これには、リソースに対する コントロールプレーンの READ アクセス が必要です。
ストレージサービスエンドポイントの有効化
サブネットを許可リストに登録する前に、 Microsoft.Storage または Microsoft.Storage.Global サービスエンドポイントが有効になっていることを確認してください。これは、Azure PowerShell、CLI、または Azure Portal を使用して行うことができます。手順については、次を参照してください。 Azure Storage のファイアウォールと仮想ネットワークを構成する。
許可リスト登録用のコマンド例
サブネット URI を取得したら、次のコマンドを使ってネットワークルールを追加します。
Add-AzStorageAccountNetworkRule -ResourceGroupName "myresourcegroup" -AccountName "mystorageaccount" -VirtualNetworkResourceId $subnet
確認
接続を確認するには、 curl コマンドを SAS トークンとともに使用します。
curl https://storageaccountname.blob.core.windows.net/container/hello.txt?<SAS token>
ヒント:
-
-vフラグはcurlコマンドで詳細出力を有効にし、HTTP 応答の特定に役立ちます。たとえば次のような応答です。403 Forbiddenフラグを外すと、よりすっきりした出力になります。

次の例では、対象のストレージアカウントのファイアウォール内のサブネットが表示されます

ヒント: ハイライトされた警告は無視して問題ありません。これは、許可リストに登録されたサブネットに対する READ コントロールプレーンアクセスに関連するもので、データプレーンアクセスは許可されます。
その他の考慮事項
- サービスエンドポイントの有効化:ストレージサービスエンドポイントを有効にすると、一時的な接続の中断が発生する可能性があります。詳細については、次を参照してください。 Azure Virtual Network サービスエンドポイント。
- プライベートエンドポイント:プライベートエンドポイントは、DNS と、許可されたサブネット経由の接続に依存するため、ファイアウォールのネットワークルールをバイパスします。詳細については、次を参照してください。 プライベートエンドポイントの使用 – Azure Storage。
- コントロールプレーンとデータプレーン:コントロールプレーン操作とデータプレーン操作の違いを理解することは、トラブルシューティングに極めて重要です。詳細については、次を参照してください。 コントロールプレーン操作とデータプレーン操作。
まとめ
Azure Storage エンドポイントへのアクセス時の承認エラーは、多くの場合、誤って構成されたファイアウォールルールやサブネットの可視性不足に起因します。上記の手順に従うことで、これらの問題を効果的にトラブルシューティングして解決し、安全でシームレスなデータプレーンアクセスを確保できます。