Integrar o AWS CloudWatch ao Google SecOps

Neste documento, descrevemos como integrar o AWS CloudWatch ao Google Security Operations (Google SecOps).

Casos de uso

Ações ativas: pesquisar em registros, criar grupos/streams de registros, excluir grupos/streams de registros, atualizar políticas de retenção.

Parâmetros de integração

Use os seguintes parâmetros para configurar a integração:

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
ID da chave de acesso da AWS String N/A Sim ID da chave de acesso da AWS a ser usado na integração.
Chave secreta da AWS Senha N/A Sim Chave secreta da AWS para usar na integração.
Região padrão da AWS String N/A Sim Região padrão da AWS a ser usada na integração, por exemplo, us-west-2.

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

Teste a conectividade com o AWS CloudWatch.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:
se for bem-sucedida: "A conexão com o servidor do AWS CloudWatch foi estabelecida usando os parâmetros fornecidos."

A ação deve falhar e interromper a execução de um playbook:
if not successful: "Failed to connect to the AWS CloudWatch server! O erro é {0}".format(exception.stacktrace)

Geral

Listar grupos de registros

Liste os grupos de registros disponíveis no AWS CloudWatch.

Parâmetros

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
Número máximo de grupos a serem retornados Inteiro 50 Não Especifique quantos grupos serão retornados. Padrão: 50.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Resultado do JSON
[
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1611581795766,
        "logGroupName": "CloudTrail/DefaultLogGroup",
        "metricFilterCount": 0,
        "storedBytes": 24529015
    },
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1606993203235,
        "logGroupName": "Example",
        "metricFilterCount": 1,
        "storedBytes": 730
    },
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1611652265055,
        "logGroupName": "aws-cloudtrail-logs",
        "metricFilterCount": 0,
        "storedBytes": 51354815
    }
]
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:
Se os dados estiverem disponíveis (is_success = true): "Successfully returned available log groups in AWS CloudWatch".

Se nenhum dado estiver disponível (is_success = true): "No log groups were found in AWS CloudWatch".

A ação deve falhar e interromper a execução de um playbook:
se houver um erro fatal, como credenciais incorretas, falta de conexão com o servidor, entre outros: "Erro ao executar a ação 'Listar grupos de registros'. Motivo: {0}''.format(error.Stacktrace)

Geral
Tabela do painel de casos

Nome: "Grupos de registros"

Coluna:

Nome

Contagem de filtros de métricas

Bytes armazenados

Horário da criação

Geral

Listar streams de registro

Lista os fluxos de registros disponíveis no AWS CloudWatch.

Parâmetros

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
Grupos de registros CSV N/A Sim Especifique uma lista separada por vírgulas de nomes de grupos para recuperar streams de registros.
Order By: DDL

Nome do stream de registros

Valores possíveis:

Nome do stream de registro

Horário do último evento

Não Especifique como os fluxos de registro devem ser ordenados.
Ordem de classificação DDL

Crescente

Valores possíveis:

Crescente

Decrescente

Não Especifique qual ordem de classificação deve ser usada.
Número máximo de streams a serem retornados Inteiro 50 Não Especifique quantos fluxos serão retornados por grupo de registros.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Resultado do JSON
[{
    "group":"{group name}"
"logStreams": [
        {
            "arn": "arn:aws:logs:us-east-1:log-group:aws-cloudtrail-logs:log-stream:CloudTrail_us-east-1",
            "creationTime": 1611652272827,
            "firstEventTimestamp": 1611652287716,
            "lastEventTimestamp": 1612271538268,
            "lastIngestionTime": 1612271538289,
            "logStreamName": "CloudTrail_us-east-1",
            "storedBytes": 0,
            "uploadSequenceToken": "49039859450784908968417870788122674924958823185025535393"
        }
    ]
}
]
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:
Se houver dados disponíveis para pelo menos um grupo de registros (is_success = true): "Successfully returned available log streams for the following log groups in AWS CloudWatch: {group names}".

Se os dados não estiverem disponíveis para pelo menos um grupo de registros (is_success = true): "A ação não conseguiu retornar os fluxos de registro disponíveis para os seguintes grupos de registros no AWS CloudWatch: {nomes dos grupos}".

Se os dados não estiverem disponíveis para pelo menos um grupo de registros (is_success = false): "Nenhum fluxo de registro foi encontrado para os grupos de registros fornecidos no AWS CloudWatch".

A ação deve falhar e interromper a execução de um playbook:
se houver um erro fatal, como credenciais incorretas, falta de conexão com o servidor, entre outros: "Erro ao executar a ação 'Listar fluxos de registro'. Motivo: {0}''.format(error.Stacktrace)

Geral
Tabela do painel de casos

Nome: "{Group Name}: Log Streams"

Coluna:

Nome

Bytes armazenados

Horário da criação

Carimbo de data/hora do último evento

