https://d226lax1qjow5r.cloudfront.net/blog/blogposts/get-nexmo-audit-events-with-python-dr/audit-api.png

Überwachen Sie Ihre Anwendungen mit der Nexmo Audit Events API und Python

Zuletzt aktualisiert am May 3, 2021

Lesedauer: 2 Minuten

In diesem Blog-Beitrag sehen Sie, wie Sie eine Webanwendung in Python erstellen, die es Ihnen ermöglicht, Nexmo-Audit-Ereignisse einzusehen. Innerhalb von Nexmo wird diese Überwachung von Konten durch die Audit API erreicht.

Einige Gründe für die Verwendung der Nexmo Audit API sind:

  • Überwachung möglicher betrügerischer Zugriffe auf Konten.

  • Einhaltung von Vorschriften wie SOX, SSAE16/SOC, ISO27001 und anderen.

  • Überwachung zur Einhaltung von Service Level Agreements.

Nexmo Audit Ereignisse API

Nexmo bietet die Audit-API für die Analyse von Ereignissen, die innerhalb eines Nexmo-Kontos auftreten. Die API ermöglicht es Ihnen, einfach:

  • Ruft eine Liste aller unterstützten Ereignistypen ab.

  • Erhalten Sie gefilterte Listen von Ereignissen (Sie können nach einem oder mehreren Ereignistypen filtern und eine Textsuche verwenden).

  • Abrufen von Details zu einem bestimmten Prüfungsereignis.

In diesem Blogbeitrag erfahren Sie, wie das geht:

  1. Abrufen der unterstützten Ereignistypen.

  2. Erhalten Sie eine nach einem Ereignistyp gefilterte Liste.

  3. Erhalten Sie eine Liste aller Veranstaltungen.

Sie können sich die Nexmo Audit API Dokumentation für zusätzliche Funktionen lesen, zum Beispiel können Sie:

  • Abrufen von Prüfungsereignissen innerhalb eines Datumsbereichs.

  • Abrufen von Prüfungsereignissen auf der Grundlage einer Textsuche.

  • Kombinieren Sie verschiedene Filter, um eine sehr spezifische Liste von Ereignissen zu erhalten.

Dieser Blogbeitrag bietet lediglich eine Einführung in die Verwendung der Nexmo Audit API mit Python.

Die Nexmo Audit Events API befindet sich derzeit im Beta-Stadium. Derzeit gibt es keine Unterstützung in Client-Bibliotheken.

REST-API-Endpunkte

Der wichtigste REST-API-Endpunkt ist:

https://api.nexmo.com/beta/audit/events

Sie können eine Liste aller Audit-Ereignisse erhalten, indem Sie eine GET. Sie können auch eine Liste der unterstützten Ereignistypen erhalten, indem Sie OPTIONS auf dem Endpunkt.

Anfragen zu Audit-Ereignissen können mit Abfrageparametern gefiltert werden. Zum Beispiel:

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 kann z. B. eine durch Kommata getrennte Liste von Ereignistypen sein:

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"

Einfache Webanwendung

Die Webanwendung in diesem Blogpost wurde bewusst sehr einfach gehalten, damit Sie sich auf die wichtigsten Nexmo Audit API-Aufrufe konzentrieren können, die Sie tätigen müssen, um eine Liste der Audit-Ereignisse zu erhalten.

Es gibt ein einfaches Formular mit einer Dropdown-Liste, in der die unterstützten Ereignistypen aufgeführt sind. Sie können einen bestimmten Ereignistyp aus der Liste auswählen oder ALL für alle Ereignistypen. Klicken Sie dann auf die Schaltfläche des Formulars, um Ihre Wahl zu treffen. Es wird eine Tabelle mit der Liste der aufgezeichneten Ereignisse zurückgegeben und angezeigt.

Die vorliegende Python-Webanwendung hat zwei Voraussetzungen:

  1. Abfragen - bietet eine einfache Möglichkeit, REST-API-Aufrufe zu tätigen.

  2. Flask - bietet ein Framework für Webanwendungen.

Die Installationsanweisungen für diese beiden Bibliotheken finden Sie auf deren Websites, können aber auch einfach mit pip.

Die hier vorgestellte Anwendung wurde nur mit Python 3 getestet.

Der Quellcode der Python-Webanwendung:

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)

Zu Testzwecken können Sie die Webanwendung lokal ausführen.

So testen Sie die Webanwendung:

  1. Navigieren Sie in Ihrem Browser zu http://localhost:3000.

  2. Sie können aus der Dropdown-Liste einen bestimmten Ereignistyp auswählen, den Sie anzeigen möchten, oder wählen Sie ALL aus der Dropdown-Liste, um alle Ereignisse anzuzeigen.

  3. Klicken Sie auf Submit um eine Liste der Ereignisse zu erhalten.

Quellcode

Den aktuellen Quellcode für die Beispiel-Webanwendung finden Sie unter Nexmo-Gemeinschaft auf GitHub.

Zusammenfassung

In diesem Blogbeitrag haben Sie gesehen, wie man eine einfache Python-Webanwendung erstellt, mit der Sie eine Liste von Audit-Ereignissen von Ihrem Nexmo-Konto abrufen können. Mit dieser Webanwendung können Sie Ihr Konto auf verdächtiges Verhalten oder mögliche Probleme überwachen.

Weitere Lektüre

Weitere Informationen über die Nexmo Audit Event API finden Sie in den folgenden Ressourcen:

Teilen Sie:

https://a.storyblok.com/f/270183/150x150/931b34422e/abedford.png
Tony BedfordVonage Ehemalige