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