Coletar registros de auditoria da Oracle Cloud Infrastructure
Este documento explica como ingerir registros de auditoria do Oracle Cloud Infrastructure no Google Security Operations usando o Google Cloud Storage.
O serviço de auditoria do Oracle Cloud Infrastructure registra automaticamente chamadas para todos os endpoints da interface de programação de aplicativos (API) pública compatíveis do Oracle Cloud Infrastructure como eventos de registro. No momento, todos os serviços são compatíveis com o registro em log da auditoria do Oracle Cloud Infrastructure. Os eventos de registro gravados pelo Oracle Cloud Infrastructure Audit incluem chamadas de API feitas pelo console, pela interface de linha de comando (CLI), pelos kits de desenvolvimento de software (SDKs), pelos seus próprios clientes personalizados ou por outros serviços do Oracle Cloud Infrastructure.
Antes de começar
Verifique se você atende os seguintes pré-requisitos:
- Uma instância do Google SecOps
- Um projeto do GCP com a API Cloud Storage ativada
- Permissões para criar e gerenciar buckets do GCS
- Permissões para gerenciar políticas do IAM em buckets do GCS
- Permissões para criar serviços do Cloud Run, tópicos do Pub/Sub e jobs do Cloud Scheduler
- Uma conta da Oracle Cloud Infrastructure com permissões para criar e gerenciar:
- Hub do Service Connector
- Funções
- Buckets do Object Storage
- Políticas do IAM
- Acesso privilegiado ao console da Oracle Cloud Infrastructure
Criar um bucket do Google Cloud Storage
- Acesse o Console do Google Cloud.
- Selecione seu projeto ou crie um novo.
- No menu de navegação, acesse Cloud Storage > Buckets.
- Clique em Criar bucket.
Informe os seguintes detalhes de configuração:
Configuração Valor Nomeie seu bucket Insira um nome exclusivo globalmente, por exemplo, oci-audit-logs-gcs.Tipo de local Escolha com base nas suas necessidades (região, birregional, multirregional) Local Selecione o local (por exemplo, us-central1).Classe de armazenamento Padrão (recomendado para registros acessados com frequência) Controle de acesso Uniforme (recomendado) Ferramentas de proteção Opcional: ativar o controle de versões de objetos ou a política de retenção Clique em Criar.
Configurar a Oracle Cloud Infrastructure para exportar registros de auditoria para o GCS
A infraestrutura em nuvem da Oracle não oferece suporte à exportação nativa para o Google Cloud Storage. Você vai usar o Service Connector Hub do Oracle Cloud Infrastructure com uma função para encaminhar registros de auditoria ao GCS.
Criar uma função da Oracle Cloud Infrastructure para encaminhar registros ao GCS
- Faça login no console do Oracle Cloud.
- Acesse Serviços para desenvolvedores > Funções > Aplicativos.
- Selecione o compartimento em que você quer criar o aplicativo de função.
- Clique em Criar aplicativo.
- Informe os seguintes detalhes de configuração:
- Nome: insira
audit-logs-to-gcs-app. - VCN: selecione uma rede de nuvem virtual.
- Sub-redes: selecione uma sub-rede com acesso à Internet.
- Nome: insira
- Clique em Criar.
- Depois que o aplicativo for criado, clique em Começar e siga as instruções para configurar seu ambiente de desenvolvimento local com a CLI Fn.
Crie um diretório de função na sua máquina local:
mkdir oci-audit-to-gcs cd oci-audit-to-gcsInicialize uma função Python:
fn init --runtime python oci-audit-to-gcs cd oci-audit-to-gcsSubstitua o conteúdo de
func.pypelo seguinte código:import io import json import logging import os from fdk import response from google.cloud import storage from google.oauth2 import service_account from datetime import datetime # Configure logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger() # Environment variables GCS_BUCKET = os.environ.get('GCS_BUCKET') GCS_PREFIX = os.environ.get('GCS_PREFIX', 'oci-audit-logs') GCS_CREDENTIALS_JSON = os.environ.get('GCS_CREDENTIALS_JSON') def handler(ctx, data: io.BytesIO = None): """ Oracle Cloud Infrastructure Function to forward Audit logs to GCS. Args: ctx: Function context data: Input data containing Audit log events """ if not all([GCS_BUCKET, GCS_CREDENTIALS_JSON]): logger.error('Missing required environment variables: GCS_BUCKET or GCS_CREDENTIALS_JSON') return response.Response( ctx, response_data=json.dumps({"error": "Missing configuration"}), headers={"Content-Type": "application/json"} ) try: # Parse input data body = json.loads(data.getvalue()) logger.info(f"Received event: {json.dumps(body)}") # Extract log entries log_entries = [] if isinstance(body, list): log_entries = body elif isinstance(body, dict): # Service Connector Hub sends data in specific format if 'data' in body: log_entries = [body['data']] if isinstance(body['data'], dict) else body['data'] else: log_entries = [body] if not log_entries: logger.info("No log entries to process") return response.Response( ctx, response_data=json.dumps({"status": "no_logs"}), headers={"Content-Type": "application/json"} ) # Initialize GCS client with service account credentials credentials_dict = json.loads(GCS_CREDENTIALS_JSON) credentials = service_account.Credentials.from_service_account_info(credentials_dict) storage_client = storage.Client(credentials=credentials, project=credentials_dict.get('project_id')) bucket = storage_client.bucket(GCS_BUCKET) # Write logs to GCS as NDJSON timestamp = datetime.utcnow().strftime('%Y%m%d_%H%M%S_%f') object_key = f"{GCS_PREFIX}/logs_{timestamp}.ndjson" blob = bucket.blob(object_key) ndjson = '\n'.join([json.dumps(entry, ensure_ascii=False) for entry in log_entries]) + '\n' blob.upload_from_string(ndjson, content_type='application/x-ndjson') logger.info(f"Wrote {len(log_entries)} records to gs://{GCS_BUCKET}/{object_key}") return response.Response( ctx, response_data=json.dumps({"status": "success", "records": len(log_entries)}), headers={"Content-Type": "application/json"} ) except Exception as e: logger.error(f'Error processing logs: {str(e)}') return response.Response( ctx, response_data=json.dumps({"error": str(e)}), headers={"Content-Type": "application/json"}, status_code=500 )Atualize
requirements.txtcom as seguintes dependências:fdk>=0.1.0 google-cloud-storage>=2.0.0 google-auth>=2.0.0Implante a função na Oracle Cloud Infrastructure:
fn -v deploy --app audit-logs-to-gcs-appQuando a implantação terminar, anote o OCID da função. Você vai usá-la na próxima etapa.
Configurar variáveis de ambiente da função
- No console do Oracle Cloud, acesse Developer Services > Functions > Applications.
- Clique no aplicativo (
audit-logs-to-gcs-app). - Clique no nome da função (
oci-audit-to-gcs). - Clique em Configuração.
Adicione as seguintes variáveis de configuração:
Chave Valor GCS_BUCKETO nome do bucket do GCS (por exemplo, oci-audit-logs-gcs)GCS_PREFIXPrefixo para arquivos de registro (por exemplo, oci-audit-logs)GCS_CREDENTIALS_JSONString JSON da chave da conta de serviço do GCP (consulte abaixo) Clique em Salvar alterações.
Criar uma conta de serviço do GCP para a função do Oracle Cloud Infrastructure
A função do Oracle Cloud Infrastructure precisa de uma conta de serviço do GCP para gravar no bucket do GCS.
- No Console do GCP, acesse IAM e administrador > Contas de serviço.
- Clique em Criar conta de serviço.
- Informe os seguintes detalhes de configuração:
- Nome da conta de serviço: insira
oci-function-gcs-writer. - Descrição da conta de serviço: insira
Service account for OCI Function to write Audit logs to GCS.
- Nome da conta de serviço: insira
- Clique em Criar e continuar.
- Na seção Conceder acesso a essa conta de serviço ao projeto, adicione o seguinte papel:
- Clique em Selecionar papel.
- Pesquise e selecione Administrador de objetos do Storage.
- Clique em Continuar.
- Clique em Concluído.
- Clique no e-mail da conta de serviço recém-criada.
- Acesse a guia Chaves.
- Clique em Adicionar chave > Criar nova chave.
- Selecione JSON como o tipo de chave.
- Clique em Criar.
- O download do arquivo de chave JSON será feito no seu computador.
- Abra o arquivo de chave JSON e copie todo o conteúdo dele.
- Volte para a configuração da função do console do Oracle Cloud.
Cole o conteúdo JSON na variável de configuração
GCS_CREDENTIALS_JSON.
Conceder permissões do IAM no bucket do GCS
Conceda permissões de gravação à conta de serviço no bucket do GCS:
- Acesse Cloud Storage > Buckets.
- Clique no nome do bucket (
oci-audit-logs-gcs). - Acesse a guia Permissões.
- Clique em Conceder acesso.
- Informe os seguintes detalhes de configuração:
- Adicionar principais: insira o e-mail da conta de serviço (
oci-function-gcs-writer@PROJECT_ID.iam.gserviceaccount.com). - Atribuir papéis: selecione Administrador de objetos do Storage.
- Adicionar principais: insira o e-mail da conta de serviço (
- Clique em Salvar.
Criar um Hub de conectores de serviço da Oracle Cloud Infrastructure
- Faça login no console do Oracle Cloud.
- Acesse Observabilidade e gerenciamento > Logging > Hub de conectores de serviço.
- Selecione o compartimento em que você quer criar o conector de serviço.
- Clique em Criar conector de serviço.
Informe os seguintes detalhes de configuração:
- Informações do conector de serviço:
Configuração Valor Nome do conector Entre em audit-logs-to-gcs-connectorDescrição Entre em Forward OCI Audit logs to Google Cloud StorageCompartimento de recursos Selecione o compartimento. - Configurar origem:
Configuração Valor Origem Selecione Logging. Compartment Selecione o compartimento que contém os registros de auditoria Grupo de registros Selecione _Audit (grupo de registros padrão para registros de auditoria). Clique em + Outro registro.
Selecione o registro de auditoria do seu compartimento (por exemplo,
_Audit_Include_Subcompartment).- Configurar meta:
Configuração Valor Destino Selecione Funções. Compartimento de função Selecione o compartimento que contém a função Aplicativo de função Selecionar audit-logs-to-gcs-appFunction Selecionar oci-audit-to-gcsRole até Configurar tarefa (opcional) e deixe as configurações padrão.
Clique em Criar.
Criar uma política do IAM para o Service Connector Hub
O Service Connector Hub exige permissões para invocar a função.
- No console do Oracle Cloud, acesse Identidade e segurança > Políticas.
- Selecione o compartimento em que você criou o Service Connector Hub.
- Clique em Criar política.
- Informe os seguintes detalhes de configuração:
- Nome: insira
service-connector-functions-policy. - Descrição: insira
Allow Service Connector Hub to invoke Functions. - Compartimento: selecione o compartimento.
- Nome: insira
- Na seção Criador de políticas, ative a opção Mostrar editor manual.
Insira as seguintes instruções de política:
Allow any-user to use fn-function in compartment <compartment-name> where all {request.principal.type='serviceconnector'} Allow any-user to use fn-invocation in compartment <compartment-name> where all {request.principal.type='serviceconnector'}- Substitua
<compartment-name>pelo nome do compartimento.
- Substitua
Clique em Criar.
Testar a integração
- Faça login no console do Oracle Cloud.
- Realize algumas ações que gerem registros de auditoria (por exemplo, crie ou modifique um recurso).
- Aguarde de 2 a 5 minutos para que os registros sejam processados.
- Acesse Cloud Storage > Buckets no console do GCP.
- Clique no nome do bucket (
oci-audit-logs-gcs). - Navegue até a pasta de prefixo (
oci-audit-logs/). Verifique se novos arquivos
.ndjsonestão aparecendo no bucket.
Recuperar a conta de serviço do Google SecOps
O Google SecOps usa uma conta de serviço exclusiva para ler dados do seu bucket do GCS. Você precisa conceder a essa conta de serviço acesso ao seu bucket.
Receber o e-mail da conta de serviço
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Oracle Cloud Audit Logs). - Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Oracle Cloud Infrastructure como o Tipo de registro.
Clique em Receber conta de serviço. Um e-mail exclusivo da conta de serviço é exibido, por exemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopie esse endereço de e-mail para usar na próxima etapa.
Conceder permissões do IAM à conta de serviço do Google SecOps
A conta de serviço do Google SecOps precisa do papel de Leitor de objetos do Storage no seu bucket do GCS.
- Acesse Cloud Storage > Buckets.
- Clique no nome do bucket (
oci-audit-logs-gcs). - Acesse a guia Permissões.
- Clique em Conceder acesso.
- Informe os seguintes detalhes de configuração:
- Adicionar participantes: cole o e-mail da conta de serviço do Google SecOps.
- Atribuir papéis: selecione Leitor de objetos do Storage.
Clique em Salvar.
Configurar um feed no Google SecOps para ingerir registros de auditoria do Oracle Cloud Infrastructure
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Oracle Cloud Audit Logs). - Selecione Google Cloud Storage V2 como o Tipo de origem.
- Selecione Oracle Cloud Infrastructure como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
URL do bucket de armazenamento: insira o URI do bucket do GCS com o caminho do prefixo:
gs://oci-audit-logs-gcs/oci-audit-logs/Substitua:
oci-audit-logs-gcs: o nome do bucket do GCS.oci-audit-logs: prefixo/caminho da pasta opcional onde os registros são armazenados (deixe em branco para a raiz).
Exemplos:
- Bucket raiz:
gs://company-logs/ - Com prefixo:
gs://company-logs/oci-audit-logs/ - Com subpasta:
gs://company-logs/oracle/audit/
- Bucket raiz:
Opção de exclusão da fonte: selecione a opção de exclusão de acordo com sua preferência:
- Nunca: nunca exclui arquivos após as transferências (recomendado para testes).
- Excluir arquivos transferidos: exclui os arquivos após a transferência bem-sucedida.
Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios após a transferência bem-sucedida.
Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é de 180 dias.
Namespace do recurso: o namespace do recurso.
Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.