1.24. 策略合规历史记录(技术预览)(已弃用)


1.24.1. 概述

如果您希望长期存储 Red Hat Advanced Cluster Management for Kubernetes 策略合规事件,策略合规历史记录 API 是一个可选的技术预览功能。您可以使用 API 获取额外详情,如 spec 字段来审核和排除您的策略,并在策略被禁用或从集群中删除时获取合规性事件。策略合规历史记录 API 也可以生成以逗号分隔的值(CSV)电子策略合规事件表,以帮助您进行审核和故障排除。

1.24.1.1. 版本信息

版本 : 2.12.0

1.24.2. API 端点

1.24.2.1. 列出策略合规事件

/api/v1/compliance-events

这会列出您默认有权访问的所有策略合规事件。响应格式如下,默认根据 event.timestamp 进行排序:

Copy to Clipboard Toggle word wrap
{
  "data": [
    {
      "id": 2,
      "cluster": {
        "name": "cluster1",
        "cluster_id": "215ce184-8dee-4cab-b99b-1f8f29dff611"
      },
      "parent_policy": {
        "id": 3,
        "name": "configure-custom-app",
        "namespace": "policies",
        "catageories": ["CM Configuration Management"],
        "controls": ["CM-2 Baseline Configuration"],
        "standards": ["NIST SP 800-53"]
      },
      "policy": {
        "apiGroup": "policy.open-cluster-management.io",
        "id": 2,
        "kind": "ConfigurationPolicy",
        "name": "configure-custom-app",
        "namespace": "",
        // Only shown with `?include_spec`
        "spec": {}
      },
      "event": {
        "compliance": "NonCompliant",
        "message": "configmaps [app-data] not found in namespace default",
        "timestamp": "2023-07-19T18:25:43.511Z",
        "metadata": {}
      }
    },
    {
      "id": 1,
      "cluster": {
        "name": "cluster2",
        "cluster_id": "415ce234-8dee-4cab-b99b-1f8f29dff461"
      },
      "parent_policy": {
        "id": 3,
        "name": "configure-custom-app",
        "namespace": "policies",
        "catageories": ["CM Configuration Management"],
        "controls": ["CM-2 Baseline Configuration"],
        "standards": ["NIST SP 800-53"]
      },
      "policy": {
        "apiGroup": "policy.open-cluster-management.io",
        "id": 4,
        "kind": "ConfigurationPolicy",
        "name": "configure-custom-app",
        "namespace": "",
        // Only shown with `?include_spec`
        "spec": {}
      },
      "event": {
        "compliance": "Compliant",
        "message": "configmaps [app-data] found as specified in namespace default",
        "timestamp": "2023-07-19T18:25:41.523Z",
        "metadata": {}
      }
    }
  ],
  "metadata": {
    "page": 1,
    "pages": 7,
    "per_page": 20,
    "total": 123
  }
}

以下可选查询参数被接受。请注意,如果没有描述的那些只在它引用的字段上过滤。参数值 null 代表没有值。另外,可以使用逗号指定多个值。例如,?cluster.name=cluster1,cluster2 用于 "or" 过滤。如果需要,可以使用 \ 转义逗号。

表 1.1. 查询参数表
查询参数描述

cluster.cluster_id

 

cluster.name

 

direction

排序方向。默认值为 desc,这代表降序排列。支持的值有 ascdesc

event.compliance

 

event.message_includes

用于包含输入字符串的合规性消息的过滤器。仅支持单个值。

event.message_like

用于合规性消息的 SQL LIKE 过滤器。百分比符号(%)表示零个或更多字符的通配符。underscore 符号(_)表示单个字符的通配符。例如,%configmaps [%my-configmap%]% 与引用配置映射 my-configmap 的任何配置策略合规性消息匹配。

event.reported_by

 

event.timestamp

 

event.timestamp_after

RFC 3339 时间戳,用于仅在此时间后才会显示合规事件。例如: 2024-02-28T16:32:57Z

event.timestamp_before

RFC 3339 时间戳,用于仅显示此时间前的合规性事件。例如: 2024-02-28T16:32:57Z

id

 

include_spec

在返回值中包含策略的 spec 字段的标记。默认不设置。

page

查询中的页面号。默认值为 1

parent_policy.categories

 

parent_policy.controls

 

