Um playbook é um fluxo lógico ou script predefinido que identifica, classifica, avalia e responde a eventos de segurança. Ele descreve as etapas para executar operações específicas, determinar a existência de uma ameaça de segurança e definir a resposta e mitigação adequadas. É possível personalizar e configurar playbooks para tipos de eventos de segurança e níveis de severidade. A orquestração de resposta utiliza playbooks para tornar sua resposta de segurança mais eficiente e consistente.
Conceitos principais
Tipos de playbook
O Security Center fornece dois tipos de playbooks:
Predefined Playbook: O Security Center inclui playbooks integrados baseados em cenários e soluções comuns de ameaças de segurança. Use esses playbooks diretamente sem necessidade de configuração. Também é possível copiar um playbook predefinido para criar um personalizado e modificá-lo conforme suas necessidades, o que simplifica a criação de playbooks personalizados.
Custom Playbook: Para cenários de ameaças de segurança complexos e altamente personalizados, o Security Center oferece playbooks personalizados flexíveis. Utilize o editor de fluxo para configurar livremente vários componentes e implementar facilmente soluções automatizadas de resposta de segurança.
Parâmetros do playbook (parâmetros de entrada e saída)
Os parâmetros de entrada definem as condições que acionam um playbook. A seleção de diferentes condições atualiza os exemplos de parâmetros de depuração correspondentes.
-
Parâmetros de saída: São os campos gerados quando um playbook é executado. Nós subsequentes podem utilizar esses campos. Também é possível usar o setOutput action para permitir que outros playbooks façam referência a eles. A sintaxe é ${event.parameter_path}.
NotaAlém dos parâmetros de saída personalizados, o sistema fornece parâmetros padrão. Para mais informações, consulte System parameters in playbooks.
Fluxo de trabalho do playbook personalizado
Editor de fluxo
Utilize o editor visual de fluxo para criar, modificar, depurar e publicar playbooks. A seguir, descrevemos as principais áreas do editor de fluxo.
A interface do editor de fluxo possui cinco áreas principais: a Barra de menus (Área 1) na parte superior, o painel Flow nodes (Área 2) no canto superior esquerdo, o painel Component actions and playbooks (Área 3) no canto inferior esquerdo, a Canvas area (Área 4) no centro e a Debugging area (Área 5) na parte inferior.
|
Número |
Descrição |
|
1-Menu bar |
|
|
2-Flow nodes |
Estes são componentes fundamentais necessários para cada fluxo, independentes de sistemas externos. Cada fluxo deve ter um nó inicial e pode ter múltiplos nós finais. Para mais informações, consulte System components. |
|
3-Component actions and playbooks |
|
|
4-Canvas area |
A área da tela é o espaço de trabalho para construir seu fluxo. Arraste componentes para a tela e conecte-os com base em suas relações lógicas.
|
|
5-Debugging area |
Clique em Debug ou no ícone
|
Configurar um playbook personalizado
Etapa 1: Criar informações básicas do playbook
Faça login no console do Security Center.
No painel de navegação à esquerda, escolha . No canto superior esquerdo do console, selecione a região onde seus ativos estão localizados: Chinese Mainland ou Outside Chinese Mainland.
Na aba Custom Playbook, clique em Create Playbook.
No painel Create Playbook, insira um Playbook Name e uma Playbook Description, e clique em OK.
Também é possível acessar a aba Predefined Playbook, encontrar um playbook adequado e clicar em Copy na coluna Actions para copiar o playbook predefinido como um novo playbook personalizado.
Etapa 2: Configurar o fluxo do playbook
Após criar o playbook, você é direcionado automaticamente para sua página de configuração. Também é possível ir à lista de playbooks personalizados e clicar em Edit na coluna Actions para acessar a página de configuração.
-
Configurar parâmetros de entrada e saída do playbook
-
Na página Playbook Editing, clique em Settings no canto superior direito. No painel de configuração, clique em Input & Output Settings.
NotaCada fluxo deve ter um nó inicial e pode ter um ou mais nós finais.
No painel Input & Output Settings, configure os parâmetros de entrada e saída do playbook. Para mais informações, consulte Playbook parameters (input and output parameters).
-
-
Orquestrar o fluxo de resposta
Para orquestrar o fluxo, arraste componentes para a tela e conecte-os. Este tópico usa o componente DataFormat como exemplo. Para obter informações sobre como configurar os parâmetros de outros componentes, consulte Flow component description.
ImportanteO nó inicial é chamado 'event'. Portanto, não nomeie nenhum outro componente como 'event'.
Adicione e conecte múltiplos componentes conforme necessário.
-
Selecionar uma ação de componente
Na seção Basic components à esquerda, selecione o componente DataFormat. Escolha uma ação, como
joindataouconvertToJSON, e arraste-a para a tela. -
Configurar parâmetros do componente
Para configurar os parâmetros de um componente, clique nele na tela. Alternativamente, na página de configuração Basic Information, na seção Action Configuration, clique em
para acessar a página de configuração de parâmetros. Para mais informações sobre configurações de parâmetros, consulte DataFormat component.Insira constantes, parâmetros variáveis, parâmetros de sistema e expressões. Para mais informações, consulte Component parameters and node execution flow.
-
Também é possível configurar parâmetros manualmente. Na caixa de entrada de um nó, selecione um parâmetro na lista suspensa para gerar a sintaxe correspondente.
Por exemplo, a expressão variável para o parâmetro de saída hackerIP é
${InputCheck.datalist.*.records.*hackerIP}, onde InputCheck é o nome do nó upstream. Na lista suspensa do nó, selecione nós upstream como InputCheck, dataSetFilter e SiemEventFormat.
-
Após configurar o componente, clique em Save na barra de menu superior esquerda.
AvisoSe você sair sem salvar, as informações de fluxo editadas serão perdidas.
Etapa 3: Depurar o fluxo
Após construir o playbook, depure-o para garantir que ele execute conforme o esperado.
-
Definir um breakpoint (Opcional):
-
Descrição: Para verificar uma etapa específica em um fluxo complexo, defina um breakpoint em um componente. Durante a depuração, o fluxo executa até o ponto upstream do breakpoint e pausa. Isso permite verificar resultados intermediários.
ImportanteSe o fluxo tiver múltiplas ramificações, o sistema depura apenas a ramificação onde o breakpoint está definido.
Se você definir múltiplos breakpoints na mesma ramificação, apenas o último breakpoint terá efeito.
Procedimento: Clique no ícone
em um nó para definir um breakpoint.
-
-
Iniciar depuração
-
Clique no ícone de depuração
no canto superior esquerdo. No painel Debug Parameters, clique em Debug.NotaOs parâmetros de depuração variam com base nos tipos de parâmetros de entrada configurados para o playbook.
-
Carregar parâmetros de amostra:
Clique em Example.
Na página View Sample Input, clique em Load Sample.
-
Modificar parâmetros: Modifique os parâmetros conforme necessário e clique em OK.
NotaPara facilitar a edição, o sistema fornece um Visual Mode intuitivo.
-
-
Visualizar o resultado da depuração
Clique no ícone
em um nó ou clique em Run Logs na área de depuração para visualizar os detalhes de execução do nó, incluindo entrada, saída e status. A tabela a seguir descreve alguns dos parâmetros de saída.Parâmetro
Descrição
datalist
Uma prévia dos dados resultantes.
ImportanteNo máximo três entradas são exibidas na prévia. Para visualizar todos os dados, acesse a aba Complete Output Result.
total_data_successful
O número de itens de dados processados com sucesso.
total_data
O número total de itens de dados processados.
total_exe_successful
O número de vezes que a ação atual foi executada com sucesso.
total_exe
O número total de vezes que a ação atual foi executada.
total_data_with_dup
O número de itens de dados únicos processados com sucesso.
Etapa 4: Salvar e publicar
Depois que o playbook passar pela depuração, clique em Publish na barra de menu superior esquerda para publicar o playbook.
Usar um playbook
Somente playbooks publicados podem ser usados para regras de resposta automática e tratamento de eventos de segurança.
Após o acionamento de um playbook, visualize a política de resposta e a tarefa geradas no Response Center, ou view the execution records na página de detalhes do playbook.
Vincular a uma regra de resposta automática: Automatiza respostas para alertas específicos. Para mais informações, consulte automatic response rules.
Executar manualmente durante o tratamento de eventos: Para eventos de segurança complexos que exigem análise manual, acione um playbook manualmente no centro de tratamento de eventos para auxiliar nas operações de resposta. Para mais informações, consulte a seção Run Playbook em Evaluate and handle Agentic SOC security events.
Executar diretamente: Na página Response Rules, acesse a aba Predefined Playbook ou Custom Playbook, localize o playbook desejado e clique em Run na coluna Actions para executar o playbook uma vez.
Outras operações
Reversão de playbook
Para restaurar um playbook publicado para uma versão anterior, faça a reversão. Siga estas etapas:
Na aba Custom Playbook, localize o playbook que deseja reverter. Na coluna Actions, clique em Details. Na aba Basic Information, visualize o histórico de versões do playbook na seção Publish History.
(Opcional) Teste a versão: Selecione a versão para a qual deseja reverter e clique em View na coluna Actions para abrir a aba do playbook. Na área Input Parameters (Run), teste a versão selecionada.
-
Selecione a versão para a qual deseja reverter e clique em Roll Back to Edit ou Roll Back and Publish na coluna Actions.
Roll Back and Publish: Substitui o rascunho atual no editor pela versão selecionada e a publica.
Roll Back to Edit: Substitui o rascunho atual no editor pela versão selecionada.
A reversão para uma versão publicada pode sobrescrever seu rascunho salvo. Antes de reverter, revise cuidadosamente as diferenças de fluxo entre as versões.
Importação de playbook
Somente arquivos JSON podem ser importados.
Na barra de menu do editor de fluxo, clique em More e selecione Import JSON.
Na página de importação, carregue o arquivo JSON e clique em OK.
Registros de execução de playbook
Na lista de playbooks, clique no ID de um playbook ou em Details na coluna Actions para abrir sua página de detalhes. Os registros básicos de execução estão disponíveis na aba Execution History.
Ao usar um playbook para tratar um evento ou alerta de segurança, o sistema gera automaticamente um registro de execução correspondente.
Renomear um playbook
Na lista de playbooks, clique no ID de um playbook ou em Details na coluna Actions para abrir sua página de detalhes. Na aba Basic Information, clique em Edit ao lado do nome do playbook.
Não é possível renomear um playbook predefinido.
Os nomes dos playbooks devem ser únicos.
Códigos de erro comuns de execução e depuração de playbook
Os códigos de erro dividem-se em duas categorias: erros de orquestração de playbook e erros de execução de componente.
Erros de orquestração de playbook
|
Mensagem de erro |
Descrição |
Resolução |
|
The filter condition for node [%s] is invalid. It must include data from the datalist of node [%s]. |
A condição de filtro para o nó de filtro é inválida. Ela deve referenciar dados do nó que está sendo filtrado. |
Configure a condição de filtro para incluir variáveis de dados do nó que você está filtrando. |
|
Start node has no downstream configuration. |
Nenhum nó downstream está definido para o nó inicial. |
Defina um nó downstream para o nó inicial. |
|
The node [nodeName] has no downstream nodes defined. |
Nenhum nó downstream está definido para um nó regular. |
Defina um nó downstream para o nó regular. |
|
The resource in node [node] does not exist. |
Uma instância de recurso está configurada, mas não existe. |
Selecione uma instância de recurso existente. |
|
The resource in node [node] is required but not configured. |
Nenhuma instância de recurso está configurada. |
Selecione e configure uma instância de recurso. |
|
Multiple nodes have the same name [nodeName]. |
Existem nomes de nós duplicados. |
Localize os nomes de nós duplicados e renomeie-os para tornar cada nome único. |
|
The path [path] defined in node [node1] is invalid because the child flow supports only the ${<subTask>.curLoop} and ${<subTask>.curIndex} formats. |
Em um fluxo filho, uma variável é referenciada em um formato incorreto. Apenas os formatos ${<subTask>.curLoop} e ${<subTask>.curIndex} são suportados. |
Verifique as definições de variáveis para parâmetros no fluxo filho e corrija quaisquer definições inválidas. |
|
The path [node2.path] defined in node [node1] is invalid because node [node2] does not exist. |
Uma variável de parâmetro referencia um nó que não existe. |
O nó referenciado não existe ou foi excluído. Reconfigure a variável ou adicione o nó ausente. |
|
The path [node2.path] defined in node [node1] is invalid because node [node2] is not an upstream node of the current node. |
Uma variável de parâmetro referencia um nó que não é um nó upstream do nó atual. |
Referencie variáveis apenas de nós upstream. |
Erros de execução de componente
|
Código de erro (errCode) |
Mensagem de erro (errMsg) |
Solução de problemas |
|
sophon.Internal.Error |
Ocorreu um erro interno do sistema. |
Verifique os parâmetros ou a configuração do recurso. Para detalhes, visualize a mensagem de erro ou entre em contato com o suporte técnico. |
|
component.Internal.ParamError |
Um parâmetro do componente é inválido. |
Verifique se os parâmetros do componente estão configurados corretamente. |
|
component.Abnormal.InvokeError |
Falha na execução do componente. |
Ocorreu um erro interno do componente. Visualize a mensagem de erro para detalhes ou entre em contato com o suporte técnico. |
|
filter.Abnormal.Fail |
Os dados não atendem à condição de filtro. |
Verifique se a condição de filtro está configurada corretamente. |
|
securityGroup.Internal.HostIsOutside |
Hosts fora da nuvem não podem usar grupos de segurança para bloquear endereços IP. |
Verifique se o host alvo não é um host fora da nuvem. |
|
securityGroup.Internal.NumberExceedLimit |
O número de grupos de segurança ou regras de grupo de segurança excede o limite. |
Verifique se o número de grupos de segurança associados ou o número de regras por grupo de segurança excede o limite. |
|
sts_openapi.Internal.ParamError |
ParamError: Os parâmetros da sua solicitação são inválidos. |
Verifique se os parâmetros de entrada do componente estão corretos. |
|
sts_openapi.Internal.WafRuleError |
VerifyRuleCountExceed: O número de regras excede o limite. |
Reduza o número de regras personalizadas do WAF. |
|
sts_openapi.Internal.DefenseTemplateNotExist |
Defense.Control.DefenseTemplateNotExist: O modelo do WAF não existe. |
Verifique se o modelo do WAF não foi excluído. |
|
sts_openapi.Internal.DefenseTemplateBindUnbindResourceInvalid |
Defense.Control.DefenseTemplateBindUnbindResourceInvalid: O recurso a ser vinculado ao modelo não está disponível. |
Verifique se o recurso está disponível. |
|
sts_openapi.Internal.DefenseResourceRelationExist |
Defense.Control.DefenseResourceRelationExist: O recurso a ser vinculado ao modelo já está vinculado a outro modelo. |
Verifique se o recurso ainda não está vinculado a outro modelo. |
|
sts_openapi.Info.DefenseSceneNotSupported |
Defense.Control.DefenseSceneNotSupported: Este cenário de proteção não é suportado. |
Atualize sua instância do WAF para uma versão que suporte este cenário de proteção. |
|
sts_openapi.Internal.ErrorAddressGroupExist |
ErrorAddressGroupExist: O grupo de endereços já existe. |
Use um nome exclusivo para o grupo de endereços do Cloud Firewall. |
|
sts_openapi.Internal.PermissionError |
NoPermission: O chamador não tem permissão. |
Obtenha as permissões necessárias para modificar o recurso. |
|
sts_openapi.Internal.CFWRuleError |
O número de ACLs ou ACLs expandidas excede o limite. |
Reduza o número de regras do Cloud Firewall. |
|
sts_openapi.Internal.InvalidSecurityGroupId |
InvalidSecurityGroupId.NotFound: O SecurityGroupId especificado não existe. |
Verifique se o grupo de segurança especificado existe. |
|
sts_openapi.Internal.ErrorParametersGroupAddress |
ErrorParametersGroupAddress: O endereço IP no grupo de endereços é inválido. |
Verifique se os endereços IP no grupo de endereços são válidos. |
|
sts_openapi.Internal.notBuyUser |
not buy user: Você não adquiriu este produto. |
Adquira uma assinatura do Cloud Firewall. |
|
sts_openapi.Internal.Throttling |
A mensagem de erro contém a palavra-chave "throttling" ou "Throttling". |
Reduza a frequência de chamadas de API para evitar limitação. |
|
python.Info.aegis2 |
O processo não existe. |
Verifique se o processo especificado existe. |
|
python.Internal.aegis3 |
O PID e o caminho do processo não correspondem. |
Garanta que o PID do processo e seu caminho estejam corretos. |
|
python.Internal.aegis4 |
Permissão negada para o processo. |
Garanta que você tenha as permissões necessárias para gerenciar o processo. |
|
python.Info.aegis5 |
O arquivo não existe. |
Verifique se o arquivo especificado existe. |
|
python.Internal.aegis6 |
Os valores de hash MD5 do arquivo não correspondem. |
Verifique se o hash MD5 fornecido corresponde ao hash MD5 real do arquivo. |
|
python.Internal.aegis7 |
Permissão negada para o arquivo. |
Garanta que você tenha as permissões necessárias para manipular o arquivo. |
|
python.Internal.aegis8 |
O arquivo alvo existe e seu hash MD5 não corresponde. |
O arquivo alvo existe e seu hash MD5 não corresponde. |
|
python.Internal.aegis9 |
O arquivo de backup não existe. |
O arquivo de backup para o arquivo alvo está ausente. |
|
python.Internal.aegis10 |
Nenhum registro de quarentena foi encontrado. |
Verifique se existe um registro de quarentena para o arquivo especificado. |
|
python.Internal.aegis11 |
Você não pode encerrar ou colocar o processo AliYunDun em quarentena. |
Este é um processo de sistema protegido e não pode ser encerrado ou colocado em quarentena. |
|
python.Internal.aegis91 |
As informações do host não existem. |
As informações do host não existem. |
|
python.External.Fail |
Ocorreu um erro de script Python. |
Verifique a mensagem de erro para detalhes sobre o erro de script ou entre em contato com o suporte técnico. |
|
python.External.Data |
Formato de entrada inválido para o componente Python. |
Corrija o formato de entrada do componente Python. Para detalhes, visualize a mensagem de erro ou entre em contato com o suporte técnico. |