403 エラーが発生し Azure ストレージ アカウント内のコンテンツにアクセスできない

Last Update: feedback 共有

こんにちは、Azure テクニカル サポート チームの木下・富田です。

今回は Azure ストレージ アカウント内コンテンツへのアクセス時に 403 エラー(認証エラー)が発生した場合の、対処法をストレージファイアウォール観点でエラー事例とともにご紹介いたします。
403 エラーは認証エラーですので、ネットワークとしては疎通ができている状態ですが、認証によってアクセスが拒否されている状況となります。
本記事ではまず、ストレージ アカウント自体に備わっているファイアウォール(ネットワーク設定)の観点でトラブルシューティングのご紹介をさせていただきます。


ストレージ アカウント内のコンテンツ表示における 403 エラーの表示例

アクセスを行うツールによって表示が異なりますが、いくつかスクリーンショットを交えてエラー表示の例を記載させていただきます。
どれも 403 エラーや Access is denied として表示され、アクセス拒否となっていることが分かります。

Azure ポータルでストレージ アカウントの Blob コンテナー内の表示、およびストレージブラウザーで Blob や Azure Files にアクセスした際

This request is not authorized to perform this operation.

Azure ポータルで Azure Files(ファイル共有)にアクセスした際

このマシンからはアクセスできないようです。このストレージ アカウントは VNet にあります。

Azure Storage Explorer で Blob コンテナーにアクセスした際

This request is not authorized to perform this operation.

Azure Storage Explorer で Azure Files(ファイル共有)にアクセスした際

Unable to retrieve child resources

AzCopy コマンドにてファイルコピー時した際

INFO: Authentication failed, it is either not correct, or expired, or does not have the correct permission / RESPONSE 403: 403 This request is not authorized to perform this operation. / ERROR CODE: AuthorizationFailure

Azure Files(ファイル共有)を New-PSDrive コマンドでマウントした際

New-PSDrive : Access is denied

これらのエラーの場合は、以下の原因によりアクセス拒否となっている可能性がございます。

  • ストレージ アカウント自体に備わっているファイアウォール(ネットワーク設定)によりアクセス拒否されている
  • データ操作の認可がされていない

まずは、それぞれのアクセス制御の機能について解説させていただきます。


ストレージ アカウントのファイアウォール(ネットワーク設定)とデータへの認可について

ストレージ アカウントには、特定の VNET や特定のグローバル IP アドレスからのアクセスのみを許可するといった、ファイアウォール機能が備わっております。
こちらのファイアウォールを有効としている場合、許可されていないクライアントからの接続では上記のような 403 エラーでアクセス拒否が発生します。

■ご参考:Azure Storage ファイアウォールおよび仮想ネットワークを構成する
https://learn.microsoft.com/ja-jp/azure/storage/common/storage-network-security

また、ファイアウォールで許可されたクライアントからのアクセスであっても、アクセス先のデータに対して適切な認可がされていない場合は、同様に 403 エラーのアクセス拒否が発生します。

■ご参考:Azure Storage 内のデータへのアクセスを承認する
https://learn.microsoft.com/ja-jp/azure/storage/common/authorize-data-access

今回、本ブログ記事ではストレージ アカウントのファイアウォールの観点でのトラブルシューティングをご紹介させていただきます。


ストレージ アカウントのファイアウォールを一時的に無効化してみる

警告

一時的に全てのネットワークからの接続が許可されますので、この点についてご留意くださいませ。

意図せず 403 エラーでアクセス拒否となった場合、ファイアウォールによってブロックされていないかといった点を切り分けるために、一時的にファイアウォールを無効化するのが容易な手段となります。
ファイアウォールが元から無効であったり、ファイアウォールを無効化しても 403 エラーのアクセス拒否が継続する場合は、データ認可の問題などファイアウォールとは別の原因があると判断できます。

以下の手順で Azure ポータルよりファイアウォールを無効化することが可能でございます。

  1. 対象のストレージアカウントの画面で「ネットワーク」をクリックします。
  2. 「ファイアウォールと仮想ネットワーク」より「すべてのネットワーク」を選択し「保存」します。

「すべてのネットワーク」が選択されている場合、ストレージファイアウォールの設定は無効状態となります。

「すべてのネットワーク」が選択されている状態に変更が完了したら、403 エラーのアクセス拒否が解消されるか確認してください。(少し反映までに時間がかかることもございます。)
403 エラーのアクセス拒否が解消されていれば、ストレージファイアウォールの設定に問題があると判断できます。

もし、このままストレージファイアウォールを無効としても運用上差し支えなければ無効の状態でご利用ください。
アクセス元を制限したい場合は、以下に沿ってファイアウォール有効化の設定をご確認ください。


特定のパブリック IP アドレス(グローバル IP アドレス)からの接続を許可するようにファイアウォールを設定する

