Accesso al cluster - Amazon MemoryDB

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

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

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

Concedi l'accesso al tuo cluster

Puoi connetterti al tuo cluster MemoryDB solo da un'istanza Amazon EC2 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 AWS Management Console e apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

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

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

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

    1. Scegli Modifica.

    2. Scegli Aggiungi regola.

    3. Nella colonna Tipo, scegli Regola TCP personalizzata.

    4. 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 Redis OSS è. 6379

    5. Nella casella Source, scegli Anywhere con l'intervallo di porte (0.0.0.0/0) in modo che qualsiasi istanza Amazon EC2 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 di default può essere applicato ad altre istanze Amazon EC2 nell'account del cliente, che 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.

    6. Selezionare Salva.

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

Accesso alle risorse di MemoryDB dall'esterno AWS

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:

Creare un'autorità di certificazione

È possibile creare un'autorità di certificazione (CA) utilizzando tecniche o strumenti diversi. Suggeriamo l'utilità easy-rsa, fornita dal progetto OpenVPN. 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

    • 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

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 maschera di rete di almeno /22 nel range. 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

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 AWS Management Console, 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 }