在 Log Analytics 工作区中管理表级读取访问权限

使用表级访问设置,可以向特定用户或组授予对表中数据的只读权限。 具有表级读取访问权限的用户可以在工作区和资源上下文中读取指定表中的数据。

本文介绍了两种管理表级读取访问权限的方法。

注意

建议使用此处介绍的第一种方法,该方法目前以预览版的形式提供。 在预览期间,此处所述的建议方法不适用于 Microsoft Sentinel 检测规则,因为后者可能有权访问比预期更多的表。 或者可以使用设置表级读取访问权限的旧方法,该方法具有一些与自定义日志表相关的限制。 在使用任一方法之前,请参阅表级访问注意事项和限制

设置表级读取访问权限(预览版)

授予表级读取访问权限会涉及向用户分配两个角色:

  • 在工作区级别 - 一个自定义角色,可提供读取工作区详细信息和在工作区中运行查询的有限权限,但不能从任何表读取数据。
  • 在表级别 - 读者角色,其范围限定为特定表。

要向用户或组授予对 Log Analytics 工作区的有限权限:

  1. 在工作区级别创建自定义角色,以支持用户读取工作区详细信息并在工作区中运行查询,而无需提供对任何表中数据的读取访问权限:

    1. 导航到工作区,选择“访问控制(IAM)”>“角色”。

    2. 右键单击“读取者”角色,然后选择“克隆”。

      显示了访问控制屏幕的“角色”选项卡的屏幕截图,其中突出显示“读取者”角色的“克隆”按钮。

      该操作将打开“创建自定义角色”屏幕。

    3. 在屏幕的“基本信息”选项卡上:

      1. 输入“自定义角色名称”值,并根据需要提供说明。
      2. 将“基线权限”设置为“从头开始”。

      显示了“创建自定义角色”屏幕的“基本信息”选项卡的屏幕截图,其中突出显示了“自定义角色名称”和“说明”字段。

    4. 选择“JSON”选项卡 >“编辑”:

      1. "actions" 部分中,添加以下操作:

        "Microsoft.OperationalInsights/workspaces/read",
        "Microsoft.OperationalInsights/workspaces/query/read" 
        
      2. "not actions" 部分,添加:

        "Microsoft.OperationalInsights/workspaces/sharedKeys/read"
        

      显示了“创建自定义角色”屏幕的“JSON”选项卡的屏幕截图,其中突出显示了 JSON 文件的操作部分。

    5. 在屏幕底部选择“保存”>“查看 + 创建”,然后在下一页选择“创建”。

  2. 将你的自定义角色分配给相关用户:

    1. 选择“访问控制(AIM)”>“添加”>“添加角色分配”。

      显示“访问控制”屏幕的屏幕截图,其中突出显示了“添加角色分配”按钮。

    2. 选择创建的自定义角色,然后选择“下一步”。

      显示“添加角色分配”屏幕的屏幕截图,其中突出显示了自定义角色和“下一步”按钮。

      该操作将打开“添加自定义角色分配”屏幕的“成员”选项卡。

    3. 单击“+ 选择成员”,打开“选择成员”屏幕。

      显示选择成员屏幕的屏幕截图。

    4. 搜索并选择用户,然后单击“选择”。

    5. 选择“查看并分配”。

用户现在可以读取工作区详细信息并运行查询,但无法从任何表中读取数据。

要授予用户对特定表的读取访问权限:

  1. 从“Log Analytics 工作区”菜单中,选择“表”。

  2. 选择表右侧的省略号(...),然后选择“访问控制 (IAM)”。

    屏幕截图显示了 Log Analytics 工作区标管理屏幕,其中突出显示了“表级访问权限控制”按钮。

  3. 在“访问控制(IAM)”屏幕上,选择“添加”>“添加角色分配”。

  4. 选择“读者”角色,然后选择“下一步”。

  5. 单击“+ 选择成员”,打开“选择成员”屏幕。

  6. 搜索并选择用户,然后单击“选择”。

  7. 选择“查看并分配”。

现在,用户可以从此特定表读取数据。 根据需要授予用户对工作区中其他表的读取访问权限。

设置表级读取访问权限的旧方法

表级旧方法还使用 Azure 自定义角色,以便向特定用户或组授予对工作区中特定表的访问权限。 不管用户的访问模式是什么,Azure 自定义角色都通过工作区上下文或资源上下文访问控制模式应用至工作区。

若要定义对特定表的访问,请创建自定义角色

  • 在角色定义的“操作”部分中设置用户权限。
  • 使用 Microsoft.OperationalInsights/workspaces/query/* 授予对所有表的访问权限。
  • 要在“操作”中使用通配符时排除对特定表的访问,请在角色定义的“NotActions”部分列出排除的表。

下面是用于授予和拒绝对特定表的访问权限的自定义角色操作示例。

授予对 Heartbeat 和 AzureActivity 表的访问权限:

"Actions":  [
    "Microsoft.OperationalInsights/workspaces/read",
    "Microsoft.OperationalInsights/workspaces/query/read",
    "Microsoft.OperationalInsights/workspaces/query/Heartbeat/read",
    "Microsoft.OperationalInsights/workspaces/query/AzureActivity/read"
  ],

仅授予对 SecurityBaseline 表的访问权限:

"Actions":  [
    "Microsoft.OperationalInsights/workspaces/read",
    "Microsoft.OperationalInsights/workspaces/query/read",
    "Microsoft.OperationalInsights/workspaces/query/SecurityBaseline/read"
],

授予对除 SecurityAlert 表之外的其他所有表的访问权限:

"Actions":  [
    "Microsoft.OperationalInsights/workspaces/read",
    "Microsoft.OperationalInsights/workspaces/query/read",
    "Microsoft.OperationalInsights/workspaces/query/*/read"
],
"notActions":  [
    "Microsoft.OperationalInsights/workspaces/query/SecurityAlert/read"
],

自定义表存储从文本日志HTTP 数据收集器 API 等数据源收集的数据。 要识别表格类型,请查看 Log Analytics 中的表格信息

使用表级访问的旧方法,无法在表级别授予对单个自定义日志表的访问权限,但可以授予对所有自定义日志表的访问权限。 若要创建一个有权访问所有自定义日志表的角色,请使用以下操作创建自定义角色:

"Actions":  [
    "Microsoft.OperationalInsights/workspaces/read",
    "Microsoft.OperationalInsights/workspaces/query/read",
    "Microsoft.OperationalInsights/workspaces/query/Tables.Custom/read"
],

表级访问注意事项和限制

  • 在 Log Analytics UI 中,表级用户可以查看工作区中所有表的列表,但只能从其有权访问的表中检索数据。
  • 标准读者或参与者角色(包括 */read 操作)将替代表级访问控制,并向用户授予对所有日志数据的访问权限。
  • 如果用户具有表级访问权限,但没有工作区级访问权限,则可以通过 API 但不能通过 Azure 门户访问日志数据。
  • 无论任何其他权限设置如何,订阅管理员和所有者有权访问所有数据类型。
  • 应用按表进行的访问控制时,工作区所有者被视为类似于其他任何用户。
  • 将角色分配到安全组而不是个人用户,以减少分配数目。 这种做法还有助于使用现有的组管理工具来配置和验证访问权限。

后续步骤