Audit in SQL Server - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Audit in SQL Server

In Amazon RDS, si può eseguire l'audit dei database Microsoft SQL Server utilizzando il meccanismo di audit integrato in SQL Server. Si possono creare audit e specifiche di audit nello stesso modo in cui vengono creati per i server di database locali.

RDS carica i log completi dell'audit nel bucket S3 utilizzando il ruolo IAM che viene fornito. Se si abilita la retention, RDS conserva i log di audit nell'istanza database per il periodo di tempo configurato.

Per ulteriori informazioni, consulta Audit in SQL Server (Motore di database) nella documentazione di Microsoft SQL Server.

Audit di SQL Server con flussi di attività del database

È possibile utilizzare Database Activity Streams for RDS per integrare gli eventi di SQL Server Audit con gli strumenti di monitoraggio delle attività del database di Imperva e McAfee IBM. Per ulteriori informazioni sull'audit con i flussi di attività del database per RDS in SQL Server, consulta Verifica in Microsoft SQL Server

Supporto per l'audit in SQL Server

In Amazon RDS, a partire da SQL Server 2014, tutte le edizioni di SQL Server supportano gli audit a livello di server; inoltre, l'edizione Enterprise supporta anche gli audit a livello di database. A partire da SQL Server 2016 (13.x) SP1, tutte le edizioni supportano gli audit sia a livello di server che di database. Per ulteriori informazioni, consulta Audit in SQL Server (Motore di database) nella documentazione di SQL Server.

RDS supporta la configurazione delle seguenti impostazioni delle opzioni per l'audit in SQL Server.

Impostazione opzioni Valori validi Descrizione
IAM_ROLE_ARN Amazon Resource Name (ARN) valido nel formato arn:aws:iam::account-id:role/role-name. L'ARN del ruolo IAM che concede l'accesso al bucket S3 dove si desidera archiviare i log di audit. Per ulteriori informazioni, consulta Amazon Resource Names (ARNs) nella Riferimenti generali di AWS.
S3_BUCKET_ARN Un ARN valido nel formato arn:aws:s3:::DOC-EXAMPLE-BUCKET o arn:aws:s3:::DOC-EXAMPLE-BUCKET/key-prefix L'ARN del bucket S3 dove si desidera archiviare i log di audit.
ENABLE_COMPRESSION true o false Controlla la compressione dei log di audit. Per impostazione predefinita, la compressione è abilitata (impostata su true).
RETENTION_TIME 0 Da a 840 Il periodo di retention (in ore) in cui i log di audit in SQL Server vengono conservati nell'istanza RDS. Per impostazione predefinita, la retention è disabilitata.

Aggiunta dell'audit in SQL Server alle opzioni dell'istanza database

L'abilitazione dell'audit in SQL Server richiede due fasi: l'abilitazione dell'opzione nell'istanza database e l'abilitazione della funzione in SQL Server. La procedura per aggiungere l'opzione dell'audit in SQL Server a un'istanza database è la seguente:

  1. Creare un nuovo gruppo di opzioni oppure copiare o modificare un gruppo di opzioni esistente.

  2. Aggiungere e configurare tutte le opzioni necessarie.

  3. Associare il gruppo di opzioni a questa istanza database.

Dopo aver aggiunto l'opzione dell'audit in SQL Server, non è necessario riavviare l'istanza database. Non appena il gruppo di opzioni diventa attivo, è possibile creare audit e archiviarne i log nel bucket S3.

