tencent cloud

文档反馈

集群审计

最后更新时间:2023-05-06 17:36:46
    说明:
    日志服务 CLS 为 TKE Serverless 集群产生的所有审计、事件数据提供免费服务至2021年12月31日。请选择自动创建日志集,或在已有日志集中选择自动创建日志主题。

    简介

    集群审计是基于 Kubernetes Audit 对 kube-apiserver 产生的可配置策略的 JSON 结构日志的记录存储及检索功能。本功能记录了对 kube-apiserver 的访问事件,会按顺序记录每个用户、管理员或系统组件影响集群的活动。

    功能优势

    集群审计功能提供了区别于 metrics 的另一种集群观测维度。开启集群审计后,Kubernetes 可以记录每一次对集群操作的审计日志。每一条审计日志是一个 JSON 格式的结构化记录,包括元数据(metadata)、请求内容(requestObject)和响应内容(responseObject)三个部分。其中元数据(包含了请求的上下文信息,例如谁发起的请求、从哪里发起的、访问的 URI 等信息)一定存在,请求和响应内容是否存在取决于审计级别。通过日志可以了解到以下内容:
    集群里发生的活动。
    活动的发生时间及发生对象。
    活动的触发时间、触发位置及观察点。
    活动的结果以及后续处理行为。

    阅读审计日志示例

    {
    "kind":"Event",
    "apiVersion":"audit.k8s.io/v1",
    "level":"RequestResponse",
    "auditID":0a4376d5-307a-4e16-a049-24e017******,
    "stage":"ResponseComplete",
    // 发生了什么
    "requestURI":"/apis/apps/v1/namespaces/default/deployments",
    "verb":"create",
    // 谁发起的
    "user":{
    "username":"admin",
    "uid":"admin",
    "groups":[
    "system:masters",
    "system:authenticated"
    ]
    },
    // 从哪里发起
    "sourceIPs":[
    "10.0.6.68"
    ],
    "userAgent":"kubectl/v1.16.3 (linux/amd64) kubernetes/ald64d8",
    // 发生了什么
    "objectRef":{
    "resource":"deployments",
    "namespace":"default",
    "name":"nginx-deployment",
    "apiGroup":"apps",
    "apiVersion":"v1"
    },
    // 结果是什么
    "responseStatus":{
    "metadata":{
    },
    "code":201
    },
    // 请求及返回具体信息
    "requestObject":Object{...},
    "responseObject":Object{...},
    // 什么时候开始/结束
    "requestReceivedTimestamp":"2020-04-10T10:47:34.315746Z",
    "stageTimestamp":"2020-04-10T10:47:34.328942Z",
    // 请求被接收/拒绝的原因是什么
    "annotations":{
    "authorization.k8s.io/decision":"allow",
    "authorization.k8s.io/reason":""
    }
    }

    TKE Serverless 集群审计策略

    审计级别(level)

    和一般日志不同,Kubernetes 审计日志的级别更像是一种 verbose 配置,用于标示记录信息的详细程度。一共有4个级别,可参考以下表格内容:
    参数
    说明
    None
    不记录。
    Metadata
    记录请求的元数据(例如用户、时间、资源、操作等),不包括请求和响应的消息体。
    Request
    除了元数据外,还包括请求消息体,不包括响应消息体。
    RequestResponse
    记录所有信息,包括元数据以及请求、响应的消息体。

    审计阶段(stage)

    记录日志可以发生在不同的阶段,参考以下表格内容:
    参数
    说明
    RequestReceived
    一收到请求就记录。
    ResponseStarted
    返回消息头发送完毕后记录,只针对 watch 之类的长连接请求。
    ResponseComplete
    返回消息全部发送完毕后记录。
    Panic
    内部服务器出错,请求未完成。

    审计策略

    TKE Serverless 默认收到请求即会记录审计日志,且大部分的操作会记录 RequestResponse 级别的审计日志。但也会存在如下情况:
    get、list 和 watch 会记录 Request 级别的日志。
    针对 secrets 资源、configmaps 资源或 tokenreviews 资源的请求会在 Metadata 级别记录。
    以下请求将不会进行记录日志:
    system:kube-proxy 发出的监视 endpoints 资源、services 资源或 services/status 资源的请求。
    system:unsecured 发出的针对 kube-system 命名空间中 configmaps 资源的 get 请求。
    kubelet 发出的针对 nodes 资源或 nodes/status 资源的 get 请求。
    system:kube-controller-managersystem:kube-schedulersystem:serviceaccount:endpoint-controller 发出的针对 kube-system 命名空间中 endpoints 资源的 get 和 update 请求。
    system:apiserver 发出的针对 namespaces 资源、namespaces/status 资源或 namespaces/finalize 资源的 get 请求。
    对与 /healthz*/version /swagger* 匹配的网址发出的请求。

    操作步骤

    开启集群审计

    注意
    开启集群审计功能需要重启 kube-apiserver ,建议不要频繁开关。
    2. 选择左侧导航栏中的运维功能管理,进入“功能管理”页面。
    3. 在“功能管理”页面上方选择地域、选择 “Serverless 集群”类型。
    4. 在下方集群列表找到您希望开启集群审计的集群,在其右侧操作栏中单击设置
    5. 在弹出的“设置功能”窗口,单击“集群审计”功能右侧的编辑。如下图所示:
    
    6. 勾选开启集群审计,选择存储审计日志的日志集和日志主题,推荐选择自动创建日志集。如下图所示:
    
    7. 单击确定即可开启集群审计功能。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持