Sobre Consultas
As Consultas do Cloud Guard permitem que você crie consultas para obter informações sobre o estado dos seus recursos. Você pode reexecutar consultas anteriores, salvar consultas favoritas e criar consultas sob demanda.
A Segurança da Instância, que executa OSQuery sob o capô, suporta consultas SQL conforme entendido por SQLite. Essas consultas SQL podem inspecionar seus hosts quase em tempo real em busca de ameaças, detecções ou monitoramento geral de operações.
Você pode executar consultas uma vez ou converter consultas já executadas em consultas programadas para execução em uma cadência definida e enviar resultados ao serviço OCI Logging para criar problemas do Cloud Guard ou exportar informações para um SIEM 3P. E você pode reexecutar consultas que já foram executadas.
As consultas só podem conter uma instrução de consulta por solicitação.
Consultas sob Demanda
Uma consulta sob demanda ou personalizada é uma consulta única gravada usando OSQuery que usa consultas SQL compatíveis com SQLite. A consulta é executada pela Segurança de Instância em um destino.
Você pode executar uma consulta sob demanda em uma única instância e validar os resultados antes de executá-la na frota.
Você pode reexecutar consultas e salvá-las como favoritas para executar novamente.
Algumas informações sobre quando você cria e usa consultas:
- A execução de consultas em ambientes de produção pode afetar os recursos de CPU e memória, portanto:- Limite os grupos de usuários com acesso a consultas.
- Teste consultas em uma única instância antes de executar em toda a frota.
 
Os resultados da consulta sob demanda são excluídos automaticamente após dois dias.
Consultas Programadas
As Consultas Programadas são criadas com base em consultas executadas anteriormente que agora você deseja executar periodicamente em sua frota para que você possa coletar os resultados brutos para pós-processamento. Você seleciona a consulta e escolhe os destinos para executá-la, define a frequência para que ela seja executada e configura o serviço Logging para registrar os resultados.
Controlando o Acesso a Consultas
Você pode controlar o acesso a consultas criando grupos dinâmicos e usando políticas. Consulte:
Sobre o OSquery
As consultas são SQL compreensível SQLite construídas usando a linguagem SQL OSquery.
OSquery é um agente de host multiplataforma de alto desempenho, código aberto que permite que você obtenha visibilidade e insights para sua frota. Ele pode coletar e normalizar dados independentemente do sistema operacional, aumentando a visibilidade em toda a sua infraestrutura. O OSquery pode ajudar qualquer equipe de segurança com detecção de ameaças, forense e intrusão, fornecendo visualizações em tempo real de cada processo em execução e conexão de rede. O OSquery vem com suporte de centenas de tabelas que abrangem tudo, desde processos em execução até extensões de kernel carregadas.
Conceitos Básicos do OSquery
Coletar os dados certos requer fazer as perguntas certas. Para qualquer um começar, eles devem saber a localização dos dados para saber como solicitá-los. A única maneira de fazer as perguntas certas é entender como fazer, e volta a conhecer o esquema.
Entenda o esquema: https://osquery.io/schema/5.5.1/.
A partir de 7 de maio de 2024, há 274 tabelas no esquema. Você pode usar todas as tabelas, com exceção de:
- Tabelas com _eventsno nome.
- Tabelas que exigem suporte YARA.
- 
Tabelas curlecarves.
Melhores Práticas para Consultas
Siga estas melhores práticas:
- Lembre-se de que as consultas podem conter apenas uma instrução de consulta por solicitação.
- Formate a consulta para que seja fácil de ler e mantenha-a simples.
- Use as buscas Join e Sub criteriosamente.
- Defina as informações que você deseja coletar e defina o escopo da consulta para essas informações. Por exemplo, se estiver interessado em executar processos que possam consumir muitos recursos na instância, você poderá escrever SELECT * from processesmas isso geraria um grande volume de dados, possivelmente a maior parte desnecessária. Uma prática melhor seria selecionar apenas as colunas necessárias e definir uma ordem e limitar. Veja um exemplo que oferece uma tabela bem formatada para os 10 principais processos por consumo de memória. SELECT pid, name, ROUND((total_size * '10e-7'), 2) AS memory_used FROM processes ORDER BY total_size DESC LIMIT 10;
Pacotes de Consulta
Os pacotes de consultas OSquery são conjuntos de consultas pré-criados ou personalizados organizados por tipo, como conformidade ou gerenciamento de vulnerabilidades. Você pode usar pacotes de consultas para ajudá-lo a entender como seu sistema responde a conjuntos de consultas e, se necessário, adaptar as consultas ao seu ambiente.
Saiba mais sobre pacotes de consulta em osquery.readthedocs.io, Pacotes de consulta.
Você pode encontrar pacotes de consulta úteis on-line, por exemplo, este em GitHub, https://github.com/osquery/osquery/tree/master/packs.
Exemplos de Consultas
Você pode começar executando algumas consultas locais básicas, como usuários SELECT * FROM ou SELECT * FROM processed LIMIT 10, para saber como as tabelas funcionam.
Além disso, reunimos uma lista de consultas sugeridas para ajudá-lo a começar a trabalhar.
- 
Usuários (users): Procure todas as contas de usuário locais que existem em uma máquina.Linux (Ubuntu): SELECT * FROM users WHERE gid < 65534 AND uid >= 1000;Observação
 uid 1000é onde os usuários geralmente começam no LinuxLinux: Esta consulta localiza todos os usuários que têm shells de log-in reais (não bin/falseoubin/true, com permissões para eles que vivem em lugares diferentes, por exemplo,/usr/bin/falseou/bin/false.SELECT * FROM users WHERE shell NOT LIKE '%false' AND shell NOT LIKE '%true';
- 
Processar Soquetes Abertos (process_open_sockets): Pesquisa processos que fazem conexões de rede, que não sejam conexões da Web.SELECT s.pid, p.name, local_address, remote_address, family, protocol, local_port, remote_port FROM process_open_sockets s JOIN processes p ON s.pid = p.pid WHERE remote_port NOT IN (80, 443) AND local_port NOT IN (0) AND family = 2;
- 
Portas de Escuta (listening_ports): Procura portas abertas em um sistema.SELECT DISTINCT p.pid, p.name, l.port FROM listening_ports AS l JOIN processes as p ON l.pid = p.pid WHERE l.address = '0.0.0.0';
- 
Usuários Conectados (logged_in_users): Mostra quem está conectado no momento a um sistema.SELECT liu.*, p.name, p.cmdline, p.cwd, p.root FROM logged_in_users liu, processes p WHERE liu.pid = p.pid;
- 
Arquivo (file): Retorna informações sobre o arquivo especificado no disco. As consultas a seguir localizam todos os arquivos em todas as pastas Downloads do usuário em um nível de profundidade de pasta.Linux: SELECT file.path, users.username AS owner, groups.groupname AS groups, datetime(file.btime,'unixepoch') AS created, datetime(file.mtime,'unixepoch') AS last_mod, ROUND((file.size * 10e-7),4) AS size_mb FROM file JOIN users USING (uid) JOIN groups USING (gid) WHERE path LIKE '/home/%/Downloads/%%' ORDER BY last_mod DESC;Windows: SELECT file.path, users.username AS owner, datetime(file.btime,'unixepoch') AS created, datetime(file.mtime,'unixepoch') AS last_mod, ROUND((file.size * 10e-7),4) AS size_mb FROM file JOIN users USING (uid) WHERE path LIKE 'c:\Users\%\Downloads\%%' ORDER BY last_mod DESC;