Accès à votre cluster ou groupe de réplication - Amazon ElastiCache for Redis

Accès à votre cluster ou groupe de réplication

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

Si vous avez lancé votre instance ElastiCache dans un Amazon Virtual Private Cloud (Amazon VPC), vous pouvez accéder à votre instance ElastiCache depuis une instance Amazon EC2 dans le même Amazon VPC. En utilisant l'appairage de VPC, vous pouvez accéder à votre instance ElastiCache depuis une instance Amazon EC2 située dans un Amazon VPC différent.

Si vous avez lancé votre instance ElastiCache dans un environnement EC2 Classic, vous autorisez l'instance Amazon EC2 à accéder à votre cluster en donnant au groupe de sécurité Amazon EC2 associé à cette instance accès à votre groupe de sécurité du cache. Par défaut, l'accès au cluster est limité au compte qui a lancé le cluster.

Détermination de la plateforme du cluster

Avant de continuer, déterminez si vous avez lancé votre cluster dans EC2-VPC ou EC2-Classic.

Pour plus d'informations, consultez la page Comment identifier vos plateformes prises en charge et déterminer si vous disposez d'un VPC par défaut ?.

La procédure suivante utilise la console ElastiCache pour déterminer si vous avez lancé votre cluster dans EC2-VPC ou EC2-Classic.

Pour déterminer la plateforme d'un cluster à l'aide de la console ElastiCache

  1. Connectez-vous à la AWS Management Console et ouvrez la console ElastiCache à l'adresse https://console.aws.amazon.com/elasticache/.

  2. Pour consulter une liste de vos clusters exécutant le moteur Redis, dans le volet de navigation gauche, sélectionnez Redis.

  3. Dans la liste des clusters, développez le cluster auquel vous voulez autoriser l'accès en cochant la case à gauche du nom du cluster.

  4. Recherchez le groupe de sous-réseau.

Pour plus d'informations, consultez la page Comment identifier vos plateformes prises en charge et déterminer si vous disposez d'un VPC par défaut ?.

La procédure suivante utilise AWS CLI pour déterminer si vous avez lancé votre cluster dans EC2-VPC ou EC2-Classic.

Pour déterminer la plateforme d'un cluster à l'aide de l' AWS CLI

  1. Ouvrez une fenêtre de commande.

  2. A l'invite de commande, exécutez la commande suivante.

    Pour Linux, macOS ou Unix :

    aws elasticache describe-cache-clusters \ --show-cache-cluster-details \ --cache-cluster-id my-cluster

    Pour Windows :

    aws elasticache describe-cache-clusters ^ --show-cache-cluster-details ^ --cache-cluster-id my-cluster

    Le résultat JSON de cette commande doit être semblable à ce qui suit. Une partie du résultat n'a pas été indiquée par souci de concision.

    { "CacheClusters": [ { "Engine": "redis", "AuthTokenEnabled": false, "CacheParameterGroup": { "CacheNodeIdsToReboot": [], "CacheParameterGroupName": "default.redis3.2", "ParameterApplyStatus": "in-sync" }, "CacheClusterId": "my-cluster-001", "CacheSecurityGroups": [], "NumCacheNodes": 1, "AtRestEncryptionEnabled": false, "CacheClusterCreateTime": "2018-01-16T20:09:34.449Z", "ReplicationGroupId": "my-cluster", "AutoMinorVersionUpgrade": true, "CacheClusterStatus": "available", "PreferredAvailabilityZone": "us-east-2a", "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", "SecurityGroups": [ { "Status": "active", "SecurityGroupId": "sg-e8c03081" } ], "TransitEncryptionEnabled": false, "CacheSubnetGroupName": "default", "EngineVersion": "3.2.10", "PendingModifiedValues": {}, "PreferredMaintenanceWindow": "sat:05:30-sat:06:30", "CacheNodeType": "cache.t2.medium", "DataTiering": "disabled" } ] }

Octroi de l'accès à votre cluster ou groupe de réplication

Vous avez lancé votre cluster dans EC2-VPC

Si vous avez lancé votre cluster dans un Amazon Virtual Private Cloud (Amazon VPC), vous pouvez vous connecter à votre cluster ElastiCache uniquement à 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.

Note

