You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过已认证的StorageManagementClient获取Azure存储账户创建者?

获取Azure存储账户的创建者信息(基于StorageManagementClient)

storage_client.storage_accounts.list()返回的存储账户对象本身不包含创建者信息——这类归属数据属于Azure活动日志(Activity Log)的范畴,并非存储账户资源的固有属性。要获取创建者信息,需要通过查询活动日志中对应的资源创建事件来实现。

实现步骤

  1. 权限配置:用于认证的服务账户需要拥有Monitoring Reader或更高权限(如Reader),才能读取Azure活动日志。
  2. 查询活动日志:复用同一套凭据初始化Monitor管理客户端,筛选目标存储账户的创建操作事件。

代码示例

from azure.mgmt.monitor import MonitorManagementClient
from datetime import datetime, timedelta

# 复用StorageManagementClient的凭据和订阅ID初始化Monitor客户端
monitor_client = MonitorManagementClient(credential, subscription_id)

# 遍历所有存储账户,逐个查询创建者
for storage_account in storage_client.storage_accounts.list():
    resource_id = storage_account.id
    # 设置查询时间范围(按需调整,覆盖账户可能的创建时间)
    start_time = datetime.utcnow() - timedelta(days=365)
    end_time = datetime.utcnow()

    # 筛选存储账户的创建/写入操作事件
    activity_log_entries = monitor_client.activity_logs.list(
        filter=(
            f"eventTimestamp ge '{start_time.isoformat()}' "
            f"and eventTimestamp le '{end_time.isoformat()}' "
            f"and resourceId eq '{resource_id}' "
            f"and operationName eq 'Microsoft.Storage/storageAccounts/write'"
        )
    )

    # 找到最早的事件(即首次创建操作)
    sorted_events = sorted(activity_log_entries, key=lambda x: x.event_timestamp)
    if sorted_events:
        creator = sorted_events[0].caller
        print(f"存储账户 {storage_account.name} 创建者: {creator}")
    else:
        print(f"未找到存储账户 {storage_account.name} 的创建记录")

注意事项

  • 活动日志默认保留90天,如果存储账户创建时间超过90天,将无法通过此方法获取创建者信息,需依赖内部记录或更长保留期的Azure AD审计日志。
  • Microsoft.Storage/storageAccounts/write操作包含创建和更新行为,取时间最早的事件即为账户创建操作。

内容的提问来源于stack exchange,提问作者Yo mama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:58:10