Per aggiungere e configurare l'audit in SQL Server su un gruppo di opzioni di un'istanza database
  1. Scegliere una delle seguenti opzioni:

    • Utilizzare un gruppo di opzioni esistente.

    • Creare un gruppo di opzioni database personalizzato e utilizzarlo. Per ulteriori informazioni, consulta Creazione di un gruppo di opzioni.

  2. Aggiungere l'opzione SQLSERVER_AUDIT al gruppo di opzioni e configurare le impostazioni dell'opzione. Per ulteriori informazioni sull'aggiunta di opzioni, consulta Aggiunta di un'opzione a un gruppo di opzioni.

    • Per ruolo IAM, se già si dispone di un ruolo IAM con le policy richieste, è possibile sceglierlo. Per creare un nuovo ruolo IAM, selezionare Create a New Role (Crea un nuovo ruolo). Per informazioni sulle policy richieste, consulta Creazione manuale di un ruolo IAM per l'audit in SQL Server.

    • Per Seleziona destinazione S3, se già si dispone di un bucket S3 che si desidera utilizzare, selezionarlo. Per creare un nuovo bucket, selezionare Crea un nuovo bucket S3.

    • Per Abilita compressione, lasciare selezionata quest'opzione per comprimere i file dell'audit. Per impostazione predefinita, la compressione è abilitata. Per disabilitare la compressione, deselezionare Enable Compression (Abilita compressione).

    • Per Retention log di audit, per conservare i log di audit nell'istanza database, selezionare questa opzione. Specificare un periodo di retention in ore. Il periodo di retention massimo è di 35 giorni.

  3. Applicare il gruppo di opzioni a un'istanza database nuova o esistente. Scegliere una delle seguenti opzioni:

    • Se si sta creando una nuova istanza database, applicare il gruppo di opzioni quando viene avviata l'istanza.

    • In un'istanza database esistente, applicare il gruppo di opzioni modificando l'istanza e poi collegando il nuovo gruppo di opzioni. Per ulteriori informazioni, consulta Modifica di un'istanza database Amazon RDS.

Modifica dell'opzione Audit in SQL Server

Dopo aver abilitato l'opzione Audit in SQL Server, si possono modificare le impostazioni. Per informazioni su come modificare le impostazioni dell'opzione, consulta Modifica di un'impostazione di un'opzione.

Rimozione dell'audit in SQL Server dalle opzioni dell'istanza database

È possibile disattivare la funzione Audit in SQL Server disabilitando gli audit ed eliminando l'opzione.

Per rimuovere gli audit
  1. Disabilitare tutte le impostazioni di audit in SQL Server. Per scoprire le posizioni in cui sono in esecuzione gli audit, eseguire una query sulle visualizzazioni del catalogo di sicurezza di SQL Server. Per ulteriori informazioni, consulta la sezione Visualizzazioni del catalogo di sicurezza nella documentazione di Microsoft SQL Server.

  2. Rimuovere l'opzione dell'audit in SQL Server dall'istanza database. Scegliere una delle seguenti opzioni:

    • Eliminare l'opzione dell'audit in SQL Server dal gruppo di opzioni utilizzato dall'istanza database. Questa modifica coinvolge tutte le istanze database che utilizzano lo stesso gruppo di opzioni. Per ulteriori informazioni, consulta Rimozione di un'opzione da un gruppo di opzioni.

    • Modificare l'istanza database, quindi selezionare un gruppo di opzioni che non contenga l'opzione dell'audit in SQL Server. Questa modifica influisce solo sull'istanza database che viene modificata. È possibile specificare il gruppo di opzioni predefinito (vuoto) o un gruppo di opzioni personalizzato diverso. Per ulteriori informazioni, consulta Modifica di un'istanza database Amazon RDS.

  3. Una volta eliminata l'opzione dell'audit in SQL Server dall'istanza database, non è necessario riavviare l'istanza. Rimozione di file di audit superflui dal bucket S3.

Utilizzo dell'audit in SQL Server

È possibile controllare gli audit del server, le specifiche degli audit del server e le specifiche degli audit del database allo stesso modo in cui si controllano per i server di database locali.

Creazione degli audit

Si possono creare audit di server nello stesso modo in cui vengono creati per i server di database locali. Per informazioni su come creare audit di server, consulta la sezione CREAZIONE DI AUDIT DI SERVER nella documentazione di Microsoft SQL Server.

Per evitare errori, rispettare le seguenti restrizioni:

  • Non superare il numero massimo di 50 audit di server supportati per ogni istanza.

  • Istruire SQL Server a scrivere dati in un file binario.

  • Non utilizzare RDS_ come prefisso del nome dell'audit di server.

  • Per FILEPATH, specificare D:\rdsdbdata\SQLAudit.

  • Per MAXSIZE, specificare una dimensione compresa tra 2 MB e 50 MB.

  • Non configurare MAX_ROLLOVER_FILES o MAX_FILES.

  • Non configurare SQL Server per l'interruzione dell'istanza database se non riesce a scrivere il registro dell'audit.

