查看操作系统政策报告


虚拟机管理器将操作系统政策分配应用于虚拟机 (VM) 实例后,系统会生成操作系统政策分配报告。该报告包含应用于给定操作系统政策分配的特定虚拟机的所有操作系统政策的合规性状态。

本文档介绍了以下任务:

准备工作

  • 查看 OS Config 配额
  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色和权限

如需获得查看操作系统政策合规性数据所需的权限,请让您的管理员授予您以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理访问权限

这些预定义角色包含查看操作系统政策合规性数据所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

需要具备以下权限才能查看操作系统政策合规性数据:

  • 查看组织或文件夹中虚拟机的操作系统政策合规性摘要(预览版):
    • osconfig.osPolicyAssignmentReports.searchSummaries
    • osconfig.osPolicyAssignments.searchPolicies
    • resourcemanager.projects.get
    • resourcemanager.projects.list

您也可以使用自定义角色或其他预定义角色来获取这些权限。

查看组织或文件夹中所有虚拟机的操作系统政策合规性摘要

您可以使用 Google Cloud 控制台查看组织或文件夹中所有虚拟机的操作系统政策合规性摘要。

虚拟机管理器仅针对满足以下要求之一的项目显示操作系统政策合规性摘要:

  • 包含一个或多个已启用和运行虚拟机管理器的虚拟机。
  • 包含过去 7 天内运行虚拟机管理器的一台或多台虚拟机,并且提供了操作系统政策合规性数据。

如需查看操作系统政策合规性数据,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Compute Engine > 虚拟机管理器 > 操作系统政策页面。

    转到“操作系统政策”

  2. 在 Google Cloud 控制台顶部的项目下拉列表中,选择要查看其操作系统政策合规性摘要的组织或文件夹。

  3. 使用以下选项查看操作系统政策合规性数据:

    1. 如需查看每个项目的操作系统政策合规性摘要,请点击项目标签页。
    2. 如需查看每个政策的操作系统政策合规性摘要,请点击操作系统政策标签页。
  4. 可选:通过使用查询构建器来指定计算操作系统政策合规性摘要的条件。

  5. 查看虚拟机的操作系统政策合规性摘要。项目标签页中的表包含每行的项目,如下图所示:

    所有项目的操作系统政策摘要。

    下表列出了符合您在查询构建器中指定的条件的以下信息:

    • 项目:组织中至少包含一个虚拟机且已启用虚拟机管理器的项目的名称。
    • 虚拟机总数:每个项目中的虚拟机总数。
    • 受监控的虚拟机:项目中已启用虚拟机管理器代理,且正在接受政策合规性扫描的虚拟机数量。
    • 包含政策的虚拟机数量:至少分配了一项政策的虚拟机数量。
    • 合规:所有已分配政策均报告为 COMPLIANT 的虚拟机数量。
    • 不合规:至少有一项已分配政策被报告为 NON-COMPLIANT 的虚拟机数量。
    • 未知:至少有一项已分配政策被报告为 UNKNOWN 且没有政策报告为 NON-COMPLIANT 的虚拟机数量。UNKNOWN 状态是由以下某种原因造成的:
      • 虚拟机未运行。
      • 虚拟机未启用虚拟机管理器代理。
      • 在此过程中发生错误。
    • 无报告:已分配政策但由于以下某个原因未找到政策合规性报告的虚拟机数量:
      • 虚拟机未启用虚拟机管理器代理。
      • 合规性扫描正在进行中。报告尚未准备好。
  6. 可选:如果要查看操作系统政策合规性摘要表中的特定行,请应用表过滤条件。

    政策摘要表中的表过滤条件。

    例如,如果要查看具有超过 10 个虚拟机的项目的操作系统政策合规性摘要,请将过滤条件选项虚拟机总数设置为 >= 10

  7. 可选:点击虚拟机数量以查看有关处于特定状态的虚拟机的更多详细信息。例如,点击未知列中给定项目的虚拟机数量会打开虚拟机实例标签页,其中列出了该项目中每个虚拟机的未知操作系统政策。

    提供未知操作系统政策的“虚拟机实例”标签页。

    如需了解详情,请参阅查看操作系统政策分配报告

使用查询构建器过滤操作系统政策合规性数据

虚拟机管理器会根据您在查询构建器中指定的条件显示组织或文件夹中项目的虚拟机的操作系统合规性数据。然后,您可以使用操作系统政策合规表中的表过滤条件来过滤显示的数据。

例如,如果您将查询构建器中的 OS 属性设置为 Debian,则虚拟机管理器会显示使用 Debian 操作系统的虚拟机的操作系统政策合规数据。如果您想要查看特定项目的合规性数据,请使用表过滤条件指定项目 ID。

具有一个属性的查询构建器。

