Gerar Relatórios de Gerenciamento de Identidade e Acesso do Oracle Cloud Infrastructure Audit

Introdução

Os Domínios de Identidade do OCI (Oracle Cloud Infrastructure) são os sucessores do Oracle Identity Cloud Service e trazem todos os recursos do Oracle Identity Cloud Service para um serviço principal do Oracle Cloud Infrastructure. O Oracle Identity Cloud Service era uma oferta independente do tipo SaaS e fornece Relatórios sobre a Atividade do Usuário e similares dentro do serviço.

Diferentemente do Oracle Identity Cloud Service, os Domínios de Identidade do OCI existem no contexto maior do OCI. Um princípio de design da OCI é usar recursos de serviço comuns sempre que possível e, como resultado, alguns dos Relatórios que foram disponibilizados no Oracle Identity Cloud Service estão sendo descontinuados, pois os dados que eles utilizaram agora estão disponíveis por meio do recurso de serviço comum fornecido pelo OCI Audit.

Este tutorial demonstra como construir os relatórios obsoletos com base nos dados do OCI Audit e disponibilizar esses relatórios no OCI Dashboard.

Objetivos

Pré-requisitos

Tarefa 1: Explorar os Eventos de Auditoria do OCI Identity and Access Management

Cada serviço do OCI cria registros de Auditoria na ação do usuário ou do serviço, e o OCI IAM não é exceção, criando registros de Auditoria no acesso do Usuário, bem como qualquer alteração ou evento que ocorra no OCI IAM.

  1. Acesse o Serviço Logging nos recursos Observability & Management na Console do OCI e selecione a seção Pesquisar.

  2. Clique em Selecionar logs a serem pesquisados para definir o contexto da pesquisa de log para o compartimento que contém o Domínio de Identidades do OCI IAM para o qual você deseja gerar o relatório.

    Adicionando o Compartimento à Pesquisa de Log

    Depois de selecionar o compartimento relevante, você provavelmente verá várias entradas para a atividade do usuário ou do serviço, com as entradas específicas dependendo de como sua tenancy está sendo usada. Você também pode ver seus próprios ou outros eventos de login. Se você não vir nenhuma entrada, certifique-se de ter a região correta selecionada expandindo Mais Opções de Pesquisa ou expanda a janela de tempo modificando a definição Filtrar por horário.

  3. Clique em Mostrar Modo Avançado para ativar a capacidade de inserir consultas de texto livre e, em seguida, adicione um dos itens a seguir ao final da consulta padrão (após 'classificar por desc. de data e hora') para gerar o mesmo conteúdo que foi incluído no relatório do Oracle Identity Cloud Service.

    Relatório Consulta
    Relatório de Log-ins Bem-sucedidos | where data.additionalDetails.eventId = 'sso.session.create.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as Login, data.additionalDetails.eventId as Result, data.additionalDetails.ssoRp as Provider, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date
    Relatório de Log-ins com Falha | where data.additionalDetails.eventId='sso.authentication.failure' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as User, data.additionalDetails.eventId as Result, data.message as Comments, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date
    Relatório de Acesso ao Aplicativo | where data.additionalDetails.eventId = 'sso.session.create.success' or data.additionalDetails.eventId = 'sso.authentication.failure' or data.additionalDetails.eventId = 'sso.session.modify.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorDisplayName as User, data.additionalDetails.actorName as Login, data.additionalDetails.eventId as "Success/Failure", data.additionalDetails.ssoRp as Application, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date
    Relatório de Log de Auditoria | where data.additionalDetails.eventId = 'sso.app.access.success' or data.additionalDetails.eventId = 'sso.app.access.failure' or data.additionalDetails.eventId = 'sso.session.create.success' or data.additionalDetails.eventId = 'sso.authentication.failure' or data.additionalDetails.eventId = 'sso.session.delete.success' or data.additionalDetails.eventId = 'admin.user.create.success' or data.additionalDetails.eventId = 'admin.user.activated.success' or data.additionalDetails.eventId = 'admin.user.deactivated.success' or data.additionalDetails.eventId = 'admin.user.update.success' or data.additionalDetails.eventId = 'admin.user.delete.success' or data.additionalDetails.eventId = 'admin.user.password.reset.success' or data.additionalDetails.eventId = 'admin.me.password.reset.success' or data.additionalDetails.eventId = 'admin.me.password.change.success' or data.additionalDetails.eventId = 'admin.policy.create.success' or data.additionalDetails.eventId = 'admin.rule.create.success' or data.additionalDetails.eventId = 'admin.policy.update.success' or data.additionalDetails.eventId = 'admin.rule.update.success' or data.additionalDetails.eventId = 'admin.passwordpolicy.create.success' or data.additionalDetails.eventId = 'admin.passwordpolicy.update.success' or data.additionalDetails.eventId = 'admin.grant.create.success' or data.additionalDetails.eventId = 'admin.grant.delete.success' or data.additionalDetails.eventId = 'admin.group.create.success' or data.additionalDetails.eventId = 'admin.group.add.member.success' or data.additionalDetails.eventId = 'admin.group.remove.member.success' or data.additionalDetails.eventId = 'admin.group.delete.success' or data.additionalDetails.eventId = 'admin.app.create.success' or data.additionalDetails.eventId = 'admin.app.update.success' or data.additionalDetails.eventId = 'admin.app.delete.success' or data.additionalDetails.eventId = 'admin.app.activated.success' or data.additionalDetails.eventId = 'admin.app.deactivated.success' or data.additionalDetails.eventId = 'notification.delivery.success' or data.additionalDetails.eventId = 'notification.delivery.failure' or data.additionalDetails.eventId = 'sso.auth.factor.initiated' or data.additionalDetails.eventId = 'sso.bypasscode.create.success' | select time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date, data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as Actor, data.additionalDetails.eventId as "Event Id", data.message as "Event Description", data.additionalDetails.adminResourceName as Target
    Relatório de Atribuições da Função do Aplicativo | where data.additionalDetails.eventId = 'admin.approle.add.member.success' or data.additionalDetails.eventId = 'admin.approle.remove.member.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorDisplayName as Approver, data.additionalDetails.adminAppRoleAppName as "Application Name", data.additionalDetails.adminRefResourceName as Beneficiary, data.additionalDetails.adminRefResourceType as "User/Group", data.additionalDetails.adminResourceName as "Application Role Name", time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date, data.additionalDetails.eventId as "Added/Removed"

    Por exemplo, para o Relatório Successful Logins, a consulta teria uma aparência semelhante à abaixo.

    Representação da Consulta de Acesso ao Aplicativo na Pesquisa Avançada

  4. Clique em Pesquisar para usar a consulta atualizada. Se não retornar nenhum resultado, talvez seja necessário modificar o filtro de tempo.

    Resultados de Amostra da Consulta de Acesso ao Aplicativo

  5. Qualquer resultado retornado pode ser exportado clicando em Exportar dados de log (JSON) no menu suspenso Ações acima dos resultados.

    Exportando Dados de Log da Pesquisa de Log

    Observação: os relatórios do Oracle Identity Cloud Service suportados para download como um arquivo CSV, enquanto essa exportação só suporta exportação JSON, no entanto, as instruções selecionadas usadas nas consultas acima nivelam o JSON em um único objeto com atributos, o que deve permitir que você converta entre a exportação JSON e CSV, se necessário.