Si vous utilisez les zones locales (Local Zones), assurez-vous que vous les avez activées. Pour de plus amples informations, veuillez consulter Activation des zones locales. Ce faisant, votre VPC est étendu à cette zone locale et votre VPC traitera le sous-réseau comme n'importe quel sous-réseau dans toute autre zone de disponibilité et les passerelles, tables de routage et autres considérations de groupe de sécurité. sera automatiquement ajusté.

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

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

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

  3. Dans la liste des groupes de sécurité, choisissez le groupe de sécurité de votre Amazon VPC. À moins d'avoir créé un groupe de sécurité pour qu'il soit utilisé par ElastiCache, ce groupe de sécurité sera nommé default.

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

    1. Choisissez Modifier.

    2. Choisissez Add rule.

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

    5. Dans la zone Source, choisissez N'importe où qui a la plage de ports (0.0.0.0/0) afin que toute instance Amazon EC2 que vous lancez dans votre Amazon VPC puisse se connecter à vos nœuds ElastiCache.

      Important

      L'ouverture du cluster ElastiCache sur 0.0.0.0/0 n'expose pas le cluster sur Internet, car celui-ci n'a pas d'adresse IP publique et n'est donc pas accessible hors 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. Nous vous recommandons donc de créer un groupe de sécurité VPC qui sera utilisé exclusivement par ElastiCache. 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 sera en mesure de vous connecter à votre cluster ElastiCache.

Vous avez lancé votre cluster dans EC2-Classic

Si vous avez lancé votre cluster dans EC2-Classic, afin de permettre à une instance Amazon EC2 d'accéder à votre cluster, vous devez accorder au groupe de sécurité Amazon EC2 associé à l'instance l'accès à votre groupe de sécurité du cache.

Pour accorder à un groupe de sécurité Amazon EC2 l'accès à un cluster

  1. Connectez-vous à la AWS Management Console et ouvrez la console ElastiCache à l'adresse https://console.aws.amazon.com/elasticache/.

  2. Dans le volet de navigation, choisissez Groupes de sécurité pour consulter une liste des groupes de sécurité.

    Important

    Si l'option Groupes de sécurité n'est pas répertoriée dans le volet de navigation, vous avez lancé votre cluster dans EC2-VPC et non pas dans EC2-Classic et devez suivre les instructions indiquées dans Vous avez lancé votre cluster dans EC2-VPC.

  3. Cochez la case à gauche du groupe de sécurité par défaut.

  4. Dans la liste au bas de l'écran, choisissez le Nom du groupe de sécurité EC2 que vous voulez autoriser.

  5. Pour autoriser l'accès, choisissez Ajouter.

    Les instances Amazon EC2 associées au groupe de sécurité sont maintenant autorisées à se connecter à votre cluster ElastiCache.

Pour annuler l'accès d'un groupe de sécurité, recherchez le groupe de sécurité dans la liste des groupes de sécurité autorisés, puis choisissez Supprimer.

Pour plus d'informations sur l'utilisation des groupes de sécurité ElastiCache, veuillez consulter Groupes de sécurité : EC2-Classic.

Accès aux ressources ElastiCache depuis l'extérieur d' AWS

ElastiCache est un service conçu pour être utilisé en interne sur 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 à ElastiCache est nécessaire à des fins de test ou de développement, il peut être établi par l'intermédiaire d'un VPN.

AWS Client VPN vous permet d'autoriser l'accès externe à vos nœuds ElastiCache avec les avantages suivants :

  • Accès restreint aux utilisateurs approuvés ou aux clés d'authentification

  • Trafic chiffré 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 de serveur à AWS Certificate Manager (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 soumettre les certificats du serveur à ACM à l'aide d'AWS CLI, exécutez la commande suivante : aws acm import-certificate --certificate fileb://easy-rsa/pki/issued/server.crt --private-key fileb://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.

Configurer des composants AWS Client VPN

Utilisation de la console AWS

Dans la console AWS, 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 de composants AWS Client VPN

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

Utilisation de 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 ElastiCache.

    • Sélectionnez l'un des réseaux du cluster ElastiCache. En cas de doute, passez en revue les réseaux dans les groupes de sous-réseaux du tableau de bord ElastiCache.

    • Sélectionnez Associate (Associer). Si nécessaire, répétez les étapes pour les réseaux restants.

Utilisation de 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 que le groupe de sécurité autorise le trafic entre le réseau VPN (défini dans les paramètres du point de terminaison VPN) et les réseaux ElastiCache sur les ports de service (par défaut, 6379 pour Redis et 11211 pour Memcached).

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

Utilisation de 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é ElastiCache 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, tenez compte du réseau VPC (et non du réseau des clients VPN) lors de la création de la règle entrante sur le groupe de sécurité ElastiCache.

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

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

Utilisation de 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).

Utilisation de 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

Dans le tableau de bord d'AWS Client VPN, sélectionnez le point de terminaison VPN que vous venez de créer et sélectionnez Download Client Configuration (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 à 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 AWS Client VPN :

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

Utilisation de 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 }