Integrar o AWS S3 ao Google SecOps
Neste documento, descrevemos como integrar o AWS S3 ao Google Security Operations.
Casos de uso
- Gerenciar buckets
- Fazer o download de arquivos de buckets
- Enviar arquivos para os buckets
Antes de começar
Antes de configurar a integração do AWS S3 no Google SecOps, verifique se o ambiente de rede e as credenciais da AWS atendem a todos os pré-requisitos operacionais.
Para preparar o ambiente para integração, conclua o seguinte:
Verifique a linha de visão da rede entre o Google SecOps e os endpoints de serviço regionais do AWS S3.
Consiga credenciais de API programática da AWS (um ID de chave de acesso e uma chave de acesso secreta) com as permissões do IAM adequadas.
Configure e teste a instância de integração no Google SecOps.
Requisitos de rede
O Google SecOps se comunica diretamente com o serviço AWS S3 usando
APIs REST HTTPS e o SDK do Python da AWS (boto3).
Verifique se o ambiente de rede atende às seguintes regras de conectividade:
Acesso HTTPS de saída: ative a comunicação HTTPS de saída da sua instância do Google SecOps ou do agente remoto para o endpoint regional do AWS S3 (
s3.<region>.amazonaws.comous3.amazonaws.com) pela porta443/TCP.Para mais informações, consulte Endpoints de serviço da AWS na documentação da AWS.
Configuração de proxy: se a organização rotear o tráfego de saída por um proxy HTTP/HTTPS, configure as variáveis de proxy de ambiente padrão (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY) no servidor do Google SecOps ou no host do agente remoto.
Autenticação e credenciais
A integração do AWS S3 requer credenciais de API programáticas para autenticar solicitações usando o AWS Signature versão 4.
Verifique se o ambiente da AWS atende aos seguintes requisitos de autenticação:
Credenciais programáticas: consiga um ID de chave de acesso da AWS e uma chave secreta da AWS válidos associados a um usuário ou papel do IAM da AWS.
Para informações sobre como criar identidades do IAM e gerar credenciais, consulte Como gerenciar chaves de acesso para usuários do IAM e Identidades do IAM na documentação da AWS.
Privilégio mínimo: restrinja as permissões apenas às ações e aos recursos de bucket necessários para seus fluxos de trabalho automatizados e alterne as credenciais periodicamente.
Para detalhes sobre as recomendações de segurança, consulte Práticas recomendadas de segurança no IAM na documentação da AWS.
Configurar permissões de ação
Conceda à identidade de autenticação do AWS IAM as permissões específicas necessárias para as ações que os playbooks do Google SecOps executam.
Consulte as permissões mínimas para ações do AWS S3 na tabela a seguir:
| Nome da ação | Permissão do IAM da AWS obrigatória
(ActionName:Permission) |
Permissão de pré-requisito | Descrição / Escopo do recurso |
|---|---|---|---|
| Fazer o download do arquivo de um bucket | s3:GetObject |
s3:ListAllMyBuckets |
Faz o download de um objeto de um bucket do S3. Recurso:
arn:aws:s3:::<bucket-name>/*. |
| Get Bucket Policy | s3:GetBucketPolicy |
s3:ListAllMyBuckets |
Recupera a política de acesso do bucket. Recurso:
arn:aws:s3:::<bucket-name>. |
| Listar objetos do bucket | s3:ListBucket |
s3:ListAllMyBuckets |
Lista objetos em um bucket do S3. Recurso:
arn:aws:s3:::<bucket-name>. |
| Listar buckets | s3:ListAllMyBuckets |
— | Lista todos os buckets do S3 que pertencem à conta. Recurso: *. |
| Ping | s3:ListAllMyBuckets |
— | Valida a conectividade da integração. Recurso: *. |
| Definir política de bucket | s3:PutBucketPolicy |
s3:ListAllMyBuckets |
Define ou modifica uma política de bucket do S3. Recurso:
arn:aws:s3:::<bucket-name>. |
| Fazer upload de um arquivo para um bucket | s3:PutObject |
s3:ListAllMyBuckets |
Faz upload de um objeto em um bucket do S3. Recurso:
arn:aws:s3:::<bucket-name>/*. |
Referência rápida (ActionName:Permission)
Use a seguinte referência rápida para analisar as permissões necessárias para cada ação:
Ping: s3:ListAllMyBuckets
Download File From Bucket: s3:GetObject, s3:ListAllMyBuckets
Get Bucket Policy: s3:GetBucketPolicy, s3:ListAllMyBuckets
List Bucket Objects: s3:ListBucket, s3:ListAllMyBuckets
List Buckets: s3:ListAllMyBuckets
Set Bucket Policy: s3:PutBucketPolicy, s3:ListAllMyBuckets
Upload File To Bucket: s3:PutObject, s3:ListAllMyBuckets
Exemplo de política do IAM (privilégio mínimo)
O exemplo de política a seguir demonstra as permissões necessárias para executar todas as ações do AWS S3 no Google SecOps.
Para instruções sobre como criar e anexar políticas do IAM, consulte Como criar políticas do IAM na documentação da AWS.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SecOpsS3Discovery",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Sid": "SecOpsS3BucketOperations",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketPolicy",
"s3:PutBucketPolicy"
],
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "SecOpsS3ObjectOperations",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::*/*"
}
]
}
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. |
| Executar remotamente | Caixa de seleção | Desmarcado | Não | Marque o campo para executar a integração configurada remotamente. Depois de marcada, a opção de selecionar o usuário remoto (agente) aparece. |
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.
Fazer o download do arquivo do bucket
Fazer o download do arquivo do bucket no AWS S3.
Parâmetros
| Nome de exibição do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Caminho do arquivo do bucket | String | s3://{bucket_name}/{file_name} | Sim | Especifique o caminho para o arquivo no bucket. Exemplo: s3://siemplify/syslog/log.txt |
| Caminho de download | String | N/A | Sim | Especifique o caminho para o download do arquivo. |
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 | Exemplo |
|---|---|---|
| is_success | Verdadeiro/falso | is_success:False |
Resultado do JSON
{
"bucket_file_path": "s3://testsiemplify/test/123.txt"
"download_path": "/usr/bin/share/download.txt"
}
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 o código de status for igual a 200 (is_success = true) "Successfully downloaded '{0}' from AWS S3".format(bucket_file_path) Se outro código de status (is_success=false): "A ação não conseguiu baixar '{0}' do AWS S3. Motivo: já existe um arquivo com esse caminho de download." 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, erros do SDK, entre outros: "Erro ao executar a ação 'Fazer o download do arquivo do bucket'. Motivo: {0}''.format(error.Stacktrace) |
Geral |
Acessar política de bucket
Recupere informações sobre a política de bucket do AWS S3.
Parâmetros
| Nome de exibição do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Nome do bucket | String | N/A | Sim | Especifique o nome do bucket de onde as informações da política serão recuperadas. |
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 | Exemplo |
|---|---|---|
| is_success | Verdadeiro/falso | is_success:False |
Resultado do JSON
{
"Policy": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::testsiemplify/*"
}
]
}
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 o código de status for 200 (is_success = true) "Successfully retrieved information about the policy of the "{0}" bucket in AWS S3".format(bucket_name) Se outro código de status (is_success=false): "Action wasn't able to return information about the policy of the '{0}' bucket in AWS S3".format(bucket_name) 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 'Get Bucket Policy'. Motivo: {0}''.format(error.Stacktrace) |
Geral |
Listar objetos do bucket
Permite que o usuário desative uma conta de usuário. O corpo da solicitação contém o usuário a ser desativado. A propriedade de ativação da conta precisa ser definida como falsa.
Parâmetros
| Nome de exibição do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Nome do bucket | String | N/A | Sim | Especifique o nome do bucket de onde os objetos serão recuperados. |
| Número máximo de objetos a serem retornados | Inteiro | N/A | Não | Especifique quantos objetos serão retornados. |
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 | Exemplo |
|---|---|---|
| is_success | Verdadeiro/falso | is_success:False |
Resultado do JSON
"Contents": [
{
"Key": "text.txt",
"LastModified": %Y-%m-%dT%H:%M:%S,
"ETag": "d41d8cd98f00b204e9800998ecf8427e",
"Size": 0,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "lab_aws",
"ID": "935dc3fed0e1d2c5b12242cf9927370824f2438681a2d3c0523f254dbde41aba"
}
},
{
"Key": "text_1.txt",
"LastModified": %Y-%m-%dT%H:%M:%S,
"ETag": "d41d8cd98f00b204e9800998ecf8427e",
"Size": 0,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "lab_aws",
"ID": "935dc3fed0e1d2c5b12242cf9927370824f2438681a2d3c0523f254dbde41aba"
}
}
]
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 o código de status for igual a 200 (is_success = true) "Successfully returned objects of the "{0}" bucket in AWS S3".format(bucket_name) Se outro código de status (is_success=false): "Action wasn't able to return objects of the '{0}' bucket in AWS S3".format(bucket_name) 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 objetos do bucket'. Motivo: {0}''.format(error.Stacktrace) |
Geral |
| Tabela do painel de casos | Nome da tabela: objetos do bucket '{0}' Colunas:
|
Geral |
Listar buckets
Recuperar uma lista de buckets do AWS S3.
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 | Exemplo |
|---|---|---|
| is_success | Verdadeiro/falso | is_success:False |
Resultado do JSON
{
"Buckets": [
{
"CreationDate": %Y-%m-%dT%H:%M:%S,
"Name": "testsiemplify"
}
],
"Owner": {
"DisplayName": "lab_aws",
"ID": "935dc3fed0e1d2c5b12242cf9927370824f2438681a2d3c0523f254dbde41aba"
},
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 o código de status for igual a 200 (is_success = true), "Successfully listed available buckets in AWS S3". Se outro código de status (is_success=false): "A ação não conseguiu listar os buckets disponíveis no AWS S3. 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 buckets'. Motivo: {0}''.format(error.Stacktrace) |
Geral |
Ping
Teste a conectividade com o AWS S3 usando os parâmetros fornecidos na página de configuração da integração na página do Google SecOps Content Hub.
Casos de uso
Teste a conectividade.
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 | Exemplo |
|---|---|---|
| is_success | Verdadeiro/falso | is_success:False |
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 a operação for bem-sucedida: "A conexão com o servidor do AWS S3 foi estabelecida usando os parâmetros fornecidos." A ação deve falhar e interromper a execução de um playbook: Caso não seja concluída, vai acontecer o seguinte: "Falha ao se conectar ao servidor AWS S3! O erro é {0}".format(exception.stacktrace) |
Geral |
Definir política de bucket
Defina uma política no bucket do AWS S3.
Parâmetros
| Nome de exibição do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Nome do bucket | String | N/A | Sim | Especifique o nome do bucket em que você quer atualizar a política. |
| Objeto JSON de política | String | N/A | Sim | Especifique o objeto JSON da política que você quer definir para o bucket. Confira alguns exemplos aqui: https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html. |
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 | Exemplo |
|---|---|---|
| is_success | Verdadeiro/falso | is_success:False |
Resultado do JSON
bucket_policy = {
'Version': '2012-10-17',
'Statement': [{
'Sid': 'AddPerm',
'Effect': 'Allow',
'Principal': '*',
'Action': ['s3:GetObject'],
'Resource': f'arn:aws:s3:::{bucket_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 o código de status == 204 (is_success = true) "A política do bucket "{0}" no AWS S3 foi atualizada".format(bucket_name) Se outro código de status (is_success=false): "Action wasn't able to update the policy of the '{0}' bucket in AWS S3".format(bucket_name) 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 bucket'. Motivo: {0}''.format(error.Stacktrace) |
Fazer upload de arquivo para o bucket
Fazer upload de um arquivo para o bucket no AWS S3.
Parâmetros
| Nome de exibição do parâmetro | Tipo | Valor padrão | É obrigatório | Descrição |
|---|---|---|---|---|
| Caminho do arquivo | String | N/A | Sim | Especifique o caminho para o arquivo que precisa ser enviado. |
| Caminho de upload do bucket | String | s3://{bucket_name}/{file_name} | Sim | Especifique o caminho no bucket para onde o caminho deve ser enviado. Exemplo: s3://siemplify/syslog/log.txt |
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 | Exemplo |
|---|---|---|
| is_success | Verdadeiro/falso | is_success:False |
Resultado do JSON
{
"bucket_upload_path": "s3://testsiemplify/test/123.txt"
"file_path": "/usr/bin/share/download.txt"
}
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 o código de status for == 200 (is_success = true) "Successfully uploaded '{0}' to AWS S3 {1} bucket".format(file_path, bucket name aka first string after s3://) Se o arquivo não existir (is_success = false): "A ação não conseguiu fazer upload de '{0}' para o AWS S3. Motivo: o arquivo com esse caminho de upload não existe." 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, erros do SDK, entre outros: "Erro ao executar a ação 'Fazer upload do arquivo para o bucket'. Motivo: {0}''.format(error.Stacktrace) |
Geral |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.