Geral

Pesquisar evento de registro

Pesquise eventos de registro no AWS CloudWatch.

Parâmetros

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
Grupo de registros String N/A Sim Especifique o nome do grupo de registros em que você quer pesquisar eventos.
Fluxos de registro CSV N/A Não Especifique uma lista separada por vírgulas de fluxos de registro em que você quer pesquisar eventos.
Período DDL

Última hora

Valores possíveis:

Última hora

Últimas 6 horas

Últimas 24 horas

Última semana

Mês anterior

Personalizado

Não Especifique um período para a pesquisa. Se "Personalizado" estiver selecionado, você também precisará definir um "Horário de início".
Horário de início String N/A Não Especifique o horário de início da pesquisa. Este parâmetro é obrigatório se "Personalizado" estiver selecionado para o parâmetro "Período". Formato: ISO 8601
Horário de término String N/A Não Especifique o horário de término da pesquisa. Formato: ISO 8601. Se nada for fornecido e "Personalizado" for selecionado para o parâmetro "Período", esse parâmetro vai usar o horário atual.
Filtro personalizado String N/A Não Especifique o filtro personalizado para a pesquisa. Para mais informações, consulte o portal de documentação.
Número máximo de eventos a serem retornados Inteiro 50 Não Especifique quantos eventos serão retornados. Padrão: 50.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Resultado do JSON
[
        {
            "eventId": "ID",
            "ingestionTime": 1611652287896,
            "logStreamName": "CloudTrail_us-east-1",
            "message": {
                "eventVersion": "1.08",
                "userIdentity": {
                    "type": "AssumedRole",
                    "principalId": "ID",
                    "arn":"arn:aw
s:sts: : ACCOUNT_ID:assumed-role/AWSServiceRoleForAmazonMacie/AmazonMacieSession","accountId":"ACCOUNT_ID","accessKeyId":"KEY_ID","sessionC
ontext":{"sessionIssuer":{"type":"Role","principalId":"ID","arn":"arn:aws:iam: : ACCOUNT_ID:role/aws-service-role/macie.amazonaws.com/AW
SServiceRoleForAmazonMacie","accountId":"ACCOUNT_ID","userName":"AWSServiceRoleForAmazonMacie"},"webIdFederationData":{},"attributes":{"mfaAuthenticated": "false",
                    "creationDate": "2021-01-26T08:53:52Z"
                }
            },
            "invokedBy": "AWS Internal",
            "eventTime": "2021-01-26T08:53:52Z",
            "eventSource": "s3.amazonaws.com",
            "eventName": "GetBucketLogging",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "AWSInternal",
            "userAgent": "AWS Internal",
            "requestParameters": {
                "logging": "",
                "bucketName": "example",
                "Host": "example.s3.amazonaws.com"
            },
            "responseElements": null,
            "additionalEventData": {
                "SignatureVersion": "SigV4",
                "CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
                "bytesTransferredIn": 0,
                "AuthenticationMethod": "AuthHeader",
                "x-amz-id-2": "PFM+6pyK/gCPy95gh8dtstgtXftrpHkL8s=",
                "bytesTransferredOut": 289
            },
            "requestID": "8FA919A428BC82D7",
            "eventID": "7eb5dd44-7021-4945-b9be-27f5b1e0d8d0",
            "readOnly": true,
            "resources": [
                {
                    "accountId": "ACCOUNT_ID",
                    "type": "AWS::S3::Bucket",
                    "ARN": "arn:aws:s3:::example"
                }
            ],
            "eventType": "AwsApiCall",
            "managementEvent": true,
            "eventCategory": "Management",
            "recipientAccountId": "ACCOUNT_ID"
        },
        "timestamp": 1611652287716
    }
]
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:
Se os dados estiverem disponíveis para (is_success = true): "Successfully executed search in AWS CloudWatch".

Se os dados não estiverem disponíveis (is_success = false): "Nenhum dado foi encontrado para a pesquisa fornecida".

A ação deve falhar e interromper a execução de um playbook:
Se houver um erro fatal, como credenciais incorretas, falta de conexão com o servidor, entre outros: "Erro ao executar a ação 'Pesquisar eventos de registro'. Motivo: {0}''.format(error.Stacktrace)

Geral
Tabela do painel de casos

Nome: "Resultados da pesquisa"

Coluna: todas as chaves disponíveis.

Geral

Definir política de retenção

Defina a política de retenção para grupos de registros no AWS CloudWatch.

Parâmetros

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
Grupo de registros String N/A Sim Especifique o nome do grupo de registros para o qual você quer definir a política de retenção.
Dias de retenção DDL

1

Valores possíveis

1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827 e 3653

Sim Especifique por quantos dias os dados devem ser retidos no grupo de registros.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:
Se os dados forem bem-sucedidos: (is_success = true): "Successfully set the retention policy for log group {group} in AWS CloudWatch".