Tarefa 2: Criar uma Pesquisa Salva para seu Relatório

Para evitar a reinserção da consulta toda vez que desejar acessar esses relatórios, você pode aproveitar o recurso Pesquisa Salva do OCI Logging.

  1. Depois de validar a consulta, clique em Salvar Pesquisa para permitir que a consulta seja reutilizada e incorporada no painel de controle.

  2. Informe um nome para sua pesquisa, como 'Successful_Login_Report' ou similar, bem como uma descrição, e clique em Salvar.

  3. Na Interface de Pesquisas Salvas, você pode clicar novamente na pesquisa para obter o conjunto de dados mais recente.

Observação: não é possível exportar diretamente os resultados da Interface de Pesquisa Salva. Em vez disso, você precisa usar Explorar com Pesquisa de Log no menu suspenso Ações e exportar os resultados da exibição Pesquisar.

Tarefa 3: Adicionar o Relatório a um Painel de Controle do OCI

Além de acessar os relatórios do serviço OCI Logging, eles também podem ser disponibilizados por meio do recurso de painel de controle do OCI para permitir que os eventos do OCI IAM sejam revisados centralmente.

  1. Navegue até a página de destino da Console do OCI, clique em Oracle Cloud no banner superior e, em seguida, troque para a exibição Painel de Controle.

  2. Crie um novo Painel de Controle para os Relatórios do OCI IAM clicando em Novo Painel de Controle.

  3. Selecione Criar do Zero e adicione um nome e uma descrição apropriados.

    Criando um Painel de Controle para exibir os Relatórios do IAM.

  4. Crie um novo Grupo de Painéis de Controle ou atribua esse Painel a um Grupo existente, se apropriado.

  5. Clique em Adicionar Widget, selecione Tabela de Dados de Registro em Log e clique em Configurar no novo widget.

  6. Forneça um Nome apropriado e selecione sua Busca salva. Adicione um período padrão apropriado.

    Criando um Widget para o Relatório de Acesso ao Aplicativo.

  7. Modifique o layout e adicione outras Pesquisas Salvas conforme apropriado.

    Painel de Controle de Amostra com vários Relatórios do IAM

Automatizando a extração dos dados do relatório

As abordagens acima fornecem a capacidade de executar relatórios ad-hoc em dados do IAM. No entanto, para operações em andamento, pode haver um requisito para automatizar a extração desses dados. Para fazer isso, você pode aproveitar a API do OCI, a CLI do OCI ou um dos SDKs do OCI.

A API SearchLogs pode ser chamada usando uma solicitação semelhante à seguinte, ajustando o intervalo de tempo e adicionando a consulta da Pesquisa de Log inicial:

POST https://logging.<region>.oci.oraclecloud.com/20190909/search?limit=1000
Body:
{
  "timeStart": "2025-01-01T00:00:00.000Z",
  "timeEnd": "2025-01-02T00:00:00.000Z",
  "searchQuery": "<log search query from Task #1>",
  "isReturnFieldInfo": false
}

O comando equivalente da CLI do OCI é o seguinte:

oci logging-search search-logs --search-query "<log search query from Task #1>" --time-start "2025-01-01T00:00:00.000Z" --time-end "2025-01-02T00:00:00.000Z" --is-return-field-info false

Observação: Escape os caracteres de aspas duplas (") em sua consulta de pesquisa com barras invertidas (\). Ou seja, as "Success/Failure" torna-se as \"Success/Failure\".

Se você preferir que os Eventos de Auditoria sejam enviados para um sistema alternativo, o OCI Connector Hub ou o OCI Events poderá ser usado para facilitar o encaminhamento de logs, como em Implementar a segurança multicloud usando o OCI Audit para capturar eventos do OCI Identity and Access Management, abrangendo o encaminhamento de Auditoria para o Azure Sentinel.

Confirmações

Mais Recursos de Aprendizado

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.