
Surveillez vos Applications avec l'API Nexmo Audit Events et Python
Temps de lecture : 3 minutes
Dans ce billet de blog, vous verrez comment créer une application web en Python qui permet de visualiser les événements d'audit de Nexmo. Dans Nexmo, cette surveillance des Account est réalisée par l'intermédiaire de l'API Audit.
Voici quelques raisons d'utiliser l'API d'Audit Nexmo :
Surveiller les éventuels accès frauduleux aux Account.
Conformité, y compris SOX, SSAE16/SOC, ISO27001 et autres.
Surveillance pour aider à respecter les accords de niveau de service.
Nexmo Audit Events API
Nexmo fournit l'API Audit pour l'analyse des événements qui se produisent au sein d'un compte Nexmo. L'API vous permet de facilement :
Récupérer la liste de tous les types d'événements pris en charge.
Obtenir des listes filtrées d'événements (vous pouvez filtrer sur un ou plusieurs types d'événements et utiliser la recherche textuelle).
Récupérer les détails d'un événement d'audit spécifique.
Dans cet article de blog, vous verrez comment.. :
Récupérer les types d'événements pris en charge.
Obtenir une liste filtrée sur un type d'événement.
Obtenir une liste de tous les événements.
Vous pouvez consulter la documentation de l'API Nexmo Audit pour obtenir des fonctionnalités supplémentaires :
Récupérer les événements d'audit compris dans une plage de dates.
Récupérer les événements d'audit sur la base d'une recherche textuelle.
Combinez différents filtres pour obtenir une liste d'événements très spécifique.
Ce billet de blog ne constitue qu'une introduction à l'utilisation de l'API Nexmo Audit avec Python.
L'API Nexmo Audit Events est actuellement en version bêta. Actuellement, il n'y a pas de support disponible dans les bibliothèques clients.
Points d'extrémité de l'API REST
Le principal point d'accès à l'API REST est le suivant :
https://api.nexmo.com/beta/audit/eventsVous pouvez obtenir une liste de tous les événements d'audit à l'aide d'une commande GET. Vous pouvez également obtenir une liste des types d'événements pris en charge en utilisant la touche OPTIONS sur le point de terminaison.
Les demandes d'événements d'audit peuvent être filtrées à l'aide de paramètres de requête. Par exemple, il est possible de filtrer les demandes d'événements d'audit à l'aide de paramètres de requête :
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 peut être une liste de types d'événements délimitée par des virgules, par exemple :
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" Application Web simple
L'application web présentée dans ce billet de blog est volontairement très simple, afin que vous puissiez vous concentrer sur les principaux appels de l'API Nexmo Audit que vous devez effectuer pour obtenir une liste d'événements d'audit.
Il s'agit d'un simple formulaire contenant une liste déroulante avec les types d'événements pris en charge. Vous pouvez choisir un type d'événement spécifique dans la liste ou sélectionner ALL pour tous les types d'événements. Cliquez ensuite sur le bouton du formulaire pour sélectionner votre choix. Un tableau contenant la liste des événements enregistrés est renvoyé et affiché.
L'application web Python présentée ici a deux prérequis :
Requêtes - permet d'effectuer facilement des appels à l'API REST.
Flask - fournit un cadre d'application web.
Les instructions d'installation de ces deux bibliothèques peuvent être trouvées sur leurs sites web, mais elles peuvent être facilement installées avec la commande pip.
L'application présentée ici n'a été testée qu'avec Python 3.
Le code source de l'application web 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)À des fins de test, vous pouvez exécuter l'application web localement.
Pour tester l'application web :
Naviguez dans votre navigateur jusqu'à
http://localhost:3000.Vous pouvez sélectionner un type d'événement spécifique à afficher dans la liste déroulante ou sélectionner
ALLdans la liste déroulante pour afficher tous les événements.Cliquez sur
Submitpour recevoir une liste d'événements.
Code source
Le code source le plus récent de l'application web d'exemple est hébergé à l'adresse suivante Communauté Nexmo sur GitHub.
Résumé
Dans cet article de blog, vous avez vu comment créer une simple application web Python qui vous permet de récupérer une liste d'événements d'audit de votre compte Nexmo. Grâce à cette application web, vous pouvez surveiller votre Account à la recherche de comportements suspects, ou de problèmes potentiels.
Pour en savoir plus
Vous pouvez en savoir plus sur l'API Nexmo Audit Event en consultant les ressources suivantes :