

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à.

# Sicurezza con Amazon Aurora PostgreSQL
<a name="AuroraPostgreSQL.Security"></a>

Per una panoramica generale della sicurezza in Aurora, consulta [Sicurezza in ](UsingWithRDS.md). Puoi gestire la sicurezza per Amazon Aurora PostgreSQL a diversi livelli:
+ Per controllare chi può eseguire azioni di gestione di Amazon RDS sui cluster DB PostgreSQL e sulle istanze DB di Aurora, usa (IAM). AWS Identity and Access Management IAM gestisce l'autenticazione dell'identità utente prima che questi possa accedere al servizio. Gestisce inoltre l'autorizzazione, ovvero se l'utente è autorizzato a fare ciò che sta cercando di fare. L'autenticazione del database IAM è un metodo di autenticazione aggiuntivo che è possibile scegliere quando si crea un cluster di database Aurora PostgreSQL. Per ulteriori informazioni, consulta [Gestione accessi e identità per Amazon Aurora](UsingWithRDS.IAM.md).

  Se utilizzi IAM con il tuo cluster Aurora PostgreSQL DB, accedi prima con le tue credenziali IAM, prima di aprire la Console di gestione AWS console Amazon RDS all'indirizzo. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)
+ Assicurati che i cluster di database Aurora vengano creati in un cloud privato virtuale (VPC) utilizzando il servizio Amazon VPC. Per controllare i dispositivi e le istanze Amazon EC2 che possono aprire le connessioni all'endpoint e alla porta dell'istanza database per i cluster DB Aurora in un VPC, è necessario utilizzare un gruppo di sicurezza VPC. Le connessioni a endpoint e porte possono essere stabilite tramite Secure Sockets Layer (SSL). Le regole del firewall aziendale possono inoltre determinare se i dispositivi in esecuzione nell'azienda possono aprire connessioni a un'istanza database. Per ulteriori informazioni sui VPC, consulta [VPC Amazon e Amazon Aurora](USER_VPC.md).

  La tenancy VPC supportata dipende dalla classe di istanze database usata dai cluster DB di Aurora PostgresSQL. Con la tenancy VPC `default`, il cluster di database viene eseguito nell'hardware condiviso. Con la tenancy VPC `dedicated`, il cluster di database viene eseguito in un'istanza hardware dedicata. Le classi di istanza database delle prestazioni in modalità burst supportano solo la tenancy VPC di default. Le classi di istanza database delle prestazioni in modalità burst includono le classi di istanza database db.t3 e db.t4g. Tutte le altre classi di istanza database di Aurora PostgreSQL DB supportano sia il tenancy VPC di default che dedicato.

  Per ulteriori informazioni sulle classi di istanza, consulta [Classi di istanze DB Amazon Aurora](Concepts.DBInstanceClass.md). Per ulteriori informazioni sulle tenancy VPC `default` e `dedicated`, consulta [Istanze dedicate](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html) nella *Guida per l'utente di Amazon Elastic Compute Cloud*.
+ Per concedere autorizzazioni ai database PostgreSQL eseguiti sul cluster di database Amazon Aurora, puoi adottare lo stesso approccio generale utilizzato con le istanze standalone di PostgreSQL. I comandi come `CREATE ROLE`, `ALTER ROLE`, `GRANT` e `REVOKE` funzionano esattamente come nei database on-premise, ovvero in modo analogo alla modifica diretta delle tabelle dello schema del database.

  PostgreSQL gestisce i privilegi mediante i *ruoli*. Il ruolo `rds_superuser` è quello più privilegiato a livello di cluster di database Aurora PostgreSQL. Questo ruolo viene creato automaticamente e viene concesso all'utente che crea il cluster di database (l'account utente principale, `postgres` per impostazione predefinita). Per ulteriori informazioni, consulta [Informazioni su ruoli e autorizzazioni di PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Roles.md). 

Tutte le versioni disponibili di Aurora PostgreSQL, comprese le versioni 10, 11, 12, 13, 14, e successive, supportano il meccanismo SCRAM (Salted Challenge Response Authentication Mechanism) per le password come un'alternativa al digest del messaggio (MD5). Si consiglia di utilizzare SCRAM perché è più sicuro di MD5. Per ulteriori informazioni, inclusa la modalità di migrazione delle password utente del database da MD5 a SCRAM, consulta [Utilizzo delle crittografia password SCRAM per PostgreSQL](PostgreSQL_Password_Encryption_configuration.md).

## Protezione dei dati di Aurora PostgreSQL con SSL/TLS
<a name="AuroraPostgreSQL.Security.SSL"></a>