Azure ポータルにて以下の手順で、特定のパブリック IP アドレス(グローバル IP アドレス)からの接続を許可するようにファイアウォールを設定することが可能です。

  1. 対象のストレージアカウントの画面で「ネットワーク」をクリックします。
  2. 「ファイアウォールと仮想ネットワーク」のクライアント端末の IP アドレスを追加し「保存」します。

パブリック IP アドレスを指定しても上手く接続できない場合は、以下の注意点についてご確認くださいませ。

  • 接続元クライアントが Azure VM の場合は、同一リージョンのストレージ アカウントへの接続時にプライベート IP アドレスで接続するため、このようなパブリック IP アドレスでの接続許可が叶いません。後述の VNET 単位の接続許可の設定をご検討ください。
  • クライアント IP アドレスとして表示されるのは、Azure ポータルに接続している IP アドレスです。プロキシ使用時にエンドポイントをバイパスしている際などは、Azure ポータルにアクセスしている IP アドレスとストレージ アカウントにアクセスしている IP アドレスが異なることがございます。
  • Express Route をご利用されており、Microsoft Peering または Public Peering を用いて Azure ストレージに接続する構成の場合、Azure ストレージに側の接続元の IP アドレスはオンプレミスのプライベート IP アドレスではなく、Microsoft Peering または Public Peering で構成したパブリック IP アドレスとなります。そのため、Express Route 経由後のパブリック IP アドレスを追加していただく必要があることをあらかじめご留意ください。

アクセス許可を行いたいアクセス元の IP アドレスが分からない状態の場合、下記の通り Azure ストレージの診断設定でログを取得し、403 エラーを検知しているログより接続元クライアントの IP アドレスを特定することも可能です。


ストレージ アカウントの診断設定およびアクセス元 IP アドレスの特定

ストレージ アカウントの診断設定を有効にすることで、ストレージにアクセスしたクライアント IP アドレスをログとして記録することが可能です。

■ご参考:Azure Monitor の診断設定を作成する
https://learn.microsoft.com/ja-jp/azure/azure-monitor/essentials/create-diagnostic-settings

具体的な診断設定によるログ採取の手順例としては、Azure Files(ファイル共有)での手順について、以下の弊社ブログ記事で解説しております。

■ご参考:Azure Files の診断設定を試す
https://jpaztech.github.io/blog/storage/azureFilesMonitoring

上記は、Azure Files(ファイル共有)での例とはなっておりますが、診断設定を有効にする種類として file ではなく blob を設定すれば、同様に Blob ストレージについてもアクセスログを採取することが可能です。
採取されたログ内に callerIpAddress として、実際のアクセス元となるクライアントの IP アドレスが記録されますので、これによりアクセス元 IP アドレスの特定が可能でございます。


特定の仮想ネットワーク(VNET)およびサブネットからのアクセスを許可する

ストレージ アカウントのファイアウォールでは、特定のパブリック IP アドレスからのアクセス許可でだけではなく、特定の VNET 上のサブネットからのアクセスを許可する設定をすることが可能です。
以下が Azure ポータルでその設定をする手順となります。

  1. 対象のストレージアカウントの画面で「ネットワーク」をクリックします。
  2. 「ファイアウォールと仮想ネットワーク」の「仮想ネットワーク」に許可する仮想ネットワークおよびサブネットを追加します。

すでに利用したい仮想ネットワークがある場合は「既存の仮想ネットワークを追加する」から追加します。
仮想ネットワークが未作成の場合は「新しい仮想ネットワークを追加する」より作成追加してください。

異なるサブスクリプションの仮想ネットワークを追加する場合は、「サブスクリプション」項目のプルダウンより、対象のサブスクリプション内の仮想ネットワークおよびサブネットを選択し有効化します。
(有効化が完了するまで最大 15 分かかる場合がございます。有効化が完了したら「追加」をクリックします。


 
3. 追加した仮想ネットワークおよびサブネットが表示されエンドポイントの状態が有効となっていることを確認し「保存」します。

警告

ストレージファイアウォール設定で「すべてのネットワーク」と「選択されたネットワーク」の切り替えを行う場合や、登録しているサブネットが仮想ネットワーク上で一度削除され、新たに同名でサブネットが作成された場合などにより、古い情報が残存した状態となりエンドポイントの状態が「見つかりません」というようなエラーが表示されることがあります。

その場合は、一度ストレージファイアウォール「仮想ネットワーク」項目からエラーが表示されているサブネットを削除し、上述の手順で仮想ネットワークおよびサブネットの追加をお試しいただきますようお願いいたします。


さいごに

ストレージ アカウントのファイアウォールにより許可されたクライアントから、正しく認可されたデータへアクセスがされた場合は、403 エラーのアクセス拒否は発生せず正常にアクセス可能になるものと存じます。
403 エラーのアクセス拒否が改善せずお困りの場合は、実施されたトラブルシューティングの内容を添えて弊社 Azure 技術サポート窓口までお問い合わせいただければ、トラブルシューティングのご支援をさせていただくことも可能でございます。

本稿が皆様のお役に立ちましたら幸いでございます。

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。