DataSunrise Consegue la Certificazione AWS DevOps Competency per AWS DevSecOps e Monitoraggio, Logging e Performance

Traccia di Audit dei Dati di Qdrant

Traccia di Audit dei Dati di Qdrant

Introduzione

I database vettoriali come Qdrant spesso mancano di robusti sistemi di audit dei dati. Tuttavia, questi database gestiscono informazioni sensibili per applicazioni di apprendimento automatico, NLP e ricerca basata su AI. Le organizzazioni si affidano a Qdrant per l’ottimizzazione delle ricerche, la ricerca semantica e i motori di raccomandazione. Questo rende essenziale implementare una traccia di audit dei dati di Qdrant per proteggere i propri dati.

Un sistema completo di tracciamento dei dati di Qdrant tiene traccia di chi accede ai dati, quali modifiche vengono effettuate e quando queste azioni accadono. Senza meccanismi di audit adeguati, le organizzazioni rischiano di violare normative sulla privacy come il GDPR e HIPAA. Queste leggi richiedono una stretta protezione delle informazioni sensibili, rendendo le tracce di audit dei dati essenziali per la conformità.

L’Importanza della Traccia di Audit dei Dati di Qdrant

Qdrant memorizza le rappresentazioni vettoriali come rappresentazioni matematiche invece di identificatori personali diretti. Tuttavia, questi embedding richiedono ancora un monitoraggio accurato attraverso le tracce di audit dei dati. Il Parere 05/2014 del Gruppo di Lavoro Articolo 29 avverte che i dati trasformati necessitano di protezione quando potrebbero aiutare a identificare gli individui attraverso inferenze o combinazioni di dati.

Lo standard di privacy ISO/IEC 27701:2019 rafforza questo requisito. Dirige le organizzazioni a proteggere le trasformazioni matematiche dei dati personali proprio come le informazioni originali. Questo rende il mantenimento di una traccia di audit dei dati di Qdrant vitale per la sicurezza e la conformità.

La violazione dei dati di Equifax del 2017 dimostra perché le organizzazioni necessitano di solidi sistemi di audit dei dati. Un monitoraggio inefficace dell’accesso ai dati ha portato a una violazione che ha colpito 147 milioni di persone e a un accordo di 425 milioni di dollari. L’Articolo 30 del GDPR ora richiede che le organizzazioni registrino tutte le attività di trattamento dei dati. Questo include il monitoraggio di dati trasformati come le rappresentazioni vettoriali attraverso complete tracce di audit dei dati di Qdrant.

Capacità di Logging Native di Qdrant

Qdrant è un potente database vettoriale, ma manca di capacità native complete di audit logging. Al momento, Qdrant non ha funzionalità specifiche integrate per l’audit. I log di sistema disponibili sono di base e principalmente progettati per scopi di debugging, fornendo dettagli minimi sulle azioni degli utenti, l’accesso ai dati o le modifiche ai dati. Affidarsi a questi log di sistema come traccia di audit non soddisferebbe i requisiti normativi né fornirebbe il livello di dettaglio necessario per la sicurezza dei dati e la conformità.

Qdrant System Logs Overview
Panoramica dei Log di Sistema di Qdrant

A causa di ciò, le organizzazioni che desiderano assicurarsi la conformità con le normative avrebbero molto probabilmente bisogno di implementare soluzioni personalizzate o strumenti di terze parti per garantire che tutte le attività rilevanti, come le modifiche ai dati, i tentativi di accesso e l’esecuzione di query, siano adeguatamente registrate.

Esempio di Implementazione del Tracciamento delle Ricerche

Un approccio di base per implementare tracce di audit di Qdrant potrebbe comportare l’incapsulamento del client di Qdrant per catturare i log di audit per le operazioni sul database. Di seguito è riportato un esempio di come si potrebbe implementare un wrapper per tracciare l’operazione di ricerca:


from qdrant_client import QdrantClient
from datetime import datetime
import json
from pathlib import Path