如需在项目标签页的查询构建器中设置查询,请执行以下操作:

  1. 选择属性。查询构建器支持以下属性:

    • 操作系统:指定操作系统的简称,例如 WindowsDebian
    • 操作系统版本:指定操作系统版本。例如 21.0410.0.22000。您可以在操作系统版本字符串的末尾指定单个星号 (*) 以指示部分匹配,例如 10*
    • 虚拟机正在运行:指定是否要查看处于 RUNNING 状态的虚拟机的补丁摘要。
    • 政策指纹:指定操作系统政策的唯一政策指纹。设置此属性后,虚拟机管理器仅计算具有指定指纹的操作系统政策的合规性摘要。
    • 合规状态:指定政策的某种合规状态:
      • COMPLIANT:所有已分配政策均报告为 COMPLIANT 的虚拟机
      • NON-COMPLIANT:至少具有一项已分配政策报告为 NON-COMPLIANT 的虚拟机
      • UNKNOWN:至少具有一项已分配政策报告为 UNKNOWN 的虚拟机
  2. 选择一个属性并指定该属性的值。例如,如果要查看具有特定操作系统的虚拟机的补丁摘要,请选择操作系统。然后,您需要从中选择比较运算符列表。

    1. 选择一个运算符,例如 ==
    2. 字段中,指定比较值。例如 Debian
  3. 如需添加其他属性,请点击添加条件

  4. 点击搜索

查看操作系统政策分配报告

如需查看操作系统政策分配报告,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST

使用此过程查看指定位置的操作系统政策分配报告列表。

控制台

  1. 如果您使用 VPC Service Controls 保护您的服务,请将 Cloud Asset Inventory 服务添加到允许的服务列表中。如需了解详情,请参阅 VPC 可访问服务

  2. 在 Google Cloud 控制台中,转到操作系统政策 > 虚拟机实例页面。

    转到虚拟机实例

    查看虚拟机合规性。

gcloud

如需查看操作系统政策分配报告列表,请使用 os-config os-policy-assignment-reports list 命令

如需查看特定位置的所有操作系统政策分配报告,请运行以下命令。将 ZONE 替换为虚拟机所在的区域。

gcloud compute os-config os-policy-assignment-reports list --location=ZONE

示例命令和输出(所有虚拟机)

gcloud compute os-config os-policy-assignment-reports list --location=us-central1-a

INSTANCE                   ASSIGNMENT_ID                   LOCATION       UPDATE_TIME                  SUMMARY
centos7                    my-test-assignment1             us-central1-a  2021-11-02T18:14:03.908341Z  0/1 policies compliant
centos7                    my-test-assignment2             us-central1-a  2021-11-02T18:14:03.908341Z  0/1 policies compliant
rhel-8                     my-test-assignment1             us-central1-a  2021-11-02T19:13:28.468290Z  0/1 policies compliant
rhel-8                     my-test-assignment2             us-central1-a  2021-11-02T19:13:28.468290Z  0/1 policies compliant
my-centos                  my-test-assignment1             us-central1-a  2021-11-02T18:14:37.418883Z  1/1 policies compliant
my-centos                  my-test-assignment2             us-central1-a  2021-11-02T18:14:37.418883Z  0/1 policies compliant
deb-10                     my-test-assignment2             us-central1-a  2021-11-02T19:00:11.777748Z  0/1 policies compliant
windows                    my-test-assignment2             us-central1-a  2021-11-02T18:24:07.935711Z  0/1 policies compliant
windows                    my-test-assignment3             us-central1-a  2021-11-02T18:24:07.935711Z  0/1 policies compliant
sles15                     my-test-assignment2             us-central1-a  2021-11-02T18:38:07.335276Z  0/1 policies compliant

您还可以使用 --instance--assignment-id 等可选标志来过滤结果。

gcloud compute os-config os-policy-assignment-reports list --location=ZONE \
    [--instance=VM_NAME | --assignment-id=ASSIGNMENT_ID]

请替换以下内容:

  • ZONE:该虚拟机所在的可用区
  • 可选:提供以下其中一项:
    • VM_NAME:您要查看其操作系统政策分配报告的虚拟机的名称或 ID
    • ASSIGNMENT_ID:您要查看其操作系统政策分配报告的操作系统政策分配的 ID

命令和输出示例(特定虚拟机)

gcloud compute os-config os-policy-assignment-reports list --location=us-central1-a \
    --instance=my-centos

INSTANCE                ASSIGNMENT_ID               LOCATION       UPDATE_TIME                  SUMMARY
my-centos               my-test-assignment1         us-central1-a  2021-11-02T18:14:37.418883Z  1/1 policies compliant
my-centos               my-test-assignment2         us-central1-a  2021-11-02T18:14:37.418883Z  0/1 policies compliant

命令和输出示例(特定分配)

gcloud compute os-config os-policy-assignment-reports list --location=us-central1-a \
    --assignment-id=my-test-assignment1

INSTANCE                ASSIGNMENT_ID               LOCATION       UPDATE_TIME                  SUMMARY
centos7                 my-test-assignment1         us-central1-a  2021-11-02T18:14:03.908341Z  0/1 policies compliant
rhel-8                  my-test-assignment1         us-central1-a  2021-11-02T19:13:28.468290Z  0/1 policies compliant
my-centos               my-test-assignment1         us-central1-a  2021-11-02T18:14:37.418883Z  1/1 policies compliant

REST

在 API 中,创建对 projects.locations.osPolicyAssignments.reports.list 方法GET 请求。