parent_policy.id

 

parent_policy.name

 

parent_policy.namespace

 

parent_policy.standards

 

per_page

每个页面返回的合规事件数量。默认值为 20,且不能超过 100

policy.apiGroup

 

policy.id

 

policy.kind

 

policy.name

 

policy.namespace

 

policy.severity

 

排序

要排序的字段。默认为 event.timestamp。除 policy.specevent.metadata 外的所有字段都可以使用点表示法排序。要指定多个排序选项,请使用 ?sort=policy.name,policy.namespace 等逗号。

1.24.2.2. 选择单个策略合规事件

/api/v1/compliance-events/<id>

您可以通过指定数据库 ID 来选择单个策略合规事件。例如,/api/v1/compliance-events/1 选择 ID 为 1 的合规性事件。返回值的格式如下:

Copy to Clipboard Toggle word wrap
{
  "id": 1,
  "cluster": {
    "name": "cluster2",
    "cluster_id": "415ce234-8dee-4cab-b99b-1f8f29dff461"
  },
  "parent_policy": {
    "id": 2,
    "name": "etcd-encryption",
    "namespace": "policies",
    "catageories": ["CM Configuration Management"],
    "controls": ["CM-2 Baseline Configuration"],
    "standards": ["NIST SP 800-53"]
  },
  "policy": {
    "apiGroup": "policy.open-cluster-management.io",
    "id": 4,
    "kind": "ConfigurationPolicy",
    "name": "etcd-encryption",
    "namespace": "",
    "spec": {}
  },
  "event": {
    "compliance": "Compliant",
    "message": "configmaps [app-data] found as specified in namespace default",
    "timestamp": "2023-07-19T18:25:41.523Z",
    "metadata": {}
  }
}

1.24.2.3. 生成电子表格

/api/v1/reports/compliance-events

您可以生成以逗号分隔的值(CSV)电子表格,用于审核和故障排除。它输出相同的查询参数,并接受与 /api/v1/compliance-events API 端点相同的查询参数。默认情况下,没有设置 per_page 限制,没有设置 per_page 查询参数的最大值。所有 CSV 标头与 /api/v1/compliance-events API 端点相同,并下划线分隔 JSON 对象。例如,事件时间戳带有 event_timestamp 标头。

1.24.3. 认证和授权

策略合规历史记录 API 使用 Red Hat Advanced Cluster Management hub 集群使用的 OpenShift 实例来身份验证和授权。您必须在 HTTPS 请求的 Authorization 标头中提供您的 OpenShift 令牌。

要查找您的令牌,请运行以下命令:

Copy to Clipboard Toggle word wrap
oc whoami --show-token

1.24.3.1. 查看合规性事件

要查看受管集群的合规性事件,您需要访问在 Red Hat Advanced Cluster Management hub 集群中完成 ManagedCluster 对象的 get 动词。例如,要查看 local-cluster 集群的合规性事件,您可以使用 open-cluster-management:view:local-cluster ClusterRole 或创建自己的资源,如下例所示:

Copy to Clipboard Toggle word wrap
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
 name: local-cluster-view
rules:
- apiGroups:
 - cluster.open-cluster-management.io
 resources:
 - managedclusters
 resourceNames:
 - local-cluster
 verbs:
 - get

要验证您对特定受管集群的访问,请使用 oc auth can-i 命令。例如,要检查您是否可以访问 local-cluster 受管集群,请运行以下命令:

Copy to Clipboard Toggle word wrap
oc auth can-i get managedclusters.cluster.open-cluster-management.io/local-cluster

1.24.3.2. 记录合规性事件

在相应受管集群命名空间中的 policies.policy.open-cluster-management.io/status 资源中具有 patch 动词 访问权限的用户或服务帐户 可以访问记录策略合规事件。受管集群中的 governance-policy-framework pod 使用 Red Hat Advanced Cluster Management hub 集群上对应的受管集群命名空间中的 open-cluster-management-compliance-history-api-recorder 服务帐户来记录合规事件。每个服务帐户都有 open-cluster-management:compliance-history-api-recorder ClusterRole 绑定到受管集群命名空间。限制 user 和 service account patch 动词对 策略状态 的访问,以确保存储在策略合规历史记录 API 中的数据的可信度。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat, Inc.