class AuditedQdrantClient:
    def __init__(self, host='localhost', port=6333, log_file='logs/qdrant_audit.jsonl'):
        self.client = QdrantClient(host=host, port=port)
        self.log_file = log_file

        # Crea directory log se necessario
        Path(self.log_file).parent.mkdir(parents=True, exist_ok=True)

    def log_operation(self, operation_details: dict):
        # Aggiungi timestamp
        operation_details["timestamp"] = datetime.now().isoformat()

        # Log su console
        print(f"Audit log: {json.dumps(operation_details, indent=2)}")

        # Log su file
        with open(self.log_file, 'a') as f:
            json.dump(operation_details, f)
            f.write('\n')

    def search(self, collection_name: str, query_vector: list, **kwargs):
        start_time = datetime.now()

        try:
            results = self.client.search(
                collection_name=collection_name,
                query_vector=query_vector,
                **kwargs
            )

            self.log_operation({
                "operation": "search",
                "collection": collection_name,
                "parameters": {
                    "vector_size": len(query_vector),
                    "limit": kwargs.get('limit', None),
                    "other_params": kwargs
                },
                "results_count": len(results),
                "status": "success",
                "duration_ms": (datetime.now() - start_time).total_seconds() * 1000
            })

            return results

        except Exception as e:
            self.log_operation({
                "operation": "search",
                "collection": collection_name,
                "status": "error",
                "error": str(e),
                "duration_ms": (datetime.now() - start_time).total_seconds() * 1000
            })
            raise`

Questo wrapper di base catturerà tutte le operazioni di ricerca, che sono state eseguite attraverso di esso, inclusi i parametri della query, il numero di risultati, il tempo di esecuzione e lo stato (successo o errore).

Esempio di Script di Test

Per testare questa implementazione, è possibile utilizzare il seguente script, che aggiungerà un paio di punti, eseguirà una ricerca di base e chiamerà lo script di audit per registrare l’operazione di ricerca in un file JSON:


`from qdrant_audit import AuditedQdrantClient

# Crea client con log abilitato
client = AuditedQdrantClient(log_file='logs/qdrant_audit.jsonl')

try:
    # Ottieni info collezione
    collection_info = client.client.get_collection("test_collection")
    print("Info collezione:", collection_info)

    # Aggiungi alcuni punti di test
    client.client.upsert(
        collection_name="test_collection",
        points=[
            {"id": 1, "vector": [0.1, 0.2, 0.3], "payload": {"description": "test point 1"}},
            {"id": 2, "vector": [0.2, 0.3, 0.4], "payload": {"description": "test point 2"}}
        ]
    )
    print("Punti di test aggiunti")

    # Esegui una ricerca
    results = client.search(
        collection_name="test_collection",
        query_vector=[0.1, 0.2, 0.3],
        limit=10
    )
    print("Risultati ricerca:", results)

