Integrar o Pub/Sub ao Google SecOps
Este documento explica como integrar o Pub/Sub ao Google Security Operations.
Casos de uso
A integração do Pub/Sub é compatível com os seguintes casos de uso:
Ingestão automatizada de alertas: recupere continuamente registros de segurança, alertas e telemetria publicados em tópicos do Pub/Sub para ingeri-los no Google SecOps como casos.
Orquestração de segurança centralizada: consolide o roteamento de ocorrências de segurança pelo Pub/Sub de sistemas de nuvem e de terceiros para acionar playbooks de resposta automatizados.
Antes de começar
Antes de configurar a integração do Pub/Sub no Google SecOps, conclua as seguintes etapas de pré-requisito:
Conceda os papéis necessários do Identity and Access Management à sua conta de serviço.
Escolha e configure um dos seguintes métodos de autenticação:
Opção 1: Identidade da carga de trabalho (recomendado): esse método usa tokens de curta duração com a identidade temporária de conta de serviço.
Opção 2: chave JSON da conta de serviço: esse método depende de um arquivo de chave secreta estático e de longa duração.
Criar uma conta de serviço
No console do Google Cloud , acesse IAM e administrador > Contas de serviço.
Clique em addCriar conta de serviço.
Dê um nome e uma descrição e clique em Concluído. Anote o endereço de e-mail da conta de serviço.
Conceder papéis do IAM
Ao conceder permissões, a integração pode visualizar e extrair mensagens das suas assinaturas. Para atribuir o papel padrão, siga estas etapas:
No Google Cloud console, acesse o IAM
Localize sua conta de serviço e clique em Editar principal (editar).
Clique em Adicionar outro papel e selecione Leitor do Pub/Sub (
roles/pubsub.viewer).Clique em Salvar.
Configurar credenciais da Identidade da carga de trabalho
A Identidade da carga de trabalho é a abordagem recomendada porque usa tokens de acesso de curta duração com a identidade temporária de conta de serviço.
Identificar a identidade exclusiva da instância
Para estabelecer uma conexão, é necessário conceder à instância do Google SecOps permissão para personificar sua conta de serviço.
No Google SecOps, acesse Hub de conteúdo > Integrações de resposta.
Selecione a integração do Pub/Sub e insira o e-mail da sua conta de serviço em E-mail da Identidade da carga de trabalho.
Clique em Salvar > Testar. O teste deve falhar.
Clique em close_small ao lado do botão Testar e localize o e-mail de identidade que começa com
gke-init-python@...ousoar-python@....Copie esse endereço de e-mail exclusivo.
Autorize a identidade da instância em Google Cloud
No console do Google Cloud , acesse IAM e administrador > Contas de serviço.
Selecione a conta de serviço de destino e acesse Permissões > Conceder acesso.
Cole o endereço de e-mail exclusivo em Novos participantes e atribua o papel Criador de token da conta de serviço (
roles/iam.serviceAccountTokenCreator).
Conceder acesso ao projeto de cota
A autenticação com uma Identidade da carga de trabalho requer um Quota Project ID para rastrear
o uso e o faturamento da API.
No console do Google Cloud , acesse o IAM do projeto usado como projeto de cota.
Encontre sua conta de serviço e clique em Editar principal (editar).
Clique em Adicionar outro papel e selecione Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer).Clique em Salvar.
Configurar uma chave JSON
Os arquivos de chave secreta estáticos e de longa duração exigem rotação manual. Use esse método apenas se a autenticação da Identidade da carga de trabalho não estiver disponível.
No console do Google Cloud , acesse IAM e administrador > Contas de serviço e selecione sua conta de serviço.
Acesse a guia Chaves e clique em Adicionar chave > Criar nova chave.
Selecione JSON e clique em Criar. O navegador faz o download do arquivo JSON para seu computador.
Parâmetros de integração
A integração do Pub/Sub requer os seguintes parâmetros:
| Parâmetro | Descrição |
|---|---|
Workload Identity Email |
Opcional. O endereço de e-mail do cliente da sua conta de serviço. Configure esse parâmetro apenas se você estiver autenticando usando uma Identidade da carga de trabalho. Se configurado, você também precisa fornecer um
|
Service Account JSON File Content |
Opcional. O conteúdo completo do arquivo JSON da chave da conta de serviço. Configure esse parâmetro para autenticação de chave de conta de serviço. |
Quota Project ID |
Opcional. O ID do projeto usado para uso e faturamento da API. Esse parâmetro é obrigatório ao usar a autenticação da Identidade da carga de trabalho. Se nenhum valor for fornecido, a integração vai recuperar o ID das credenciais da conta de serviço. |
Project ID |
Opcional. O ID do projeto de destino no Pub/Sub. Se nenhum valor for fornecido, a integração vai recuperar o ID das credenciais da conta de serviço. |
Verify SSL |
Obrigatório. Valida o certificado SSL para a conexão com o servidor. Ativado por padrão. |
Para instruções sobre como configurar uma integração no Google SecOps, consulte Configurar integrações.
Se necessário, você pode fazer mudanças depois. Depois de configurar uma instância de integração, é possível usá-la em playbooks. Para mais informações sobre como configurar e oferecer suporte a várias instâncias, consulte Como oferecer suporte a várias instâncias.
Ações
Para mais informações sobre ações, consulte Responder a ações pendentes na sua mesa de trabalho e Executar uma ação manual no seu caso.
Ping
Use a ação "Ping" para testar a conectividade com o Pub/Sub.
Essa ação não é executada em entidades do Google SecOps.
Entradas da ação
Nenhuma.
Saídas da ação
A ação Ping fornece as seguintes saídas:
| Tipo de saída da ação | Disponibilidade |
|---|---|
| Anexo do Painel de Casos | Indisponível |
| Link do Painel de Casos | Indisponível |
| Tabela do painel de casos | Indisponível |
| Tabela de enriquecimento | Indisponível |
| Resultado JSON | Indisponível |
| Mensagens de saída | Disponível |
| Resultado do script | Disponível |
Mensagens de saída
A ação Ping pode retornar as seguintes mensagens de saída:
| Mensagem de resposta | Descrição da mensagem |
|---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
A ação foi concluída. |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
A ação falhou. Verifique a conexão com o servidor, os parâmetros de entrada ou as credenciais. |
Resultado do script
A tabela a seguir lista o valor da saída do resultado do script ao usar a ação Ping:
| Nome do resultado do script | Valor |
|---|---|
is_success |
True ou False |
Conectores
Para instruções detalhadas sobre como configurar um conector no Google SecOps, consulte Ingerir seus dados (conectores).
Pub/Sub: conector de mensagens
Na plataforma Google SecOps, o conector do Pub/Sub – Mensagens é chamado de conector do PubSub – Mensagens.
Use o conector do Pub/Sub – Mensagens para recuperar mensagens do Pub/Sub.
Mapeamento de gravidade do JSON
Para mapear a gravidade do alerta, especifique qual campo o
Pub/Sub – Conector de mensagens usa para
receber o valor da gravidade no parâmetro Severity Mapping JSON. A resposta do conector pode conter tipos de valor, como integer, float e string.
O conector do Pub/Sub – Mensagens lê os valores integer e float
e os mapeia de acordo com as configurações do Google SecOps. A tabela a seguir mostra o mapeamento dos valores de integer para a gravidade no Google SecOps:
| Número inteiro | Gravidade mapeada |
|---|---|
100 |
Critical |
De 80 a 100 |
High |
De 60 a 80 |
Medium |
De 40 a 60 |
Low |
Menos de 40 |
Informational |
Se a resposta contiver o valor string, o conector do Pub/Sub – Mensagens vai exigir uma configuração adicional.
Inicialmente, o valor padrão aparece assim:
{
"Default": 60
}
Se os valores necessários para o mapeamento estiverem na chave JSON event_severity, eles poderão ser os seguintes:
"Malicious""Benign""Unknown"
Para analisar os valores de chave JSON event_severity e garantir que o objeto JSON
tenha um formato correto, configure o parâmetro Severity Mapping JSON da seguinte
maneira:
{
"event_severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
O valor de "Default" é obrigatório.
Quando há várias correspondências para o mesmo objeto JSON, o conector do Pub/Sub – Mensagens prioriza a primeira chave de objeto JSON.
Para trabalhar com campos que contêm valores integer ou float, configure a chave
e uma string vazia no parâmetro Severity Mapping JSON:
{
"Default":"60",
"integer_field": "",
"float_field": ""
}
Entradas do conector
O conector do Pub/Sub – Mensagens requer os seguintes parâmetros:
| Parâmetro | Descrição |
|---|---|
Product Field Name |
Obrigatório O nome do campo em que o nome do produto é armazenado. O valor padrão é |
Event Field Name |
Obrigatório O nome do campo usado para determinar o nome do evento (subtipo). O valor padrão é |
Environment Field Name |
Opcional
O nome do campo em que o nome do ambiente é armazenado. Se o campo de ambiente não for encontrado, o ambiente será definido como o padrão. O valor padrão é |
Environment Regex Pattern |
Opcional
Um padrão de expressão regular a ser executado no valor encontrado no campo Use o valor padrão Se o padrão de expressão regular for nulo ou vazio, ou se o valor do ambiente for nulo, o resultado final será o ambiente padrão. |
PythonProcessTimeout |
Obrigatório O limite de tempo limite em segundos para o processo do Python que executa o script atual. O valor padrão é |
Service Account JSON File Content |
Opcional O conteúdo do arquivo JSON da chave da conta de serviço. É possível configurar esse parâmetro ou o parâmetro Para configurar esse parâmetro, forneça o conteúdo completo do arquivo JSON da chave da conta de serviço que você baixou ao criar uma conta de serviço. Para o conector do Pub/Sub – Mensagens, a autenticação com o arquivo JSON da chave da conta de serviço tem prioridade sobre a federação de identidade da carga de trabalho. |
Workload Identity Email |
Opcional O endereço de e-mail do cliente da sua conta de serviço. É possível configurar esse parâmetro ou o parâmetro Para personificar contas de serviço com
a federação de identidade da carga de trabalho,
conceda o papel |
Project ID |
Opcional O ID do projeto a ser usado no conector. |
Quota Project ID |
Opcional O ID do projeto do Google Cloud que você usa para
as APIs e o faturamento do Google Cloud . Esse parâmetro exige que você conceda
o papel A integração anexa esse valor de parâmetro a todas as solicitações de API. |
Subscription ID |
Obrigatório O ID da assinatura do Pub/Sub. |
Case Name Template |
Opcional Um nome de caso personalizado. Quando você configura
esse parâmetro, o conector adiciona uma nova chave chamada
É possível fornecer marcadores de posição no seguinte formato:
Exemplo: Para marcadores de posição, o conector usa o primeiro evento do Google SecOps. O conector processa apenas chaves que contêm o valor da string. Para configurar esse parâmetro, especifique os campos de evento sem prefixos. |
Alert Name Template |
Obrigatório Um nome de alerta personalizado. É possível fornecer marcadores de posição no seguinte formato:
Exemplo: Para marcadores de posição, o conector usa o
primeiro evento do Google SecOps. O conector processa apenas
chaves que contêm o valor da string. Se você não fornecer nenhum valor ou usar um
modelo inválido, o conector vai usar um valor substituto no seguinte
formato: |
Rule Generator Template |
Obrigatório Um gerador de regras personalizado. É possível fornecer marcadores de posição no seguinte formato:
Exemplo: Para marcadores de posição, o conector usa o
primeiro evento do Google SecOps. O conector processa apenas
chaves que contêm o valor da string. Se você não fornecer nenhum valor ou usar um
modelo inválido, o conector vai usar um valor substituto no seguinte
formato: |
Timestamp Field |
Obrigatório O nome do campo para definir o carimbo de data/hora do alerta do Google SecOps. Se o carimbo de data/hora não
usar o formato de horário da época Unix, defina o formato do carimbo de data/hora no
parâmetro O valor padrão é |
Timestamp Format |
Opcional O formato do carimbo de data/hora da mensagem. O conector precisa do carimbo de data/hora para processar a mensagem corretamente. Se o carimbo de data/hora não usar o formato de época Unix e você não configurar um formato de carimbo de data/hora, o conector vai falhar. O valor padrão é |
Severity Mapping JSON |
Obrigatório O objeto JSON que define como o conector extrai o nível de gravidade da mensagem. O valor padrão é o seguinte: { "Default": "60" } Para mais informações sobre o mapeamento de gravidade, consulte Mapeamento de gravidade JSON. |
Unique ID Field |
Opcional O nome do campo para confirmar que a mensagem é
exclusiva. É possível usar a palavra-chave reservada |
Max Messages To Fetch |
Obrigatório O número máximo de mensagens a serem processadas para cada iteração do conector. O valor padrão é |
Disable Overflow |
Opcional Se selecionado, o conector ignora o mecanismo de estouro do Google SecOps durante a criação do alerta. Essa configuração é selecionada por padrão. |
Verify SSL |
Obrigatório Se selecionada, a integração verifica se o certificado SSL para conexão com o Pub/Sub é válido. Selecionada por padrão. |
Proxy Server Address |
Opcional O endereço do servidor proxy a ser usado. |
Proxy Username |
Opcional O nome de usuário do proxy para autenticação. |
Proxy Password |
Opcional A senha do proxy para autenticação. |
Regras do conector
O conector do Pub/Sub – Mensagens é compatível com proxies.
Eventos do conector
O exemplo a seguir mostra a saída JSON de um evento do Google SecOps gerado pelo conector do Pub/Sub – Mensagens:
{
"notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
"parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
"resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
"state": "ACTIVE",
"category": "OPEN_NETBIOS_PORT",
"externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"sourceProperties": {
"Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
"Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
"ScannerName": "FIREWALL_SCANNER",
"ResourcePath": [
"projects/PROJECT_ID/",
"folders/FOLDER_ID/",
"folders/FOLDER_ID/",
"organizations/ORGANIZATION_ID/"
],
"ExposedService": "NetBIOS",
"OpenPorts": {
"TCP": [
137.0,
138.0,
139.0
],
"UDP": [
137.0,
138.0,
139.0
]
},
"compliance_standards": {
"iso": [
{
"ids": [
"A.13.1.1"
]
}
],
"pci": [
{
"ids": [
"1.2.1"
]
}
],
"nist": [
{
"ids": [
"SC-7"
]
}
]
},
"ReactivationCount": 4.0
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
"marks": {
"peter": "e2e1"
}
},
"eventTime": "2024-08-30T14:44:37.973090Z",
"createTime": "2024-06-24T07:08:54.777Z",
"propertyDataTypes": {
"ResourcePath": {
"listValues": {
"propertyDataTypes": [
{
"primitiveDataType": "STRING"
}
]
}
},
"ReactivationCount": {
"primitiveDataType": "NUMBER"
},
"Explanation": {
"primitiveDataType": "STRING"
},
"ExposedService": {
"primitiveDataType": "STRING"
},
"ScannerName": {
"primitiveDataType": "STRING"
}
}
}
}
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.