Integrar o Pub/Sub ao Google SecOps
Este documento fornece orientações sobre como integrar o Pub/Sub ao Google Security Operations (Google SecOps).
Versão da integração: 1.0
Antes de começar
Para usar a integração do Pub/Sub, você precisa do seguinte:
Uma conta de serviço do Google Cloud : você pode usar uma conta de serviço atual ou criar uma.
Para orientações sobre como criar uma conta de serviço, consulte Criar contas de serviço.
Se você usa uma conta de serviço para autenticar no Google Cloud, é possível criar uma chave de conta de serviço em JSON e fornecer o conteúdo do arquivo JSON baixado ao configurar os parâmetros de integração.
Observação:por motivos de segurança, recomendamos usar um endereço de e-mail de identidade da carga de trabalho em vez de uma chave de conta de serviço. Para mais informações sobre as identidades de carga de trabalho, consulte Identidades para cargas de trabalho.
Configure o papel do IAM para seu principal.
O Pub/Sub usa o Identity and Access Management (IAM) para controle de acesso e exige que você conceda ao principal a função
Pub/Sub Viewer
.
Parâmetros de integração
A integração do Pub/Sub exige os seguintes parâmetros:
Parâmetros | Descrição |
---|---|
Workload Identity Email |
Opcional O endereço de e-mail do cliente da sua federação de identidade da carga de trabalho. É possível configurar esse parâmetro ou o Para representar contas de serviço com a federação de identidade da carga de trabalho,
conceda o papel |
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 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 mais informações sobre como usar contas de serviço como um método de autenticação, consulte Visão geral das contas de serviço. |
Quota Project ID |
Opcional O ID do projeto Google Cloud que você usa para
APIs Google Cloud e faturamento. Para usar esse parâmetro, conceda o papel A integração anexa esse valor de parâmetro a todas as solicitações de API. Se você não definir um valor para esse parâmetro, a integração vai recuperar o ID do projeto de cota da sua conta de serviço Google Cloud . |
Project ID |
Opcional O ID do projeto a ser usado na integração. Se você não definir um valor para esse parâmetro, a integração vai recuperar o ID do projeto da sua conta de serviço do Google Cloud . |
Verify SSL |
Obrigatório Se selecionada, a integração verifica se o certificado SSL para conexão com o Pub/Sub é válido. Essa opção é selecionada por padrão. |
Para instruções sobre como configurar uma integração no Google SecOps, consulte Configurar integrações.
Você pode fazer mudanças mais tarde, se necessário. Depois de configurar uma instância de integração, você pode usá-la em playbooks. Para mais informações sobre como configurar e oferecer suporte a várias instâncias, consulte 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 Realizar uma ação manual.
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 de ação
Nenhuma.
Saídas de 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 de mensagens do Pub/Sub para recuperar mensagens do Pub/Sub.
Mapeamento de gravidade JSON
Para mapear a gravidade do alerta, especifique qual campo o Conector de mensagens do Pub/Sub usa para receber o valor da gravidade no parâmetro Severity Mapping JSON
. A resposta do conector pode conter tipos de valores, como integer
, float
e string
.
O conector de mensagens do Pub/Sub 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 – Messages vai exigir mais configuração.
Inicialmente, o valor padrão aparece assim:
{
"Default": 60
}
Se os valores necessários para o mapeamento estiverem localizados 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 "Default"
é obrigatório.
Quando há várias correspondências para o mesmo objeto JSON, o conector de mensagens do Pub/Sub prioriza a primeira chave do 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 de mensagens do Pub/Sub exige 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, ele será definido como o ambiente 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. |
Script Timeout (Seconds) |
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 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 Pub/Sub – Messages, a autenticação com o arquivo JSON da chave da conta de serviço tem prioridade sobre a federação de identidade do workload. |
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 Para representar 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 Google Cloud que você usa para
APIs Google Cloud e faturamento. Para usar esse parâmetro, 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. Ao configurar
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 só processa chaves que contêm o valor de string. Para configurar esse parâmetro, especifique 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 só processa chaves que contêm o valor de string. Se você não fornecer um valor ou usar um modelo inválido, o conector usará um valor substituto no seguinte formato: |
Rule Generator Template |
Obrigatório Um gerador de regras personalizadas. É 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 só processa chaves que contêm o valor de string. Se você não fornecer um valor ou usar um modelo inválido, o conector 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 hora da época Unix, defina o formato 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 hora da é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 se a mensagem é exclusiva. Se você não definir um valor, o conector vai gerar um hash SHA-256 e usá-lo como identificador da mensagem. |
Max Messages To Fetch |
Opcional O número máximo de mensagens a serem processadas em cada iteração do conector. O número máximo é 100. |
Disable Overflow |
Opcional Se selecionado, o conector ignora o mecanismo de estouro do Google SecOps durante a criação de alertas. Essa opçã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 – Messages é 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 de mensagens do Pub/Sub:
{
"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.