Blob Storageにおいて操作ログからユーザーを特定したい
質問
Azure Portal での Blob Storage のデータ操作について、誰がどのような操作を行ったかを診断設定ログから特定したいです。可能でしょうか。
回答
はい。診断設定ログに含まれる RequesterObjectId 又は RequesterUpn などから、 どの AzureAD ユーザーなのかを特定することが可能でございます。
診断設定ログでの確認例
Azure Portal ではアクセス認証の方式は、以下の 2 種類がございます。
- アクセス キー
- Azure AD ( AAD ) ユーザー認証
アクセスキーでの認証の場合は AAD ユーザーを特定可能な情報を残すことが出来ませんので、監視対象のユーザーには、必ず AAD ユーザー認証をさせる必要がございます。
Azure Portal のストレージ アカウントの [ ブレードメニュー ] -> [ 構成 ] から Azure portal で Azure Active Directory の承認を既定にするを [ 有効 ] にすることで、既定の認証方法設定可能でございます。
AAD 認証でストレージ アカウントを利用する Azure AD ユーザーには、別途 BLOB データを操作するための権限が必要となります。
- ストレージ BLOB データ共同作成者など、何らかのデータ アクセス ロール
- 少なくとも Azure Resource Manager 閲覧者ロール
が必要となります。詳細につきましては こちらをご参照ください。
これらの設定に加え、アクセスキーの使用についての制限を加える必要がございます。
#アクセス キー利用の制限
アクセス キーの利用について制限を設けるには以下 2 パターンの設定方法がございます。
###(A). ストレージ アカウント全体でアクセス キーによる認証を完全に無効化し、監視対象ユーザーに BLOB データを操作する権限を RBAC で制御
###(B). アクセス キーは有効化し、一部のユーザ以外はアクセス キーの表示を禁止するように権限を RBAC で制御
それぞれについて記載いたします。
(A). アクセス キーによる認証を完全に無効化する方法
アクセス キーによる認証を完全に無効化する方法につきましては、 設定変更に関わる権限なども含め、こちらに記載がございますので、ご参照ください。
記事内でも解説されておりますが、 Microsoft.Storage/storageAccounts/write などのリソース変更権限を監視対象となるユーザーに与えないようにご注意ください。
(B). アクセス キーは有効化するものの、特権をもつユーザ以外はアクセス キーを用いたデータ表示を禁止する方法
対象となる AzureAD ユーザーに “Microsoft.Storage/storageAccounts/listKeys/action” 権限を付与しなければ、 アクセスキーを使用してのデータアクセスはできません。
“Microsoft.Storage/storageAccounts/listKeys/action” がないロールでもポータルで見かけ上、アクセスキーに切り替えるボタンは押せますが、実際にはアクセスキーを使用する権限がないのでデータ表示まではできません。
必要なロールとして上述した
- ストレージ BLOB データ閲覧者、ストレージ BLOB データ共同作成者など、何らかのデータ アクセス ロール
- 少なくとも Azure Resource Manager 閲覧者ロール
のロールのみであれば、listKeys / action はできません
まとめ
Azure Portal では Azure AD ( AAD ) ユーザー認証をさせることで、監視対象ユーザーがどのような操作をしたのか、診断設定ログから判断することが可能です。その際、監視対象ユーザーがアクセスキーを利用できないように設定することも必要となります。
また、Azure Portalでのデータ操作とはスコープが異なりますが、監視対象のユーザーに、ユーザー委任キーの発行権限がある場合、ユーザー委任キーで署名して発行できるユーザー委任SASを用いて、ユーザー委任キーの発行者以外であってもデータアクセスに利用することができてしまいます。
Azure Portal外においても厳密な統制を行う場合は、ユーザー委任キー発行に必要な権限Storage/storageAccounts/blobServices/generateUserDelegationKeyを当該ユーザーに与えないようにすることを推奨いたします。