Azure Storageのアクセス ログの有効化手順について
質問
ストレージ アカウントの診断設定を有効化することで、データの書き込みや読み取り操作のアクセス ログを取得したいです。どのように設定をすればよいですか。
回答
書き込みや読み取りといったデータ プレーンのアクセス ログについては、診断設定から採取設定が必要となります。Azure Portalでの診断設定の設定手順を以下に記載します。
(1) ブレード メニューの[監視]-> [診断設定]をクリックします。
ストレージ アカウント名のほかに、ホストされている4つのストレージ サービス、blob, queue, table, fileが表示されます※1。ストレージ アカウントでは、個々のストレージ サービス単位で診断設定を構築し、アクセス ログの転送設定を行うことができます。
(2) 本記事では例としてblobを選択し、Blob Storageの診断設定を構築します。その他 3つqueue, file, tableのストレージ サービスにおいても設定手順は同様となります。
(3) [+診断設定を追加する]を押下します。
(4) Azure Monitor の診断設定のドキュメントに記載のある設定画面が表示されます。要件に沿うよう、ログのカテゴリと送付先のサービスを選択ください。カテゴリの詳細は診断設定のカテゴリ グループをご参照ください。
サポートより採取を依頼した際は、allLogsをご選択ください。
(5) 送付先としてストレージ アカウントを設定した場合、insights-logsのprefixを持つコンテナーにそれぞれログが格納されます。
ストレージ サービスの種類が異なるものや、別のストレージ アカウントのアクセス ログも同じコンテナーにフォルダ分けされて格納されます。対象のストレージ サービスとアカウント名の配下のアクセス ログをご参照ください。複数のファイルをGUIでダウンロードする場合は、当BLOGの複数の BLOB をまとめてダウンロードする方法 に方法を記載しておりますので、ご参照ください。
補足
ストレージ アカウント スコープで診断設定を構築しても、アクセス ログの取得とはなりません。
下記画面の通り、メトリクスの取得のみとなります。blobなど対象のサービス レベルで診断設定を構築する必要があります。
また一部、記録されない操作もありますので、ご注意ください。詳細はAzure Blob Storage の監視でご確認いただけます。
たとえば、別のストレージ アカウントに送付したアクセス ログは手順(5)の通り、insights-logsのprefixのコンテナーに格納されますが、このコンテナ一に対するアクセス ログは診断設定で、記録することが叶いませんので、診断設定(クラシック)を用いてログを記録する必要があります。診断設定(クラシック)で、ログを有効化する手順については ログの有効化をご参照ください。
まとめ
本記事ではストレージ アカウントにホストされるストレージ サービスごとのアクセス ログの収集方法を記載しました。
ストレージ アカウント レベルではなく、blob, queue, table, fileの個別のサービスごとに設定を実施するものとなりますので、ご注意ください。
注釈
※1: Premium Storageなど、SKUによっては、サービスが4つホストされないことがあります。