Amazon RDS supporta la crittografia SSecure Socket Layer (SSL) e Transport Layer Security (TLS) per i cluster DB Aurora PostgreSQL. In questo modo SSL/TLS, puoi crittografare una connessione tra le tue applicazioni e i cluster Aurora PostgreSQL DB. Puoi anche forzare l'uso di tutte le connessioni al tuo cluster Aurora PostgreSQL DB. SSL/TLS Amazon Aurora PostgreSQL supporta Transport Layer Security (TLS) versioni 1.1 e 1.2. Si consiglia di utilizzare TLS 1.2 per connessioni crittografate. Abbiamo aggiunto il supporto per le TLSv1.3 seguenti versioni di Aurora PostgreSQL:
+ 15.3 e tutte le versioni successive
+ 14.8 o versioni successive alla 14
+ 13.11 o versioni successive alla 13
+ 12.15 e versioni successive alla 12
+ 11.20 e versioni successive alla 11

Per informazioni generali sul SSL/TLS supporto e sui database PostgreSQL, consulta il supporto [SSL](https://www.postgresql.org/docs/current/libpq-ssl.html) nella documentazione di PostgreSQL. Per informazioni sull'utilizzo di una SSL/TLS connessione tramite JDBC, vedere [Configurazione del client nella documentazione](https://jdbc.postgresql.org/documentation/head/ssl-client.html) di PostgreSQL.

**Topics**
+ [Richiesta di una SSL/TLS connessione a un cluster Aurora PostgreSQL DB](#AuroraPostgreSQL.Security.SSL.Requiring)
+ [Determinazione dello stato della SSL/TLS connessione](#AuroraPostgreSQL.Security.SSL.Status)
+ [Configurazione di suite di cifratura per connessioni ai cluster di database Aurora PostgreSQL](#AuroraPostgreSQL.Security.SSL.ConfiguringCipherSuites)

SSL/TLS il supporto è disponibile in tutte le AWS regioni per Aurora PostgreSQL. Amazon RDS crea un SSL/TLS certificato per il cluster DB Aurora PostgreSQL al momento della creazione del cluster DB. Se abiliti la verifica del SSL/TLS certificato, il SSL/TLS certificato include l'endpoint del cluster DB come nome comune (CN) del SSL/TLS certificato per proteggerlo dagli attacchi di spoofing. 

**Per connettersi a un cluster Aurora PostgreSQL DB tramite SSL/TLS**

1. Scaricare il certificato.

   Per ulteriori informazioni sul download dei certificati, consultare [Utilizzo SSL/TLS per crittografare una connessione a un'](UsingWithRDS.SSL.md).

1. Importare il certificato nel proprio sistema operativo.

1. Connettiti al tuo cluster Aurora PostgreSQL DB tramite. SSL/TLS

   Quando ti connetti utilizzando SSL/TLS, il tuo client può scegliere se verificare o meno la catena di certificati. Se i parametri di connessione specificano `sslmode=verify-ca` o `sslmode=verify-full`, il client richiede che i certificati CA RDS siano nell'archivio attendibilità o facciano riferimento all'URL della connessione. Questo requisito è verificare la catena di certificati che firma il certificato del database.

   Quando un client, come psql o JDBC, è configurato con il SSL/TLS supporto, per impostazione predefinita il client tenta innanzitutto di connettersi al database. SSL/TLS Se il client non riesce a connettersi con SSL/TLS, torna alla connessione senza. SSL/TLS Per impostazione predefinita, l'opzione `sslmode` per i client JDBC e basati su libpq è impostata su `prefer`. 

   Utilizzare il parametro `sslrootcert` come riferimento per il certificato, ad esempio `sslrootcert=rds-ssl-ca-cert.pem`.

Di seguito è riportato un esempio di utilizzo di psql per la connessione a un cluster DB Aurora PostgreSQL.

```
$ psql -h testpg.cdhmuqifdpib.us-east-1.rds.amazonaws.com -p 5432 \
    "dbname=testpg user=testuser sslrootcert=rds-ca-2015-root.pem sslmode=verify-full"
```

### Richiesta di una SSL/TLS connessione a un cluster Aurora PostgreSQL DB
<a name="AuroraPostgreSQL.Security.SSL.Requiring"></a>

Per richiedere SSL/TLS connessioni al cluster Aurora PostgreSQL DB, usa il parametro. `rds.force_ssl`
+ Per richiedere SSL/TLS connessioni, imposta il valore del `rds.force_ssl` parametro su 1 (attivo).
+ Per disattivare SSL/TLS le connessioni richieste, impostate il valore del `rds.force_ssl` parametro su 0 (disattivato).

Il valore predefinito di questo parametro dipende dalla versione di Aurora PostgreSQL:
+ Per Aurora PostgreSQL versioni 17 e successive: il valore predefinito è 1 (on).
+ Per Aurora PostgreSQL versioni 16 e precedenti: il valore predefinito è 0 (off).

**Nota**  
Quando si esegue un aggiornamento di versione principale da Aurora PostgreSQL versione 16 o precedente alla versione 17 o successiva, il valore predefinito del parametro cambia da 0 (off) a 1 (on). Questa modifica può causare errori di connettività per le applicazioni non configurate per SSL. È possibile ripristinare il comportamento predefinito precedente impostando questo parametro su 0 (disattivato).

Per ulteriori informazioni sulla gestione dei parametri, consultare [Gruppi di parametri per Amazon Aurora](USER_WorkingWithParamGroups.md).

L'aggiornamento del `rds.force_ssl` parametro imposta anche il parametro `ssl` PostgreSQL su 1 (on) e modifica il file `pg_hba.conf` del cluster DB per supportare la nuova configurazione. SSL/TLS 

Quando il `rds.force_ssl` parametro è impostato su 1 per un cluster DB, quando ci si connette viene visualizzato un output simile al seguente, a indicare che SSL/TLS ora è necessario:

```
$ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser
psql (9.3.12, server 9.4.4)
WARNING: psql major version 9.3, server major version 9.4.
Some psql features might not work.
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=>
```

### Determinazione dello stato della SSL/TLS connessione
<a name="AuroraPostgreSQL.Security.SSL.Status"></a>

Lo stato crittografato della tua connessione è indicato nel banner di accesso quando ti connetti al cluster DB:

```
Password for user master: 
psql (9.3.12) 
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) 
Type "help" for help.   

postgres=>
```

È inoltre possibile caricare l'`sslinfo`estensione e quindi richiamare la `ssl_is_used()` funzione per determinare se SSL/TLS viene utilizzata. La funzione restituisce `t` se la connessione è in uso SSL/TLS, altrimenti ritorna`f`.

```
postgres=> create extension sslinfo;
CREATE EXTENSION

postgres=> select ssl_is_used();
 ssl_is_used
---------
t
(1 row)
```

È possibile utilizzare il `select ssl_cipher()` comando per determinare il SSL/TLS codice:

```
postgres=> select ssl_cipher();
ssl_cipher
--------------------
DHE-RSA-AES256-SHA
(1 row)
```

 Se abiliti `set rds.force_ssl` e riavvi il tuo cluster DB, le connessioni non SSL vengono rifiutate con il seguente messaggio:

```
$ export PGSSLMODE=disable
$ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser
psql: FATAL: no pg_hba.conf entry for host "host.ip", user "someuser", database "postgres", SSL off
$
```

Per informazioni sull'opzione `sslmode`, consulta l'argomento relativo alle [funzioni di controllo della connessione del database](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLMODE) nella documentazione di PostgreSQL.

### Configurazione di suite di cifratura per connessioni ai cluster di database Aurora PostgreSQL
<a name="AuroraPostgreSQL.Security.SSL.ConfiguringCipherSuites"></a>

Utilizzando suite di cifratura configurabili, è possibile avere maggiore controllo sulla sicurezza delle connessioni al database. È possibile specificare un elenco di suite di crittografia che si desidera consentire per proteggere le SSL/TLS connessioni dei client al database. Con le suite di cifratura, è possibile controllare la crittografia di connessione accettata dal server di database. Ciò aiuta a prevenire l'uso di crittografie obsolete o non sicure.

Le suite di cifratura configurabili sono supportate nelle versioni 11.8 e successive di Aurora PostgreSQL.

Per specificare l'elenco di cifrature consentite per la crittografia delle connessioni, modifica il parametro del cluster `ssl_ciphers`. Imposta il `ssl_ciphers` parametro su una stringa di valori di cifratura separati da virgole in un gruppo di parametri del cluster utilizzando l'API Console di gestione AWS, the o RDS. AWS CLI Per impostare i parametri del cluster, consulta [Modifica dei parametri in un gruppo di parametri del cluster DB in Amazon Aurora](USER_WorkingWithParamGroups.ModifyingCluster.md).

La tabella seguente mostra le cifrature supportate per le versioni valide del motore Aurora PostgreSQL.


| Versioni del motore Aurora PostgreSQL | Cifrature supportate | TLS 1.1 | TLS 1.2 | TLS 1.3 | 
| --- | --- | --- | --- | --- | 
| 9.6, 10.20 e versioni precedenti, 11.15 e versioni precedenti, 12.10 e versioni precedenti, 13.6 e versioni precedenti | DHE-RSA-AES128-SHA<br />DHE-RSA-AES128-SHA256<br />DHE-RSA-AES128-GCM-SHA256<br />DHE-RSA-AES256-SHA<br />DHE-RSA-AES256-SHA256<br />DHE-RSA-AES256-GCM-SHA384<br />ECDHE-ECDSA-AES256-SHA<br />ECDHE-ECDSA-AES256-GCM-SHA384<br />ECDHE-RSA-AES256-SHA384<br />ECDHE-RSA-AES128-SHA<br />ECDHE-RSA-AES128-SHA256<br />ECDHE-RSA-AES128-GCM-SHA256<br />ECDHE-RSA-AES256-SHA<br />ECDHE-RSA-AES256-GCM-SHA384 | Sì<br />No<br />No<br />No<br />No<br />No<br />Sì<br />No<br />No<br />Sì<br />No<br />No<br />Sì<br />No | No<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì | No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No | 
| 10.21, 11.16, 12.11, 13.7, 14.3 e 14.4 | ECDHE-RSA-AES128-SHATLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384<br />TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384<br />TLS\_RSA\_WITH\_AES\_256\_CBC\_SHA<br />TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256<br />TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_CHACHA20\_POLY1305\_SHA256 | Sì<br />No<br />Sì<br />No<br />Sì<br />No<br />Sì<br />No<br />No<br />Sì<br />No<br />Sì<br />No | Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì | No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No | 
| 10.22, 11.17, 12.12, 13.8, 14.5 e 15.2 | TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384<br />TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384<br />TLS\_RSA\_WITH\_AES\_256\_CBC\_SHA<br />TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256<br />TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA256<br />TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_CHACHA20\_POLY1305\_SHA256 | Sì<br />No<br />No<br />Sì<br />No<br />Sì<br />No<br />No<br />Sì<br />No<br />No<br />Sì<br />No<br />Sì<br />Sì<br />No | Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì | No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No | 
| 11.20, 12.15, 13.11, 14.8, 15.3, 16.1 e versioni successive | TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_CBC\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_128\_GCM\_SHA256<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384<br />TLS\_RSA\_WITH\_AES\_256\_GCM\_SHA384<br />TLS\_RSA\_WITH\_AES\_256\_CBC\_SHA<br />TLS\_RSA\_WITH\_AES\_128\_GCM\_SHA256<br />TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA256<br />TLS\_RSA\_WITH\_AES\_128\_CBC\_SHA<br />TLS\_ECDHE\_RSA\_WITH\_CHACHA20\_POLY1305\_SHA256<br />TLS\_AES\_128\_GCM\_SHA256<br />TLS\_AES\_256\_GCM\_SHA384 | Sì<br />No<br />No<br />Sì<br />No<br />Sì<br />No<br />No<br />Sì<br />No<br />No<br />Sì<br />No<br />Sì<br />Sì<br />No<br />No<br />No | Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />Sì<br />No<br />No | No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />No<br />Sì<br />Sì | 

È possibile utilizzare anche il comando della CLI [describe-engine-default-cluster-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-cluster-parameters.html) per determinare quali suite di cifratura sono attualmente supportate per una famiglia del gruppo di parametri specifici. L'esempio seguente mostra come ottenere i valori consentiti per il parametro del cluster `ssl_cipher` per Aurora PostgreSQL 11.

```
aws rds describe-engine-default-cluster-parameters --db-parameter-group-family aurora-postgresql11
                
    ...some output truncated...
	{
		"ParameterName": "ssl_ciphers",
		"Description": "Sets the list of allowed TLS ciphers to be used on secure connections.",
		"Source": "engine-default",
		"ApplyType": "dynamic",
		"DataType": "list",
		"AllowedValues": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384,
		ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,
		TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
		TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
		"IsModifiable": true,
		"MinimumEngineVersion": "11.8",
		"SupportedEngineModes": [
			"provisioned"
		]
	},
    ...some output truncated...
```

Il parametro `ssl_ciphers` è impostato per tutte le suite di cifrature consentite. Per ulteriori informazioni sulla crittografia, consulta la variabile [ssl\_ciphers](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-SSL-CIPHERS) nella documentazione di PostgreSQL. 