Creazione delle specifiche dell'audit

È possibile creare le specifiche degli audit del server e le specifiche degli audit del database allo stesso modo in cui vengono create per i server di database locali. Per informazioni sulla creazione delle specifiche dell'audit, consulta le sezioni CREAZIONE DELLE SPECIFICHE DELL'AUDIT DEL SERVER e CREAZIONE DELLE SPECIFICHE DELL'AUDIT DEL DATABASE nella documentazione di Microsoft SQL Server.

Per evitare errori, non utilizzare RDS_ come prefisso del nome della specifica dell'audit del database o del server.

Visualizzazione dei log di audit

I log di audit vengono archiviati in D:\rdsdbdata\SQLAudit.

Quando SQL Server finisce di scrivere un file di log di audit—quando il file raggiunge la dimensione massima—Amazon RDS carica il file nel bucket S3. Se la retention è abilitata, Amazon RDS sposta il file nella cartella di retentio: D:\rdsdbdata\SQLAudit\transmitted.

Per informazioni sulla configurazione della retention, consulta Aggiunta dell'audit in SQL Server alle opzioni dell'istanza database.

I registri dell'audit vengono conservati nell'istanza database fino a quando non viene caricato il file di log dell'audit. È possibile visualizzare i registri dell'audit eseguendo il seguente comando.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\*.sqlaudit' , default , default )

Lo stesso comando si può utilizzare per visualizzare i registri dell'audit nella cartella di retention modificando il filtro in D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit' , default , default )

Utilizzo dell'audit in SQL Server con le istanze Multi-AZ

Per le istanze Multi-AZ, il processo per inviare i file di log dell'audit a Amazon S3 è simile a quello per le istanze Single-AZ. Tuttavia, vi sono alcune differenze importanti:

  • Gli oggetti delle specifiche dell'audit del database vengono replicati su tutti i nodi.

  • Gli audit del server e le relative specifiche non vengono replicate sui nodi secondari. Occorre crearli o modificarli manualmente.

Per acquisire gli audit del server o una specifica dell'audit del server da entrambi i nodi:

  1. Creare un audit del server o una specifica dell'audit del server nel nodo primario:

  2. Eseguire il failover sul nodo secondario e creare un audit del server o una specifica dell'audit del server con lo stesso nome e GUID nel nodo secondario. Utilizzare il parametro AUDIT_GUID per specificare il GUID.

Configurazione di un bucket S3

I file di log di audit vengono caricati automaticamente dall'istanza database al bucket S3. Per il bucket S3 utilizzato come destinazione dei file dell'audit valgono le seguenti restrizioni:

  • Deve trovarsi nella stessa AWS regione dell'istanza DB.

  • Non deve essere aperto al pubblico.

  • Il proprietario del bucket deve essere anche il proprietario del ruolo IAM.

La chiave di destinazione utilizzata per archiviare i dati segue questo schema di denominazion: DOC-EXAMPLE-BUCKET/key-prefix/instance-name/audit-name/node_file-name.ext

Nota

I valori del nome del bucket e del prefisso della chiave vanno configurati entrambi con l'impostazione dell'opzione (S3_BUCKET_ARN).