A ação deve falhar e interromper a execução de um playbook:
se houver um erro fatal, como credenciais incorretas, falta de conexão com o servidor, entre outros: "Erro ao executar a ação 'Definir política de retenção'. Motivo: {0}''.format(error.Stacktrace)

Geral

Remover política de retenção

Remova a política de retenção do grupo de registros no AWS CloudWatch.

Parâmetros

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
Grupo de registros String N/A Sim Especifique o nome do grupo de registros de que você quer remover a política de retenção.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:
Se os dados forem bem-sucedidos (is_success = true): "A política de retenção foi removida do grupo de registros {group} no AWS CloudWatch".

A ação deve falhar e interromper a execução de um playbook:
se houver um erro fatal, como credenciais incorretas, falta de conexão com o servidor, entre outros: "Erro ao executar a ação 'Remover política de retenção'. Motivo: {0}''.format(error.Stacktrace)

Geral

Criar grupo de registros

Crie um grupo de registros no AWS CloudWatch.

Parâmetros

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
Nome do grupo de registros String N/A Sim Especifique o nome do novo grupo de registros.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Resultado do JSON
{
"group_name": "GROUP_NAME"
}
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:
Se os dados forem bem-sucedidos: (is_success = true): "Um novo grupo de registros {group} foi criado no AWS CloudWatch".

A ação deve falhar e interromper a execução de um playbook:
se houver um erro fatal, como credenciais incorretas, falta de conexão com o servidor, entre outros: "Erro ao executar a ação 'Criar grupo de registros'. Motivo: {0}''.format(error.Stacktrace)

Geral

Criar stream de registro

Crie um fluxo de registros para o grupo de registros no AWS CloudWatch.

Parâmetros

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
Grupo de registros String N/A Sim Especifique o nome do grupo de registros em que você quer criar um fluxo de registros.
Nome do stream de registro String N/A Sim Especifique o nome do novo fluxo de registros.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Resultado do JSON
{
"log_stream": "STREAM_NAME"
}
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:
Se os dados forem bem-sucedidos (is_success = true): "Um novo fluxo de registros foi criado no grupo de registros {group} no AWS CloudWatch".

A ação deve falhar e interromper a execução de um playbook:
se houver um erro fatal, como credenciais incorretas, falta de conexão com o servidor, entre outros: "Erro ao executar a ação 'Criar fluxo de registros'. Motivo: {0}''.format(error.Stacktrace)

Geral

Excluir grupo de registros

Exclua um grupo de registros no AWS CloudWatch.

Parâmetros

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
Nome do grupo de registros String N/A Sim Especifique o nome do grupo de registros que precisa ser excluído.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:
Se os dados forem bem-sucedidos: (is_success = true): "Successfully deleted log group {group} in AWS CloudWatch".

Se o grupo não existir (is_success=false): "A ação não conseguiu excluir o grupo de registros {group} no AWS CloudWatch. Motivo: o grupo de registros {group} não foi encontrado no AWS CloudWatch."

A ação deve falhar e interromper a execução de um playbook:
se houver um erro fatal, como credenciais incorretas, falta de conexão com o servidor, entre outros: "Erro ao executar a ação 'Excluir grupo de registros'. Motivo: {0}''.format(error.Stacktrace)

Geral

Excluir fluxo de registros

Exclui um fluxo de registros em um grupo de registros no AWS CloudWatch.

Parâmetros

Nome de exibição do parâmetro> Tipo> Valor padrão> É obrigatório> Descrição>
Nome do grupo de registros String N/A Sim Especifique o nome do grupo de registros que contém o fluxo de registros.
Nome do stream de registro String N/A Sim Especifique o nome do fluxo de registros que precisa ser excluído.

Corrida

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script> Opções de valor>
is_success is_success=False
is_success is_success=True
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não deve falhar nem interromper a execução de um playbook:
se os dados forem bem-sucedidos: (is_success = true): "O fluxo de registros {stream} foi excluído do grupo de registros {group} no AWS CloudWatch".

Se o stream não existir (is_success=false): "A ação não conseguiu excluir o stream de registros {stream} do grupo de registros {group} no AWS CloudWatch. Motivo: o fluxo de registros {stream} não foi encontrado no grupo de registros {group} no AWS CloudWatch."

Se o grupo não existir (is_success=false): "A ação não conseguiu excluir o fluxo de registros {stream} do grupo de registros {group} no AWS CloudWatch. Motivo: o grupo de registros {group} não foi encontrado no AWS CloudWatch."

A ação deve falhar e interromper a execução de um playbook:
Se houver um erro fatal, como credenciais incorretas, falta de conexão com o servidor, entre outros: "Erro ao executar a ação 'Excluir fluxo de registros'. Motivo: {0}''.format(error.Stacktrace)

Geral

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.