Accès à votre cluster - Amazon MemoryDB

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

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

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

Accordez l'accès à votre cluster

Vous ne pouvez vous connecter à votre cluster MemoryDB qu'à partir d'une instance Amazon EC2 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 console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/ec2/.

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

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

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

    1. Choisissez Edit (Modifier).

    2. Choisissez Ajouter une règle.

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

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

    5. Dans le champ Source, choisissez Anywhere dont la plage de ports est comprise (0.0.0.0/0) afin que toute instance Amazon EC2 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. Toutefois, le groupe de sécurité par défaut peut être appliqué aux autres instances Amazon EC2 dans le compte du client et ces instances peuvent voir 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.

    6. Choisissez Enregistrer.

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

Accès aux ressources de MemoryDB depuis l'extérieur AWS

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 :

Création d'une autorité de certification

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

    • 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

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 :

    • Client IPv4 CIDR (CIDR IPv4 client) : utilisez un réseau privé avec un masque réseau dont la plage est au moins de /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).

À l'aide du 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.

À l'aide du 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é.

À l'aide du 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).

À l'aide du 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).

À l'aide du 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

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.

À l'aide du 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 }