GET https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/VM_NAME/osPolicyAssignments/OS_POLICY_ASSIGNMENT_ID/report

请替换以下内容:

  • PROJECT_ID:您的项目 ID
  • ZONE:虚拟机所在的区域
  • 可选。提供以下其中一项:
    • VM_NAME:要查看其操作系统政策分配报告的虚拟机的名称或 ID。如果不要求,请使用 - 作为值。
    • ASSIGNMENT_ID:要查看其操作系统政策分配报告的操作系统政策分配的 ID。如果不要求,请使用 - 作为值。

示例

  • 如需查看项目 my-project-12345 和区域 us-central1-a 中所有虚拟机的报告,请使用以下 URI:
    projects/my-project-12345/locations/us-central1-a/instances/-/osPolicyAssignments/-/report
  • 如需查看项目 my-project-12345 和区域 us-central1-a 中虚拟机 my-test-vm 的报告,请使用以下 URI:
    projects/my-project-12345/locations/us-central1-a/instances/my-test-vm/osPolicyAssignments/-/report
  • 如需查看项目 my-project-12345 和区域 us-central1-a 中具有 my-test-assignment 操作系统政策分配的所有虚拟机的报告,请使用以下 URI:
    projects/my-project-12345/locations/us-central1-a/instances/-/osPolicyAssignments/my-test-assignment/report

查看操作系统政策分配报告

使用此过程可以详细查看与特定虚拟机关联的操作系统政策分配报告。

控制台

  1. 如果您使用 VPC Service Controls 保护您的服务,请将 Cloud Asset Inventory 服务添加到允许的服务列表中。如需了解详情,请参阅 VPC 可访问服务

  2. 在 Google Cloud 控制台中,转到操作系统政策 > 虚拟机实例页面。

    转到 Google Cloud 控制台

  3. 如需查看特定虚拟机的操作系统政策分配报告,请点击该虚拟机的名称。

    查看虚拟机合规性。

  4. 查看状态状态原因日志字段。日志字段提供了指向 Cloud Logging 信息中心的链接,您可通过它访问在虚拟机上运行的 OS Config 代理的调试日志。

    如需解决这些问题,您还可以查看操作系统政策的日志,并进行所需的更新。要查看日志,请参阅虚拟机管理器问题排查

gcloud

  1. 如需查看特定虚拟机的操作系统政策分配报告,请使用 os-config os-policy-assignment-reports describe 命令

    gcloud compute os-config os-policy-assignment-reports describe OS_POLICY_ASSIGNMENT_ID \
        --instance=VM_NAME \
        --location=ZONE
    

    请替换以下内容:

    • OS_POLICY_ASSIGNMENT_ID:您要查看其指定虚拟机的操作系统政策分配的 ID
    • VM_NAME:您要查看其操作系统政策分配报告的虚拟机的名称或 ID
    • ZONE:该虚拟机所在的可用区

    示例

    gcloud compute os-config os-policy-assignment-reports describe my-test-assignment1 \
        --instance=centos7 \
        --location=us-central1-a
    

    输出

    instance: centos7
    lastRunId: 96a61b92-3e14-4155-a3e8-dd66520f49ae
    name: projects/1234578882888/locations/us-central1-a/instances/29255009728795105/osPolicyAssignments/my-test-assignment1/report
    osPolicyAssignment: projects/1234578882888/locations/us-central1-a/osPolicyAssignments/my-test-assignment1t@3428384d-fa61-478e-b7e2-3d5fae74bea3
    osPolicyCompliances:
    – complianceState: UNKNOWN
      complianceStateReason: os-policies-not-supported-by-agent
      osPolicyId: setup-repo-and-install-package-policy
      osPolicyResourceCompliances:
      – complianceState: UNKNOWN
        complianceStateReason: os-policy-execution-attempt-failed
        osPolicyResourceId: setup-repo
      – complianceState: UNKNOWN
        complianceStateReason: os-policy-execution-attempt-failed
        osPolicyResourceId: install-pkg
    updateTime: '2021-11-02T19:14:34.314831Z'
    
  2. 查看 complianceStatecomplianceStateReason

    如需解决这些问题,您还可以查看操作系统政策的日志,并进行所需的更新。要查看日志,请参阅虚拟机管理器问题排查

REST

  1. 在 API 中,创建对 projects.locations.osPolicyAssignments.reports.get 方法GET 请求。

    GET https://osconfig.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/VM_NAME/osPolicyAssignments/OS_POLICY_ASSIGNMENT_ID/report
    

    请替换以下内容:

    • PROJECT_ID:您的项目 ID
    • ZONE:该虚拟机所在的可用区
    • VM_NAME:您要查看其操作系统政策分配报告的虚拟机的名称或 ID
    • OS_POLICY_ASSIGNMENT_ID:您要查看其操作系统政策分配报告的操作系统政策分配的 ID
  2. 查看 complianceStatecomplianceStateReason

    如需解决这些问题,您还可以查看操作系统政策的日志,并进行所需的更新。要查看日志,请参阅虚拟机管理器问题排查

后续步骤