
Monitore suas Applications com a API de eventos de Audit da Nexmo e Python
Tempo de leitura: 3 minutos
Nesta postagem do blog, você verá como criar um aplicativo web em Python que permite visualizar eventos de auditoria do Nexmo. No Nexmo, esse monitoramento de contas é feito por meio da API de Auditoria.
Algumas razões para usar a API de Audit da Nexmo incluem:
Monitoramento de possíveis acessos fraudulentos às contas.
Conformidade, incluindo SOX, SSAE16/SOC, ISO 27001 e outras normas.
Monitoramento para ajudar a cumprir os acordos de nível de serviço.
API de Eventos de Audit da Nexmo
A Nexmo disponibiliza a API de Audit para analisar eventos que ocorrem em uma conta da Nexmo. A API permite que você, com facilidade:
Recuperar uma lista de todos os tipos de eventos suportados.
Obtenha listas filtradas de eventos (é possível filtrar por um ou mais tipos de evento e usar a pesquisa por texto).
Recuperar detalhes de um evento de Audit específico.
Nesta postagem do blog, você vai aprender a:
Recuperar os tipos de eventos compatíveis.
Obter uma lista filtrada por um tipo de evento.
Obter uma lista de todos os eventos.
Você pode consultar a documentação da API de auditoria da Nexmo para conhecer funcionalidades adicionais; por exemplo, você pode:
Recuperar eventos de Audit dentro de um intervalo de datas.
Recuperar eventos de Audit com base em pesquisa de texto.
Combine vários filtros para obter uma lista bem específica de eventos.
Esta postagem no blog oferece apenas uma introdução ao uso da API de Audit da Nexmo com Python.
A API de Eventos de Audit da Nexmo está atualmente em fase Beta. No momento, não há suporte disponível nas bibliotecas de clientes.
Pontos de conexão da API REST
O principal endpoint da API REST é:
https://api.nexmo.com/beta/audit/eventsÉ possível obter uma lista de todos os eventos de Audit usando um GET. Você também pode obter uma lista dos tipos de eventos suportados usando OPTIONS no endpoint.
As solicitações de eventos de Audit podem ser filtradas por meio de parâmetros de consulta. Por exemplo:
curl "https://api.nexmo.com/beta/audit/events?event_type=$EVENT_TYPE&search_text=$SEARCH_TEXT&date_from=$DATE_FROM&date_to=$DATE_TO" \
-u "$NEXMO_API_KEY:$NEXMO_API_SECRET"EVENT_TYPE pode ser uma lista de tipos de eventos delimitada por vírgulas, por exemplo:
curl "https://api.nexmo.com/beta/audit/events?event_type=APP_CREATE,APP_DELETE&search_text=some_string&date_from=2018-09-01&date_to=2018-09-30" \
-u "$NEXMO_API_KEY:$NEXMO_API_SECRET" Aplicativo Web Simples
O aplicativo web apresentado nesta postagem do blog foi deliberadamente mantido bem simples, para que você possa se concentrar nas principais chamadas à API de Audit da Nexmo necessárias para obter uma lista de eventos de Audit.
Há um formulário simples que contém uma lista suspensa com os tipos de eventos compatíveis. Você pode escolher um tipo de evento específico da lista ou selecionar ALL “Todos os tipos de eventos”. Em seguida, clique no botão do formulário para confirmar sua escolha. Uma tabela contendo a lista de eventos registrados é gerada e exibida.
A aplicação web em Python apresentada aqui tem dois pré-requisitos:
Solicitações - oferece uma maneira fácil de fazer chamadas à API REST.
Flask - oferece uma estrutura para aplicativos web.
As instruções de instalação dessas duas bibliotecas podem ser encontradas nos respectivos sites, mas elas podem ser facilmente instaladas com pip.
O aplicativo apresentado aqui foi testado apenas com o Python 3.
O código-fonte do aplicativo web em Python:
import requests
from requests.auth import HTTPBasicAuth
from flask import Flask, request, jsonify
NEXMO_API_KEY = 'YOUR_NEXMO_API_KEY'
NEXMO_API_SECRET = 'YOUR_NEXMO_API_SECRET'
app = Flask(__name__)
template1 = '''
<html>
<head>
<title>Audit Event Types</title>
</head>
<body>
<form action='/events' method='get'>
<select name='event_type'>
<option value='ALL'>ALL -- All the event types</option>
{SELECT_OPTIONS}
</select>
<input type='submit'>
</form>
</body>
</html>
'''
template2 = '''
<html>
<head>
<title>Audit Events Listing</title>
</head>
<body>
<table border='1'>
<tr><th>Audit Event Type</th><th>Date/time of event</th><th>Event source</th><th>Context</th></tr>
{TABLE_ROWS}
</table>
</body>
</html>
'''
@app.route("/")
def root():
# Retrieve all supported event types
# This is then used to populate a drop-down list of event types.
r = requests.options('https://api.nexmo.com/beta/audit/events', auth=HTTPBasicAuth(NEXMO_API_KEY, NEXMO_API_SECRET))
j = r.json()
event_types = j['eventTypes']
# Build options list based on event types
select_options = ""
for evt_t in event_types:
select_options = select_options + "<option value='" + evt_t['type'] + "'>" + evt_t['type'] + " -- " + evt_t['description'] + "</option>"
html = template1.format(SELECT_OPTIONS=select_options)
return (html)
@app.route("/events")
def events():
params = request.args
EVT_TYPE = params['event_type']
if EVT_TYPE == 'ALL':
r = requests.get('https://api.nexmo.com/beta/audit/events', auth=HTTPBasicAuth(NEXMO_API_KEY, NEXMO_API_SECRET))
else:
r = requests.get('https://api.nexmo.com/beta/audit/events?event_type='+EVT_TYPE, auth=HTTPBasicAuth(NEXMO_API_KEY, NEXMO_API_SECRET))
j = r.json()
if '_embedded' in j:
events = j['_embedded']['events']
else:
return ("No Events Found")
table_rows = ""
for evt in events:
if 'context' in evt:
event_context = str(evt['context'])
else:
event_context = 'None'
table_rows = table_rows + "<tr><td>" + (evt['event_type'] + "</td><td>" + evt['created_at'] + "</td><td>" + evt['source'] + "</td><td>" + event_context + "</td></tr>")
html = template2.format(TABLE_ROWS=table_rows)
return(html)
if __name__ == '__main__':
app.run(port=3000)Para fins de teste, você pode executar o aplicativo web localmente.
Para testar o aplicativo web:
Acesse no seu navegador
http://localhost:3000.Você pode selecionar um tipo específico de evento para visualizar na lista suspensa ou selecionar
ALLna lista suspensa para visualizar todos os eventos.Clique
Submitaqui para receber uma lista de eventos.
Código-fonte
O código-fonte mais recente do aplicativo web de exemplo está hospedado em Comunidade Nexmo no GitHub.
Resumo
Nesta postagem do blog, você viu como criar um aplicativo web simples em Python que permite recuperar uma lista de eventos de auditoria da sua conta Nexmo. Com esse aplicativo web, você pode monitorar sua conta em busca de comportamentos suspeitos ou de possíveis problemas.
Leitura complementar
Você pode obter mais informações sobre a API de Eventos de Auditoria da Nexmo nos seguintes recursos: