azure datalake (gen2) 日志中的用户 ID

Posted

技术标签:

【中文标题】azure datalake (gen2) 日志中的用户 ID【英文标题】:Userid in azure datalake (gen2) log 【发布时间】:2021-10-29 12:03:30 【问题描述】:

我正在研究 Azure 中的日志,尤其是我从 ADSL Gen2 数据湖获得的日志。 我无法获取数据湖更改的登录名/用户 ID,这是真的吗?

我有这些字段

TenantId TimeGenerated [UTC] AccountName 位置协议 操作名称 AuthenticationType StatusCode StatusText DurationMs ServerLatencyMs Uri CallerIpAddress CorrelationId SchemaVersion OperationVersion AuthenticationHash UserAgentHeader ClientRequestId Etag ServiceType RequestHeaderSize ResponseHeaderSize LastModifiedTime [UTC] 类别 TlsVersion SourceSystem 类型 _ResourceId

AuthenticationType 只是称为 AccountKey

CallerIpAddress 是用户的 IP 地址

但我正在寻找像 123@domain.com 或类似的用户 ID。那么如何包含fields that describe how the operation was authenticated

要明确 (在 KarthikBhyresh-MT 的一些输入之后)

我有自己的 ADSL,我正在玩 在 ADSL 下的 azure 门户中 > 诊断设置(经典) 我已启用 Blob 日志记录 2.0 版,读取/写入/删除/删除数据(正如建议的那样)

然后我使用 Microsoft Azure Storage Explorer 上传一些文件,再次删除一些文件,然后通常会记录一些内容

在 ADSL 下的 azure 门户中 > Logs (preview) 我阅读了 StorageBlobLogs

如果我在 RequesterUpn 不为空的情况下运行最简单的查询,我会得到我的用户名,即使 AuthenticationType 是 OAuth。那就是登录服务。

但是当我找到 OperationName: DeleteFile 时,我不知道是谁做的 我有 autenticationHash(1) 和 CallerIpAdress(2),我可以从 OAuth 日志事件中查找 IpAdress 以将删除操作放入一个名称

【问题讨论】:

UserPrincipalName [string] - 承载授权中使用的用户主体名称。示例:testuser@azure.onmicrosoft.com 我找到了描述操作如何被认证的字段的列表,其中包括requester / upn请求者的用户主体名称(UPN)。例如:someone@contoso.com。 但它们在日志中都是空的 如果请求不成功或匿名或 SAS 请求,则为空 【参考方案1】:

如果您在 ADLS 帐户中启用了以下详细信息

如果需要,可以选择路由

我现在可以从存储中关于 ADLS 的日志中看到。

包含 upn 的示例记录。您可以在 identity.upn 找到它,其中 OAuth 是使用的授权,它支持 2.0 版的 Storage Analytics 日志记录。


    "time": "2021-10-30T05:12:17.3923930Z",
    "resourceId": "/subscriptions/<Subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default",
    "category": "StorageRead",
    "operationName": "GetBlobServiceProperties",
    "operationVersion": "2020-08-04",
    "schemaVersion": "1.0",
    "statusCode": 200,
    "statusText": "Success",
    "durationMs": 712,
    "callerIpAddress": "<ip-address><port>",
    "correlationId": "fced83b0-xxxx-xxxx-xxxx-cd769c000000",
    "identity": 
        "type": "OAuth",
        "tokenHash": "E098F823BC1BE1D9AC73F22F82xxxxxxxxxxxxxxxxxxxx5537E013A5E6BDF71E",
        "requester": 
            "appId": "691458b9-xxxx-xxxx-xxxx-ed83a7f1b41c",
            "audience": "https://storage.azure.com/",
            "objectId": "b1c5060f-xxxx-xxxx-xxxx-31cce61160f4",
            "tenantId": "72f988bf-xxxx-xxxx-xxxx-2d7cd011db47",
            "tokenIssuer": "https://sts.windows.net/72f988bf-xxxx-xxxx-xxxx-2d7cd011db47/",
            "upn": "user@domain.com"
        
    ,
    "location": "East US",
    "properties": 
        "accountName": "<storage-account-name>",
        "userAgentHeader": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30",
        "serviceType": "blob",
        "objectKey": "/<storage-account-name>",
        "serverLatencyMs": 711,
        "requestHeaderSize": 2713,
        "responseHeaderSize": 282,
        "responseBodySize": 802,
        "tlsVersion": "TLS 1.2"
    ,
    "uri": "https://<storage-account-name>.blob.core.windows.net:443/?restype=service&comp=properties&_=1635xxxx35961",
    "protocol": "HTTPS",
    "resourceType": "Microsoft.Storage/storageAccounts/blobServices"

更多详情请参考官方 MSStorage Analytics log format 文档。

"category": "StorageWrite" 的示例记录

【讨论】:

这太棒了@karthikbhyresh-mt!这让我可以登录到数据湖。但我希望链接操作,例如读/写/删除/添加文件到 upn。 是的,您可以在category 下找到它们,在我的示例中是StorageRead 我刚刚查找了另一个日志文件进行写操作。 `“类别”:“StorageWrite”,“操作名称”:“PutBlob”,` 我已经根据 KarthikBhyresh-MT 的回答更新了我原来的问题【参考方案2】:

一旦我将允许存储帐户密钥访问设置为禁用。我在每个 StorageRead、StorageWrite、StorageDelete 上都有 OAuth

MS Dokumentation

【讨论】:

以上是关于azure datalake (gen2) 日志中的用户 ID的主要内容,如果未能解决你的问题,请参考以下文章

Azure Function Python 写入 Azure DataLake Gen2

Azure Datalake Store Gen2 使用 scala spark 库从 Databricks 读取文件

Azure databricks - 无法使用来自 datalake 存储 gen2 服务的 spark 作业读取 .csv 文件

Azure Databricks - 从 Gen2 Data Lake Storage 运行 Spark Jar

DataBricks - 将更改保存回 DataLake (ADLS Gen2)

Azure DataLake 存储服务主体的 REST api 无法使用特定于文件夹的访问