

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

# Accesso al cluster
<a name="accessing-memorydb"></a>

Le tue istanze MemoryDB sono progettate per essere accessibili tramite un'istanza Amazon. EC2 

Puoi accedere al tuo nodo MemoryDB da EC2 un'istanza Amazon nello stesso Amazon VPC. Oppure, utilizzando il peering VPC, puoi accedere al tuo nodo MemoryDB da un Amazon in un EC2 altro Amazon VPC.

**Topics**
+ [Concedi l'accesso al tuo cluster](#grant-access)
+ [Accesso alle risorse di MemoryDB dall'esterno AWS](#access-from-outside-aws)

## Concedi l'accesso al tuo cluster
<a name="grant-access"></a>

Puoi connetterti al tuo cluster MemoryDB solo da EC2 un'istanza Amazon in esecuzione nello stesso Amazon VPC. In questo caso sarà necessario concedere al cluster l'ingresso di rete.

**Per concedere l'ingresso di rete a un cluster da un gruppo di sicurezza Amazon VPC**

1. Accedi a Console di gestione AWS e apri la EC2 console Amazon all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione a sinistra, in **Rete e sicurezza**, scegli **Gruppi di sicurezza**.

1. Dall'elenco dei gruppi di sicurezza, scegli il gruppo di sicurezza per il VPC Amazon. *A meno che tu non abbia creato un gruppo di sicurezza per l'uso di MemoryDB, questo gruppo di sicurezza verrà denominato predefinito.*

1. Scegli la scheda **In entrata**, quindi procedi come segue:

   1. Scegli **Modifica**.

   1. Scegli **Aggiungi regola**.

   1. Nella colonna **Tipo**, scegli **Regola TCP personalizzata**.

   1. Nella casella **Intervallo porta**, digita il numero di porta per il nodo del cluster. Questo numero deve essere lo stesso specificato durante l'avvio del cluster. La porta predefinita per Valkey e Redis OSS è. **6379**

   1. Nella casella **Source**, scegli **Anywhere** con l'intervallo di porte (0.0.0.0/0) in modo che qualsiasi EC2 istanza Amazon che avvii all'interno del tuo Amazon VPC possa connettersi ai tuoi nodi MemoryDB.
**Importante**  
L'apertura del cluster MemoryDB a 0.0.0.0/0 non espone il cluster a Internet perché non ha un indirizzo IP pubblico e quindi non è accessibile dall'esterno del VPC. Tuttavia, il gruppo di sicurezza predefinito può essere applicato ad altre EC2 istanze Amazon nell'account del cliente e tali istanze possono avere un indirizzo IP pubblico. Se eseguono qualche attività sulla porta predefinita, il servizio può essere esposto involontariamente. Pertanto, consigliamo di creare un gruppo di sicurezza VPC che verrà utilizzato esclusivamente da MemoryDB. Per ulteriori informazioni, consulta [Gruppi di sicurezza personalizzati](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#creating-your-own-security-groups).

   1. Scegli **Save** (Salva).

Quando avvii un' EC2 istanza Amazon nel tuo Amazon VPC, quell'istanza sarà in grado di connettersi al tuo cluster MemoryDB.

## Accesso alle risorse di MemoryDB dall'esterno AWS
<a name="access-from-outside-aws"></a>

MemoryDB è un servizio progettato per essere utilizzato internamente al tuo VPC. L'accesso esterno è sconsigliato a causa della latenza del traffico Internet e dei problemi di sicurezza. Tuttavia, se l'accesso esterno a MemoryDB è necessario per scopi di test o sviluppo, è possibile farlo tramite una VPN.

Utilizzando AWS Client VPN, consenti l'accesso esterno ai tuoi nodi MemoryDB con i seguenti vantaggi:
+ Accesso limitato agli utenti approvati o alle chiavi di autenticazione;
+ Traffico crittografato tra il client VPN e l'endpoint AWS VPN;
+ Accesso limitato a sottoreti o nodi specifici;
+ Facile revoca dell'accesso agli utenti o alle chiavi di autenticazione;
+ Audit delle connessioni.

Le seguenti procedure dimostrano come:

**Topics**
+ [Creare un'autorità di certificazione](#create-cert)
+ [Configurazione dei componenti VPN del client AWS](#configure-vpn-components)
+ [Configurazione del client VPN](#configure-vpn-client)

### Creare un'autorità di certificazione
<a name="create-cert"></a>

È possibile creare un'autorità di certificazione (CA) utilizzando tecniche o strumenti diversi. Suggeriamo l'utilità easy-rsa, fornita dal progetto [OpenVPN](https://openvpn.net/community-resources/openvpn-project/). Indipendentemente dall'opzione scelta, assicurati di conservare le chiavi al sicuro. La procedura seguente scarica gli script easy-rsa, crea l'autorità di certificazione e le chiavi per autenticare il primo client VPN:
+ Per creare i certificati iniziali, apri un terminale e procedi come segue:
  + `git clone`[https://github.com/OpenVPN/easy-rsa](https://github.com/OpenVPN/easy-rsa)
  + `cd easy-rsa`
  + `./easyrsa3/easyrsa init-pki`
  + `./easyrsa3/easyrsa build-ca nopass`
  + `./easyrsa3/easyrsa build-server-full server nopass`
  + `./easyrsa3/easyrsa build-client-full client1.domain.tld nopass`

  Una sottodirectory **pki** contenente i certificati verrà creata sotto **easy-rsa**.
+ Invia il certificato del server al gestore dei AWS certificati (ACM):
  + Nella console ACM scegli **Gestione certificati**.
  + Scegli **Importa certificato**.
  + Immetti il certificato della chiave pubblica disponibile nel file `easy-rsa/pki/issued/server.crt` nel campo **Corpo certificato**.
  + Incolla la chiave privata disponibile in `easy-rsa/pki/private/server.key` nel campo **Chiave privata certificato**. Assicurarsi di scegliere tutte le righe tra `BEGIN AND END PRIVATE KEY` (comprese le righe `BEGIN` ed `END`).
  + Incolla la chiave pubblica CA disponibile nel file `easy-rsa/pki/ca.crt` nel campo **Catena di certificati**.
  + Scegli **Verifica e importa**.
  + Scegli **Importa**.

  Per inviare i certificati del server ad ACM utilizzando la AWS CLI, esegui il seguente comando: `aws acm import-certificate --certificate fileb://easy-rsa/pki/issued/server.crt --private-key file://easy-rsa/pki/private/server.key --certificate-chain file://easy-rsa/pki/ca.crt --region region`

  Annota il certificato ARN per uso futuro.

### Configurazione dei componenti VPN del client AWS
<a name="configure-vpn-components"></a>

**Utilizzo della console AWS **

Sulla AWS console, seleziona **Servizi** e poi **VPC**.

In **Rete privata virtuale**, seleziona **Endpoint VPN client** ed esegui le operazioni seguenti:

**Configurazione dei componenti AWS Client VPN**
+ Seleziona **Crea endpoint VPN client**.
+ Puoi specificare le seguenti opzioni:
  + **Client IPv4 CIDR**: utilizza una rete privata con una netmask di almeno un intervallo /22. Assicurati che la sottorete selezionata non sia in conflitto con gli indirizzi delle reti VPC. Esempio: 10.0.0.0/22.
  + In **Server certificate ARN (ARN certificato server)**, seleziona l'ARN del certificato precedentemente importato.
  + Seleziona **Use mutual authentication (Utilizza autenticazione reciproca)**.
  + In **Client certificate ARN (ARN certificato client)**, seleziona l'ARN del certificato precedentemente importato.
  + Seleziona **Crea endpoint VPN client**.

**Usando il AWS CLI**

Esegui il comando seguente:

`aws ec2 create-client-vpn-endpoint --client-cidr-block "10.0.0.0/22" --server-certificate-arn arn:aws:acm:us-east-1:012345678912:certificate/0123abcd-ab12-01a0-123a-123456abcdef --authentication-options Type=certificate-authentication,,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:012345678912:certificate/123abcd-ab12-01a0-123a-123456abcdef} --connection-log-options Enabled=false `

Output di esempio:

`"ClientVpnEndpointId": "cvpn-endpoint-0123456789abcdefg", "Status": { "Code": "pending-associate" }, "DnsName": "cvpn-endpoint-0123456789abcdefg.prod.clientvpn.us-east-1.amazonaws.com" } `

**Associazione delle reti di destinazione all'endpoint VPN**
+ Seleziona il nuovo endpoint VPN, quindi scegli la scheda **Associazioni**.
+ Seleziona **Associa** e specifica le seguenti opzioni.
  + **VPC: seleziona il VPC** del cluster MemoryDB.
  + Seleziona una delle reti del cluster MemoryDB. In caso di dubbio, esamina le reti nei **gruppi di sottorete** sulla dashboard di MemoryDB.
  + Seleziona **Associa**. Se necessario, ripeti le fasi per le reti rimanenti.

**Usando il AWS CLI**

Esegui il comando seguente:

`aws ec2 associate-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --subnet-id subnet-0123456789abdcdef`

Output di esempio:

`"Status": { "Code": "associating" }, "AssociationId": "cvpn-assoc-0123456789abdcdef" } `

**Verifica del gruppo di sicurezza VPN**

L'endpoint VPN adotta automaticamente il gruppo di sicurezza di default del VPC. Controlla le regole in entrata e in uscita e conferma se il gruppo di sicurezza consente il traffico dalla rete VPN (definita nelle impostazioni dell'endpoint VPN) alle reti MemoryDB sulle porte di servizio (per impostazione predefinita, 6379 per Redis).

Se è necessario modificare il gruppo di sicurezza assegnato all'endpoint VPN, procedi come segue:
+ Seleziona il gruppo di sicurezza corrente.
+ Seleziona **Apply Security Group (Applica gruppo di sicurezza)**.
+ Scegli il nuovo gruppo di sicurezza.

**Usando il AWS CLI**

Esegui il comando seguente:

`aws ec2 apply-security-groups-to-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefga  --vpc-id vpc-0123456789abdcdef --security-group-ids sg-0123456789abdcdef`

Output di esempio:

`"SecurityGroupIds": [ "sg-0123456789abdcdef" ] } `

**Nota**  
Il gruppo di sicurezza MemoryDB deve inoltre consentire il traffico proveniente dai client VPN. Gli indirizzi dei client saranno mascherati con l'indirizzo dell'endpoint VPN, in base alla rete VPC. Pertanto, considera la rete VPC (non la rete dei client VPN) quando crei la regola in entrata sul gruppo di sicurezza MemoryDB.

**Autorizzazione dell'accesso VPN alle reti di destinazione**

Nella scheda **Authorization (Autorizzazione)** seleziona **Authorize Ingress (Autorizza ingresso)** e specifica quanto segue:
+ Rete di destinazione per consentire l'accesso: usa 0.0.0.0/0 per consentire l'accesso a qualsiasi rete (inclusa Internet) o limita le reti/gli host di MemoryDB.
+ In **Grant access to: (Concedi accesso a:)**, seleziona **Allow access to all users (Consenti accesso a tutti gli utenti)**.
+ Seleziona **Add Authorization Rules (Aggiungi regole di autorizzazione)**.

**Usando il AWS CLI**

Esegui il comando seguente:

`aws ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --target-network-cidr 0.0.0.0/0 --authorize-all-groups`

Output di esempio: 

`{ "Status": { "Code": "authorizing" } }`

**Autorizzazione dell'accesso a Internet dai client VPN**

Se è necessario navigare in Internet tramite la VPN, dovrai creare una route aggiuntiva. Seleziona la scheda **Route Table (Tabella di routing)** e quindi seleziona **Create Route (Crea route)**:
+ Destinazione route: 0.0.0.0/0
+ **Target VPC Subnet ID (ID sottorete VPC di destinazione)**: seleziona una delle sottoreti associate con accesso a Internet.
+ Seleziona **Create Route (Crea route)**.

**Usando il AWS CLI**

Esegui il comando seguente:

`aws ec2 create-client-vpn-route --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --destination-cidr-block 0.0.0.0/0 --target-vpc-subnet-id subnet-0123456789abdcdef`

Output di esempio:

`{ "Status": { "Code": "creating" } } `

### Configurazione del client VPN
<a name="configure-vpn-client"></a>

Nella dashboard AWS Client VPN, seleziona l'endpoint VPN creato di recente e seleziona **Scarica la configurazione del client**. Copia il file di configurazione e i file `easy-rsa/pki/issued/client1.domain.tld.crt` e `easy-rsa/pki/private/client1.domain.tld.key`. Modifica il file di configurazione e modifica o aggiungi i seguenti parametri:
+ cert: aggiungi una nuova riga con il parametro cert che punta al file `client1.domain.tld.crt`. Usa il percorso completo del file. Esempio: `cert /home/user/.cert/client1.domain.tld.crt`
+ cert: key: aggiungi una nuova riga con la chiave del parametro che punta al file `client1.domain.tld.key`. Usa il percorso completo del file. Esempio: `key /home/user/.cert/client1.domain.tld.key`

Stabilisci la connessione VPN con il comando: `sudo openvpn --config downloaded-client-config.ovpn`

**Revoca dell'accesso**

Se è necessario invalidare l'accesso a una particolare chiave client, la chiave deve essere revocata nella CA. Quindi invia l'elenco delle revoche a AWS Client VPN.

Revoca la chiave con easy-rsa: 
+ `cd easy-rsa`
+ `./easyrsa3/easyrsa revoke client1.domain.tld`
+ Inserisci "sì" per continuare o qualsiasi altro input per interrompere.

  `Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl`
+ È stato creato un file CRL aggiornato. File CRL: `/home/user/easy-rsa/pki/crl.pem` 

Importazione dell'elenco delle revoche nella AWS Client VPN:
+ Sul Console di gestione AWS, seleziona **Servizi** e poi **VPC**.
+ Seleziona **Client VPN Endpoints (Endpoint client VPN)**.
+ Seleziona l'endpoint VPN client e quindi seleziona **Actions (Operazioni)** -> **Import Client Certificate CRL (Importa CRL certificato client)**.
+ Incolla il contenuto del file `crl.pem`: 

**Usando il AWS CLI**

Esegui il comando seguente:

`aws ec2 import-client-vpn-client-certificate-revocation-list --certificate-revocation-list file://./easy-rsa/pki/crl.pem --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg `

Output di esempio:

`Example output: { "Return": true } `