La función de auditoría de operaciones KubeAPI permite supervisar y auditar las operaciones de KubeAPI dentro de su Service Mesh mediante el registro y rastreo de actividades de usuarios. Puede consultar resúmenes de auditoría, detalles de operaciones por cuenta y listas de operaciones específicas por recurso para rastrear eventos clave, analizar estadísticas y mejorar la seguridad y trazabilidad de la malla.
Requisitos previos
Contexto
En este tema, los recursos se refieren a recursos de Istio, incluidos VirtualService, Gateway, DestinationRule, EnvoyFilter, Sidecar y ServiceEntry.
Al habilitar la función de auditoría de malla, se le cobrarán los registros de auditoría generados. Para obtener más información sobre la facturación, consulte Pay-by-feature.
Paso 1: Habilitar la auditoría de operaciones KubeAPI
Nuevas instancias de ASM
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione .
-
En la página Mesh Management, haga clic en Create ASM Instance. Seleccione Enable Mesh Audit, configure los demás parámetros y luego haga clic en Create Service Mesh.
Para obtener más información sobre los parámetros, consulte Create an ASM instance.
NotaDe forma predeterminada, ASM crea un Project para registros de auditoría llamado mesh-log-${Mesh-ID} y un logstore llamado audit-${Mesh-ID} dentro de este Project para almacenar los registros.
Instancias de ASM existentes
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione .
En la página Mesh Audit, seleccione Enable Mesh Audit y luego haga clic en OK.
Paso 2: Consultar informes de auditoría de KubeAPI
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione .
-
En la página Mesh Audit, haga clic en la pestaña API Access Overview o Operation Details para ver los detalles del informe.
-
API Access Overview: Consulte información detallada sobre el comportamiento de acceso a KubeAPI de la instancia de malla.
La página API Access Overview incluye el gráfico circular Access source distribution, el panel Unauthorized access attempts y la tabla Public network access list. La lista de acceso a red pública incluye columnas como Source IP address, Access count, Failure rate %, Unauthorized access attempts, High-risk IP, Country, Province, City e ISP.
-
Operation Details: Consulte una lista detallada de operaciones para un recurso específico en la instancia de malla.
Seleccione o introduzca un tipo de recurso para realizar una consulta en tiempo real. Puede ver el recuento total de diversos eventos, la distribución por namespace, las tendencias de series temporales y una lista detallada de operaciones. La parte superior de la pestaña Resource operations ofrece filtros como Resource type, Namespace y Status code. El área de resumen muestra el número de operadores, namespaces, métodos de operación y la tasa de éxito. Debajo de esta área, encontrará paneles como la línea temporal Operation trace, Create event namespace distribution, Update event namespace distribution, Access event namespace distribution y Delete event namespace distribution.
-
Operaciones relacionadas
Registros detallados
Para ejecutar consultas personalizadas y analizar registros de auditoría, vaya a la consola de Simple Log Service y consulte los registros detallados.
Inicie sesión en la consola de Simple Log Service.
En la sección Projects, haga clic en el Project llamado mesh-log-${Mesh-ID}.
-
Seleccione el logstore llamado audit-${Mesh-ID} y haga clic en Search & Analyze para ver los registros de auditoría correspondientes.AlertasRecreación de auditoría de malla
NotaAl habilitar la auditoría de malla, se agrega automáticamente un logstore llamado audit-${Mesh-ID} al Project generado.
El logstore para registros de auditoría tiene un índice configurado de forma predeterminada. No modifique el índice; de lo contrario, es posible que los informes no funcionen correctamente.
De forma predeterminada, Simple Log Service almacena los registros de auditoría del servidor API de ASM durante 30 días. Para cambiar el período de retención predeterminado, consulte Manage a Logstore.
Las formas comunes de buscar registros de auditoría incluyen las siguientes:
Para consultar las operaciones realizadas por un usuario de RAM específico, introduzca el ID del usuario de RAM en el cuadro de búsqueda y haga clic en Search & Analyze.
Para consultar las operaciones sobre un recurso específico, introduzca el nombre del recurso en el cuadro de búsqueda y haga clic en Search & Analyze.
Para filtrar las operaciones realizadas por componentes del sistema, introduzca
NOT user.username: node NOT user.username: serviceaccount NOT user.username: apiserver NOT user.username: kube-scheduler NOT user.username: kube-controller-manageren el cuadro de búsqueda y haga clic en Search & Analyze.
Para obtener más información sobre los métodos de consulta y análisis, consulte Query overview.
Para recibir alertas en tiempo real sobre operaciones en recursos específicos, utilice la función de alertas de Simple Log Service. Los canales de notificación compatibles incluyen SMS, chatbots de DingTalk, correo electrónico, webhooks personalizados y Notification Center. Para obtener más información, consulte Alerts.
También puede utilizar las sentencias de consulta de los informes de auditoría para consultar registros de auditoría:
-
Ejemplo 1: Alerta sobre ejecución de comandos en contenedores
Una empresa tiene restricciones estrictas sobre el uso de su instancia de malla y no permite a los usuarios iniciar sesión en contenedores ni ejecutar comandos. Si un usuario ejecuta un comando, se debe activar una alerta inmediatamente. La alerta debe incluir detalles como el contenedor específico, el comando ejecutado, el operador, el ID del evento, la hora y la dirección IP de origen.
-
Sentencia de consulta:
verb : create and objectRef.subresource:exec and stage: ResponseStarted | SELECT auditID as "event_id", date_format(from_unixtime(__time__), '%Y-%m-%d %T') as "event_time", regexp_extract("requestURI", '([^\?]*)/exec\?.*', 1) as "resource", regexp_extract("requestURI", '\?(.*)', 1) as "command", "responseStatus.code" as "status_code", CASE WHEN "user.username" != 'kubernetes-admin' THEN "user.username" WHEN "user.username" = 'kubernetes-admin' AND regexp_like("annotations.authorization.k8s.io/reason", 'RoleBinding') THEN regexp_extract("annotations.authorization.k8s.io/reason", ' to User "(\w+)"', 1) ELSE 'kubernetes-admin' END as "operator", CASE WHEN json_array_length(sourceIPs) = 1 THEN json_format(json_array_get(sourceIPs, 0)) ELSE sourceIPs END as "source_ip" LIMIT 100 -
Expresión condicional:
operation_event =~ ".*"
-
-
Ejemplo 2: Alerta sobre fallos de acceso público
Una instancia de malla tiene habilitado el acceso público. Para prevenir ataques maliciosos, es necesario supervisar el número de intentos de acceso público y la tasa de fallos. Si el número de intentos de acceso desde una dirección IP alcanza un umbral (por ejemplo, 10) y la tasa de fallos supera un umbral (por ejemplo, 50%), se debe activar una alerta inmediatamente. La alerta debe incluir la región geográfica de la dirección IP del usuario, la dirección IP de origen y si se trata de una dirección IP de alto riesgo.
-
Sentencia de consulta:
* | SELECT ip AS "source_ip", total AS "request_count", round(rate * 100, 2) AS "failure_rate_pct", failCount AS "forbidden_count", CASE WHEN security_check_ip(ip) = 1 THEN 'yes' ELSE 'no' END AS "is_high_risk_ip", ip_to_country(ip) AS "country", ip_to_province(ip) AS "province", ip_to_city(ip) AS "city", ip_to_provider(ip) AS "isp" FROM ( SELECT CASE WHEN json_array_length(sourceIPs) = 1 THEN json_format(json_array_get(sourceIPs, 0)) ELSE sourceIPs END AS ip, count(1) AS total, sum(CASE WHEN "responseStatus.code" < 400 THEN 0 ELSE 1 END) * 1.0 / count(1) AS rate, count_if("responseStatus.code" = 403) AS failCount FROM log GROUP BY ip LIMIT 10000 ) WHERE ip_to_domain(ip) != 'intranet' HAVING "request_count" > 10 AND "failure_rate_pct" > 50 ORDER BY "request_count" DESC LIMIT 100 -
Expresión condicional:
source_ip =~ ".*"
-
Si elimina accidentalmente el Project de SLS para la auditoría de malla, debe recrearlo para continuar utilizando la función.
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione .
-
En la página Mesh Audit, en el cuadro de diálogo Rebuild Mesh Audit, haga clic en Recreate.
El nombre del Project recreado es igual al nombre anterior con una marca de tiempo agregada al final.
Documentos relacionados
Para enviar notificaciones de alerta oportunas a los contactos cuando cambian recursos importantes, consulte Configure audit alerts for operations on mesh resources.
Puede configurar identidad de carga de trabajo, autenticación entre pares, autenticación de solicitudes y políticas de autorización en la malla para gestionar los recursos de la malla con mayor granularidad y mejorar su seguridad. Para obtener más información, consulte Overview of zero trust security.