

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Accès à votre cluster
<a name="accessing-memorydb"></a>

Vos instances MemoryDB sont conçues pour être accessibles via une instance Amazon EC2 .

Vous pouvez accéder à votre nœud MemoryDB depuis une EC2 instance Amazon dans le même Amazon VPC. Ou, en utilisant le peering VPC, vous pouvez accéder à votre nœud MemoryDB depuis un Amazon dans un EC2 autre Amazon VPC.

**Topics**
+ [Accordez l'accès à votre cluster](#grant-access)
+ [Accès aux ressources de MemoryDB depuis l'extérieur AWS](#access-from-outside-aws)

## Accordez l'accès à votre cluster
<a name="grant-access"></a>

Vous ne pouvez vous connecter à votre cluster MemoryDB qu'à partir d'une EC2 instance Amazon exécutée dans le même Amazon VPC. Dans ce cas, vous devez accorder l'accès au réseau au cluster.

**Pour accorder l'accès réseau à un cluster, à partir d'un groupe de sécurité Amazon VPC**

1. Connectez-vous à la EC2 console Amazon AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le volet de navigation de gauche, sous **Réseau et sécurité**, choisissez **Security Groups**.

1. Dans la liste des groupes de sécurité, choisissez le groupe de sécurité de votre Amazon VPC. *À moins que vous n'ayez créé un groupe de sécurité pour l'utilisation de MemoryDB, ce groupe de sécurité sera nommé par défaut.*

1. Choisissez l'onglet **Entrant** et effectuez les opérations suivantes :

   1. Choisissez **Edit** (Modifier).

   1. Choisissez **Ajouter une règle**.

   1. Dans la colonne **Type**, choisissez **Règle TCP personnalisée**.

   1. Dans la zone **Port range**, tapez le numéro de port de votre nœud de cluster de Ce numéro doit être le même que celui que vous avez spécifié lorsque vous avez lancé le cluster. Le port par défaut pour Valkey et Redis OSS est. **6379**

   1. Dans le champ **Source**, choisissez **Anywhere** dont la plage de ports est comprise (0.0.0.0/0) afin que toute EC2 instance Amazon que vous lancez au sein de votre Amazon VPC puisse se connecter à vos nœuds MemoryDB.
**Important**  
L'ouverture du cluster MemoryDB à 0.0.0.0/0 n'expose pas le cluster à Internet car il ne possède aucune adresse IP publique et n'est donc pas accessible depuis l'extérieur du VPC. Cependant, le groupe de sécurité par défaut peut être appliqué à d'autres EC2 instances Amazon du compte du client, et ces instances peuvent avoir une adresse IP publique. Si ces instances exécutent un service sur le port par défaut, ce service peut être exposé accidentellement. Par conséquent, nous vous recommandons de créer un groupe de sécurité VPC qui sera utilisé exclusivement par MemoryDB. Pour plus d'informations, consultez [Groupes de sécurité personnalisés](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#creating-your-own-security-groups).

   1. Choisissez **Enregistrer**.

Lorsque vous lancez une EC2 instance Amazon dans votre Amazon VPC, cette instance pourra se connecter à votre cluster MemoryDB.

## Accès aux ressources de MemoryDB depuis l'extérieur AWS
<a name="access-from-outside-aws"></a>

MemoryDB est un service conçu pour être utilisé en interne dans votre VPC. L'accès externe est déconseillé en raison de la latence du trafic Internet et des problèmes de sécurité. Toutefois, si un accès externe à MemoryDB est requis à des fins de test ou de développement, il peut être effectué via un VPN.

À l'aide du AWS Client VPN, vous autorisez l'accès externe à vos nœuds MemoryDB avec les avantages suivants :
+ Accès restreint aux utilisateurs approuvés ou aux clés d'authentification
+ Trafic crypté entre le client VPN et le point de terminaison AWS VPN ;
+ Accès limité à certains sous-réseaux ou nœuds
+ Révocation facile de l'accès d'utilisateurs ou de clés d'authentification
+ Audit des connexions

Les procédures suivantes montrent comment :

**Topics**
+ [Création d'une autorité de certification](#create-cert)
+ [Configuration des composants VPN du AWS client](#configure-vpn-components)
+ [Configuration du client VPN](#configure-vpn-client)

### Création d'une autorité de certification
<a name="create-cert"></a>

Il est possible de créer une autorité de certification (CA) en utilisant différents outils ou techniques. Nous suggérons d'utiliser l'utilitaire easy-rsa, fourni par le projet [OpenVPN](https://openvpn.net/community-resources/openvpn-project/). Quelle que soit l'option que vous choisissez, assurez-vous de garder les clés en sécurité. La procédure suivante télécharge les scripts easy-rsa, puis crée l'autorité de certification et les clés pour authentifier le premier client VPN :
+ Pour créer les certificats initiaux, ouvrez un terminal et procédez comme suit :
  + `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`

  Un sous-répertoire **pki** contenant les certificats sera créé sous **easy-rsa**.
+ Soumettez le certificat du serveur au gestionnaire de AWS certificats (ACM) :
  + Dans la console ACM, sélectionnez **Certificate Manager**.
  + Sélectionnez **Import Certificate (Importer un certificat)**.
  + Entrez le certificat de clé publique disponible dans le fichier `easy-rsa/pki/issued/server.crt` dans le champ **Corps du certificat**.
  + Collez la clé privée disponible dans `easy-rsa/pki/private/server.key` dans le champ **Clé privée du certificat**. Assurez-vous de sélectionner toutes les lignes entre `BEGIN AND END PRIVATE KEY` (y compris les lignes `BEGIN` et `END`).
  + Collez la clé publique de l'autorité de certification disponible dans le fichier `easy-rsa/pki/ca.crt` dans le champ **Chaîne de certificats**.
  + Sélectionnez **Vérifier et importer**.
  + Sélectionnez **Importer**.

  Pour envoyer les certificats du serveur à ACM à l'aide de la AWS CLI, exécutez la commande suivante : `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`

  Notez l'ARN du certificat pour un usage futur.

### Configuration des composants VPN du AWS client
<a name="configure-vpn-components"></a>

**Utilisation de la AWS console**

Sur la AWS console, sélectionnez **Services**, puis **VPC**.

Sous **Virtual Private Network (Réseau privé virtuel)**, sélectionnez **Client VPN Endpoints (Points de terminaison VPN client)** et procédez comme suit :

**Configuration des composants VPN du AWS Client**
+ Sélectionnez **Create Client VPN Endpoint (Créer un point de terminaison VPN client)**.
+ Spécifiez les options suivantes :
  + ** IPv4 CIDR client** : utilisez un réseau privé avec un masque de réseau d'au moins la plage /22. Assurez-vous que le sous-réseau sélectionné n'est pas en conflit avec les adresses des réseaux VPC. Exemple : 10.0.0.0/22.
  + Dans **Server certificate ARN (ARN du certificat de serveur)**, sélectionnez l'ARN du certificat que vous venez d'importer.
  + Sélectionnez **Use mutual authentication (Utiliser l'authentification mutuelle)**.
  + Dans **Client certificate ARN (ARN du certificat de client)**, sélectionnez l'ARN du certificat que vous venez d'importer.
  + Sélectionnez **Create Client VPN Endpoint (Créer un point de terminaison VPN client)**.

**En utilisant le AWS CLI**

Exécutez la commande suivante :

`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 `

Exemple de sortie :

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

**Association des réseaux cibles au point de terminaison VPN**
+ Sélectionnez le nouveau point de terminaison VPN, puis sélectionnez l'onglet **Associations**.
+ Sélectionnez **Associate (Associer)**, puis spécifiez les options suivantes.
  + **VPC** : sélectionnez le VPC du cluster MemoryDB.
  + Sélectionnez l'un des réseaux du cluster MemoryDB. En cas de doute, passez en revue les réseaux dans les **groupes de sous-réseaux** du tableau de bord MemoryDB.
  + Sélectionnez **Associate (Associer)**. Si nécessaire, répétez les étapes pour les réseaux restants.

**En utilisant le AWS CLI**

Exécutez la commande suivante :

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

Exemple de sortie :

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

**Examen du groupe de sécurité VPN**

Le point de terminaison VPN adopte automatiquement le groupe de sécurité par défaut du VPC. Vérifiez les règles entrantes et sortantes et confirmez si le groupe de sécurité autorise le trafic du réseau VPN (défini dans les paramètres du point de terminaison VPN) vers les réseaux MemoryDB sur les ports de service (par défaut, 6379 pour Redis).

Si vous devez modifier le groupe de sécurité affecté au point de terminaison VPN, procédez comme suit :
+ Sélectionnez le groupe de sécurité en cours.
+ Sélectionnez **Apply Security Group (Appliquer le groupe de sécurité)**.
+ Sélectionnez le nouveau groupe de sécurité.

**En utilisant le AWS CLI**

Exécutez la commande suivante :

`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`

Exemple de sortie :

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

**Note**  
Le groupe de sécurité MemoryDB doit également autoriser le trafic provenant des clients VPN. Les adresses des clients sont masquées avec l'adresse du point de terminaison VPN, selon le réseau VPC. Par conséquent, considérez le réseau VPC (et non le réseau des clients VPN) lors de la création de la règle entrante sur le groupe de sécurité MemoryDB.

**Autorisation de l'accès VPN aux réseaux de destination**

Dans l'onglet **Authorization (Autorisation)**, sélectionnez **Authorize Ingress (Autoriser l'entrée)** et spécifiez les éléments suivants :
+ Réseau de destination pour activer l'accès : utilisez 0.0.0.0/0 pour autoriser l'accès à n'importe quel réseau (y compris Internet) ou limitez les réseaux/hôtes MemoryDB.
+ Sous **Grant access to: (Accorder l'accès à :)**, sélectionnez **Allow access to all users (Autoriser l'accès à tous les utilisateurs)**.
+ Sélectionnez **Add Authorization Rules (Ajouter des règles d'autorisation)**.

**En utilisant le AWS CLI**

Exécutez la commande suivante :

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

Exemple de sortie : 

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

**Autorisation de l'accès à Internet à partir des clients VPN**

Si vous avez besoin de naviguer sur Internet via le VPN, vous devez créer un routage supplémentaire. Sélectionnez l'onglet **Route Table (Table de routage)**, puis sélectionnez **Create Route (Créer un routage)** :
+ Destination du routage : 0.0.0.0/0
+ **Target VPC Subnet ID (ID de sous-réseau du VPC cible)** : sélectionnez l'un des sous-réseaux associés ayant accès à Internet.
+ Sélectionnez **Create Route (Créer un routage)**.

**En utilisant le AWS CLI**

Exécutez la commande suivante :

`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`

Exemple de sortie :

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

### Configuration du client VPN
<a name="configure-vpn-client"></a>

Sur le tableau de bord du AWS client VPN, sélectionnez le point de terminaison VPN récemment créé et sélectionnez **Télécharger la configuration du client**. Copiez le fichier de configuration, puis les fichiers `easy-rsa/pki/issued/client1.domain.tld.crt` et `easy-rsa/pki/private/client1.domain.tld.key`. Modifiez le fichier de configuration et modifiez ou ajoutez les paramètres suivants :
+ cert : ajoutez une nouvelle ligne avec le paramètre cert pointant vers le fichier `client1.domain.tld.crt`. Utilisez le chemin complet du fichier. Exemple : `cert /home/user/.cert/client1.domain.tld.crt`
+ key : ajoutez une nouvelle ligne avec le paramètre key pointant vers le fichier `client1.domain.tld.key`. Utilisez le chemin complet du fichier. Exemple : `key /home/user/.cert/client1.domain.tld.key`

Établissez la connexion VPN à l'aide de la commande : `sudo openvpn --config downloaded-client-config.ovpn`

**Révocation de l'accès**

Si vous devez invalider l'accès à partir d'une clé client particulière, la clé doit être révoquée dans l'autorité de certification. Soumettez ensuite la liste de révocation au AWS Client VPN.

Révocation de la clé avec easy-rsa : 
+ `cd easy-rsa`
+ `./easyrsa3/easyrsa revoke client1.domain.tld`
+ Entrez « yes » pour continuer, ou toute autre entrée pour abandonner.

  `Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl`
+ Une liste de révocation de certificats (CRL) à jour a été créée. Fichier CRL : `/home/user/easy-rsa/pki/crl.pem` 

Importation de la liste de révocation dans le VPN du AWS Client :
+ Sur le AWS Management Console, sélectionnez **Services**, puis **VPC**.
+ Sélectionnez **Client VPN Endpoints (Points de terminaison VPN client)**.
+ Sélectionnez le point de terminaison VPN client, puis sélectionnez **Actions** -> **Import Client Certificate CRL (Importer une liste de révocation des certificats de client)**.
+ Collez le contenu du fichier `crl.pem`. 

**En utilisant le AWS CLI**

Exécutez la commande suivante :

`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 `

Exemple de sortie :

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