except Exception as e:
    print(f"Errore: {e}")`

Di seguito è riportato un output dell’esecuzione riuscita dello script:

Esempio di Output di Script di Test Riuscito per Qdrant
Esempio di Output di Script di Test Riuscito per Qdrant

Possiamo anche cercare di modificare la query di test all’interno dello script per eseguire un’operazione su una collezione non esistente per vedere se registrerebbe anche le richieste non riuscite

Esempio di Esecuzione di Script di Test Non Riuscito per Qdrant
Esempio di Esecuzione di Script di Test Non Riuscito per Qdrant

Ora, che abbiamo sia tentativi di ricerca falliti che riusciti, possiamo provare ad accedere ai log:


cat logs/qdrant_audit.jsonl | jq '.'
Tracce di Audit Generate per le Operazioni di Ricerca di Qdrant
Tracce di Audit Generate per le Operazioni di Ricerca di Qdrant

In sintesi, questo script registra le operazioni di ricerca, tuttavia cattura solo i dettagli specifici definiti nella sua implementazione e limitati al suo ambito operativo. Se si desidera includere ulteriori dettagli, come l’indirizzo IP del client o metadati più ampi, o se si intende monitorare altre operazioni come upsert, delete o create_collection, sarebbe necessario estendere lo script con ulteriore logica o incapsulare questi metodi individualmente.

Affrontare le Limitazioni dell’Audit

Sebbene questa implementazione personalizzata possa dimostrare come potrebbero essere implementate le tracce di audit di base di Qdrant per le operazioni di ricerca, presenta ancora limitazioni significative:

  1. Copertura Limitata: Solo l’operazione di ricerca è tracciata. Altre azioni come upsert, delete e create_collection necessitano di ulteriori wrapper.
  2. Cliente Specifico: Per garantire l’audit, tutte le interazioni con Qdrant devono essere instradate tramite questo wrapper. Se un altro sviluppatore utilizza direttamente il QdrantClient predefinito, tali operazioni non verranno registrate.
  3. Manutenzione Manuale: Costruire un sistema di audit completo richiederebbe un notevole sforzo per tracciare tutte le operazioni e mantenere il codice del wrapper.

Per affrontare queste limitazioni, le organizzazioni potrebbero considerare:

1. Soluzioni Personalizzate

  • Sviluppare collettori di log su misura per Qdrant.
  • Creare database di audit centralizzati per la conformità.
  • Costruire strumenti di reporting personalizzati per conformità e rilevamento delle anomalie.

2. Integrazione con Terze Parti

  • Sfruttare piattaforme di gestione dei log per l’archiviazione e l’elaborazione centralizzate.
  • Integrare con sistemi SIEM per il monitoraggio in tempo reale e gli avvisi.
  • Utilizzare strumenti di monitoraggio della conformità per garantire il rispetto dei requisiti normativi.

3. Modifiche Architetturali

  • Implementare livelli di proxy per catturare log dettagliati da tutte le richieste degli utenti.
  • Introdurre servizi di autenticazione e autorizzazione per monitorare i controlli di accesso.
  • Costruire servizi dedicati di log audit per catturare e analizzare i cambiamenti in tempo reale.

Perché DataSunrise è la Soluzione Perfetta per Qdrant

Sebbene soluzioni personalizzate e integrazioni con terze parti possano aiutare ad affrontare le limitazioni dell’audit in Qdrant, un’opzione più fluida ed efficace è l’integrazione di DataSunrise con Qdrant. DataSunrise offre una soluzione di audit dei dati completa che può tracciare tutte le interazioni con il database, garantendo la conformità alle normative e migliorando la sicurezza dei dati.

Creazione di Regole di Audit per Qdrant in DataSunrise
Creazione di Regole di Audit per Qdrant in DataSunrise

DataSunrise fornisce una vasta gamma di capacità di audit, tra cui:

  • Monitoraggio Completo delle Modifiche ai Dati: Monitorizza tutte le modifiche ai dati, inclusi inserimenti, aggiornamenti e cancellazioni.
  • Attribuzione Completa degli Utenti: Traccia ID sessioni, ruoli utente e dettagli dell’applicazione.
  • Log delle Query in Tempo Reale: Cattura il ciclo di vita completo della query, dall’esecuzione ai risultati.
  • Monitoraggio degli Accessi: Registra tutti i tentativi di accesso, riusciti o meno, insieme alle azioni associate.
  • Conformità Normativa: Garantisce la conformità con GDPR, HIPAA e altri standard di protezione dei dati.

Con DataSunrise, le organizzazioni possono automatizzare il monitoraggio delle operazioni del database Qdrant, ridurre la complessità della registrazione manuale e migliorare notevolmente la loro capacità di conformarsi agli standard normativi.

Tracce di Audit di Qdrant Catturate in DataSunrise
Tracce di Audit di Qdrant Catturate in DataSunrise

Conclusione

Sebbene Qdrant sia un potente database vettoriale, le sue capacità native di audit logging sono minime e insufficienti per scopi di conformità e sicurezza. Implementando wrapper personalizzati o sfruttando strumenti di terze parti, le organizzazioni possono raggiungere un livello base di auditabilità. Tuttavia, per tracce di audit complete, scalabili e facilmente gestibili, l’integrazione di una soluzione come DataSunrise è l’approccio migliore.

DataSunrise offre una soluzione avanzata e pronta all’uso per tracciare e monitorare tutte le interazioni con i dati di Qdrant, rendendolo uno strumento inestimabile per le organizzazioni che mirano a proteggere i dati sensibili e garantire la conformità ai standard normativi. Scopri i benefici di persona: programma una demo online oggi stesso e ridefinisci il tuo processo di raccolta tracce di audit dei dati di Qdrant con DataSunrise.

Successivo

Storico delle Attività dei Dati di Qdrant

Storico delle Attività dei Dati di Qdrant

Scopri di più

Ha bisogno del nostro team di supporto?

I nostri esperti saranno lieti di rispondere alle Sue domande.

Informazioni generali:
[email protected]
Servizio clienti e supporto tecnico:
support.datasunrise.com
Richieste di collaborazione e alleanza:
[email protected]