O recurso de auditoria de operações do KubeAPI permite monitorar e auditar as operações do KubeAPI no Service Mesh ao registrar e rastrear atividades de usuários. Assim, você visualiza resumos de auditoria, detalhes de operações de contas e listas de operações específicas de recursos para acompanhar eventos importantes, analisar estatísticas e aprimorar a segurança e a rastreabilidade do mesh.
Pré-requisitos
Informações básicas
Neste tópico, os recursos referem-se aos recursos do Istio, incluindo VirtualService, Gateway, DestinationRule, EnvoyFilter, Sidecar e ServiceEntry.
Após ativar o recurso de auditoria do mesh, haverá cobrança pelos logs de auditoria gerados. Para obter mais informações sobre faturamento, consulte Pagamento por recurso.
Etapa 1: Ativar a auditoria de operações do KubeAPI
Novas instâncias do ASM
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
-
Na página Mesh Management, clique em Create ASM Instance. Selecione Enable Mesh Audit, configure os demais parâmetros e clique em Create Service Mesh.
Para obter mais informações sobre os parâmetros, consulte Criar uma instância do ASM.
NotaPor padrão, o ASM cria um Project para logs de auditoria chamado mesh-log-${Mesh-ID} e um Logstore chamado audit-${Mesh-ID} dentro desse Project para armazenar os logs.
Instâncias existentes do ASM
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Audit, selecione Enable Mesh Audit e clique em OK.
Etapa 2: Visualizar relatórios de auditoria do KubeAPI
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Mesh Audit, clique na aba API Access Overview ou Operation Details para visualizar os detalhes do relatório.
-
API Access Overview: visualize informações detalhadas sobre o comportamento de acesso ao KubeAPI da instância do mesh.
A página API Access Overview inclui o gráfico de pizza Access source distribution, o painel Unauthorized access attempts e a tabela Public network access list. A lista de acesso à rede pública contém colunas como Source IP address, Access count, Failure rate %, Unauthorized access attempts, High-risk IP, Country, Province, City e ISP.
-
Operation Details: exibe uma lista detalhada de operações para um recurso específico na instância do mesh.
Selecione ou insira um tipo de recurso para consultar em tempo real. Você pode visualizar a contagem total de vários eventos, distribuição por namespace, tendências de séries temporais e uma lista detalhada de operações. A parte superior da aba Resource operations oferece filtros como Resource type, Namespace e Status code. A área de visão geral mostra o número de operadores, namespaces, métodos de operação e a taxa de sucesso. Abaixo dessa área, encontram-se painéis como a linha do tempo Operation trace, Create event namespace distribution, Update event namespace distribution, Access event namespace distribution e Delete event namespace distribution.
-
Operações relacionadas
Registros detalhados de log
Para executar consultas personalizadas e analisar logs de auditoria, acesse o console do Simple Log Service e visualize os registros detalhados de log.
Faça login no console do Simple Log Service.
Na seção Projects, clique no Project chamado mesh-log-${Mesh-ID}.
-
Selecione o Logstore chamado audit-${Mesh-ID} e clique em Search & Analyze para visualizar os logs de auditoria correspondentes.AlertasRecriando auditoria do mesh
NotaAo ativar a auditoria do mesh, o sistema adiciona automaticamente um Logstore chamado audit-${Mesh-ID} ao Project gerado.
O Logstore para logs de auditoria possui um índice configurado por padrão. Não modifique esse índice; caso contrário, os relatórios podem não funcionar corretamente.
Por padrão, o Simple Log Service armazena logs de auditoria do API Server do ASM por 30 dias. Para alterar o período de retenção padrão, consulte Gerenciar um Logstore.
As formas comuns de pesquisar logs de auditoria incluem:
Para consultar as operações de um usuário RAM específico, insira o id do usuário RAM na caixa de pesquisa e clique em Search & Analyze.
Para consultar operações em um recurso específico, digite o nome do recurso na caixa de pesquisa e clique em Search & Analyze.
Para filtrar operações executadas por componentes do sistema, insira
NOT user.username: node NOT user.username: serviceaccount NOT user.username: apiserver NOT user.username: kube-scheduler NOT user.username: kube-controller-managerna caixa de pesquisa e clique em Search & Analyze.
Para obter mais informações sobre métodos de consulta e análise, consulte Visão geral de consultas.
Para receber alertas em tempo real sobre operações em recursos específicos, utilize o recurso de alerta do Simple Log Service. Os canais de notificação compatíveis incluem SMS, chatbots do DingTalk, e-mail, webhooks personalizados e Notification Center. Para mais detalhes, consulte Alertas.
Também é possível usar as instruções de consulta dos relatórios de auditoria para pesquisar logs de auditoria:
-
Exemplo 1: Alerta sobre execução de comandos em contêineres
Uma empresa possui restrições rigorosas quanto ao uso de sua instância de mesh e não permite que os usuários façam login em contêineres ou executem comandos. Se um usuário executar um comando, um alerta deve ser acionado imediatamente. O alerta deve incluir detalhes como o contêiner específico, o comando executado, o operador, o id do evento, o horário e o endereço ip de origem.
-
Instrução 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 -
Expressão condicional:
operation_event =~ ".*"
-
-
Exemplo 2: Alerta sobre falhas de acesso público
Uma instância de mesh tem o acesso público ativado. Para evitar ataques maliciosos, monitore o número de tentativas de acesso público e a taxa de falha. Se o número de tentativas de acesso de um endereço ip atingir um limiar (por exemplo, 10) e a taxa de falha exceder um limiar (por exemplo, 50%), um alerta deve ser acionado imediatamente. O alerta deve incluir a região geográfica do endereço ip do usuário, o endereço ip de origem e se trata-se de um endereço ip de alto risco.
-
Instrução 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 -
Expressão condicional:
source_ip =~ ".*"
-
Se você excluir acidentalmente o Project do SLS para auditoria do mesh, recrie-o para continuar usando o recurso.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
-
Na página Mesh Audit, na caixa de diálogo Rebuild Mesh Audit, clique em Recreate.
O nome do Project recriado será igual ao nome do Project anterior, com um carimbo de data/hora anexado.
Documentos relacionados
Para enviar notificações de alerta oportunas aos contatos quando houver alterações em recursos importantes, consulte Configurar alertas de auditoria para operações em recursos do mesh.
Configure identidade de carga de trabalho, autenticação de pares, autenticação de solicitação e políticas de autorização no mesh para gerenciar recursos com maior granularidade e melhorar a segurança do mesh. Para obter mais informações, consulte Visão geral da segurança de confiança zero.