能否记录调用Azure Logic Apps工作流的AD用户?监控方案咨询
默认情况下,Azure Monitor、Log Analytics确实没法直接捕获触发Logic Apps工作流的AD用户身份,但可以通过以下几种方式实现需求:
在触发请求中注入并记录用户身份
如果是通过HTTP触发器调用工作流,若调用方是经过Azure AD认证的用户,请求头里会自动带上x-ms-client-principal-name(用户UPN)和x-ms-client-principal-id(用户对象ID)。你可以在工作流的第一步就添加「写入日志」动作,把这些字段的值写入Log Analytics,这样就能直接关联到触发用户。
要是调用方没自动带这些头,也可以要求调用方在请求头或请求体里明确传递用户标识,再在工作流中提取记录。关联Azure AD审计日志与Logic Apps运行日志
开启Azure AD的审计日志,里面会记录用户的身份验证和操作事件。然后在Log Analytics里用Kusto查询关联两类日志:通过Correlation ID或者工作流的Resource ID,把Azure AD审计日志里的UserPrincipalName和Logic Apps的运行记录绑定起来。
举个Kusto查询示例:AzureActivity | where ResourceProviderValue == "Microsoft.Logic" and OperationNameValue contains "run" | join kind=inner ( AuditLogs | where OperationName contains "Sign-in" | project UserPrincipalName, CorrelationId, ResourceId ) on CorrelationId | project 触发时间=TimeGenerated, 调用者=UserPrincipalName, 工作流ID=ResourceId, 操作类型=OperationNameValue借助Azure Activity日志获取手动触发用户
如果是用户在Azure门户手动触发工作流,这类操作会被记录在Azure Activity日志里,其中的Caller字段就是触发用户的UPN。你可以把Azure Activity日志也发送到Log Analytics,直接通过这个字段获取用户信息,再和Logic Apps的运行日志关联。通过中间层统一捕获身份
要是前面的方法都不适用,可以搭一个简单的中间层(比如Azure Function),所有调用Logic Apps的请求都先经过这个中间层。中间层负责验证用户身份、记录用户信息,再把请求转发给Logic Apps,同时在请求里带上用户标识,方便工作流后续记录。
内容的提问来源于stack exchange,提问作者Donna