Lo schema è costituito dai seguenti elementi:

  • DOC-EXAMPLE-BUCKET: il nome del bucket S3.

  • key-prefix – Il prefisso della chiave personalizzata da utilizzare per i log di audit.

  • instance-name – Il nome dell'istanza Amazon RDS.

  • audit-name – Il nome dell'audit.

  • node – L'identificatore del nodo che funge da origine dell'audit (node1 o node2). Esiste un nodo per un'istanza Single-AZ e due nodi di replica per un'istanza Multi-AZ. Non si tratta di nodi primari e secondari, poiché i ruoli del nodo primario e di quello secondario cambiano nel tempo. L'identificatore del nodo è piuttosto una semplice etichetta.

    • node1 – Il primo nodo di replica (un'istanza Single-AZ ha un solo nodo).

    • node2 – Il secondo nodo di replica (un'istanza Multi-AZ ha due nodi).

  • file-name – Il nome del file di destinazione. Il nome del file è preso così com'è da SQL Server.

  • ext – L'estensione del file (zip o sqlaudit):

    • zip – Se la compressione è abilitata (impostazione predefinita).

    • sqlaudit – Se la compressione è disabilitata.

Creazione manuale di un ruolo IAM per l'audit in SQL Server

In genere, quando crei una nuova opzione, AWS Management Console crea automaticamente il ruolo IAM e la policy di fiducia IAM. Si può tuttavia creare manualmente un nuovo ruolo IAM da utilizzare con gli audit in SQL Server, in modo che l'utente possa personalizzarlo con tutti gli ulteriori requisiti che potrebbero servire. Per far ciò, l'utente crea un ruolo IAM e delega le autorizzazioni in modo che il servizio Amazon RDS possa utilizzare il bucket Amazon S3. Quando si crea un ruolo IAM, vengono collegate le policy di attendibilità e autorizzazione. La policy di attendibilità consente a Amazon RDS di assumere questo ruolo. La policy di autorizzazione definisce le operazioni che questo ruolo può eseguire. Per ulteriori informazioni, vedere Creazione di un ruolo per delegare le autorizzazioni a un AWS servizio nella Guida per l'utente di AWS Identity and Access Management.

Si possono utilizzare gli esempi riportati in questa sezione per creare le relazioni di attendibilità e le policy di autorizzazione necessarie.

Il seguente esempio mostra una relazione di attendibilità per la verifica in SQL Server. Utilizza l'entità servizio rds.amazonaws.com per autorizzare RDS a scrivere nel bucket S3. Un'entità servizio è un identificatore che viene utilizzato per concedere autorizzazioni a un servizio. Ogni volta che si autorizza l'accesso a rds.amazonaws.com, si consente a RDS di eseguire un'operazione per conto dell'utente. Per ulteriori informazioni sulle entità principali del servizio, consulta Elementi della policy JSON AWS : Entità principale.

Esempio relazione di attendibilità per la verifica in SQL Server
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Si consiglia di utilizzare le chiavi di contesto delle condizioni globali aws:SourceArn e aws:SourceAccount nelle relazioni di trust basate sulle risorse per limitare le autorizzazioni del servizio relative a una risorsa specifica. Questo è il modo più efficace per proteggersi dal problema di deputy confused.

Puoi usare le chiavi di contesto delle condizioni globali e avere il valore aws:SourceArn che contiene l'ID dell'account. In questo caso, il valore aws:SourceAccount e l'account nel valore aws:SourceArn deve utilizzare lo stesso ID account quando viene utilizzato nella stessa istruzione.

  • Utilizzare aws:SourceArn se si desidera un accesso cross-service per una singola risorsa.

  • Utilizzare aws:SourceAccount se si desidera consentire l'associazione di qualsiasi risorsa in tale account all'uso cross-service.

Nella relazione di trust, assicurati di utilizzare la chiave di contesto della condizione globale aws:SourceArn con l'Amazon Resource Name (ARN) completo delle risorse che accedono al ruolo. Perla verifica in SQL Server assicurati di includere sia il gruppo di opzioni database che le istanze database, come illustrato nell'esempio seguente.

Esempio relazione di affidabilità con la chiave di contesto delle condizioni globali per la verifica in SQL Server
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier", "arn:aws:rds:Region:my_account_ID:og:option_group_name" ] } } } ] }

Nel seguente esempio di policy di autorizzazione per la verifica in SQL Server, specifichiamo un ARN per il bucket Amazon S3. Si possono utilizzare gli ARN per identificare account, utenti o ruoli specifici a cui si desidera concedere l'accesso. Per ulteriori informazioni sull'utilizzo degli ARN, consulta la pagina Amazon Resource Names (ARN).

Esempio policy di autorizzazione per la verifica in SQL Server
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/key_prefix/*" } ] }
Nota

L's3:ListAllMyBucketsazione è necessaria per verificare che lo stesso AWS account possieda sia il bucket S3 che l'istanza DB di SQL Server. L'operazione elenca i nomi dei bucket dell'account.

Gli spazi dei nomi dei bucket S3 sono globali. Se elimini accidentalmente il bucket, un altro utente può creare un bucket con lo stesso nome in un account diverso. Quindi i dati di audit di SQL Server vengono scritti nel nuovo bucket.