Acceso al clúster - Amazon MemoryDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceso al clúster

Sus instancias de MemoryDB están diseñadas para que se pueda acceder a ellas a través de una instancia de Amazon EC2.

Puede acceder al nodo de MemoryDB desde una instancia de Amazon EC2 en la misma Amazon VPC. O, utilizando la conexión de emparejamiento de VPC, puede obtener acceso al nodo de MemoryDB desde una Amazon EC2 en otra Amazon VPC.

Conceder acceso a su clúster

Puede conectarse al clúster de MemoryDB solo desde una instancia de Amazon EC2 que se ejecuta en la misma Amazon VPC. En este caso, necesitará conceder acceso de red al clúster.

Para conceder acceso de red desde un grupo de seguridad de Amazon VPC a un clúster
  1. Inicie sesión en la consola Amazon EC2 AWS Management Console y ábrala en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación de la izquierda, debajo de Network & Security, elija Security Groups.

  3. En la lista de grupos de seguridad, elija el grupo de seguridad para su Amazon VPC. A menos que haya creado un grupo de seguridad para que lo utilice MemoryDB, este grupo de seguridad se denominará default.

  4. Elija la pestaña Inbound y haga lo siguiente:

    1. Elija Editar.

    2. Seleccione Agregar regla.

    3. En la columna Type, elija Custom TCP rule.

    4. En el cuadro Port range, escriba el número de puerto para su nodo de clúster. Este número debe ser el mismo que especificó cuando lanzó el clúster. El puerto predeterminado para Redis OSS es. 6379

    5. En el cuadro Origen, elija Cualquier lugar que tenga el rango de puertos (0.0.0.0/0) para que cualquier instancia de Amazon EC2 que lance en su Amazon VPC pueda conectarse a sus nodos de MemoryDB.

      importante

      Al abrir el clúster de MemoryDB a 0.0.0.0/0 no se expone el clúster a Internet, ya que no tiene ninguna dirección IP pública y, por lo tanto, no se puede acceder a este desde fuera de la VPC. Sin embargo, el grupo de seguridad predeterminado se puede aplicar a otras instancias de Amazon EC2 en la cuenta del cliente y dichas instancias pueden tener una dirección IP pública. Si se está ejecutando algo en el puerto predeterminado, ese servicio podría exponerse de forma involuntaria. Por lo tanto, recomendamos crear un grupo de seguridad de VPC para que lo utilice exclusivamente MemoryDB. Para obtener más información, consulte Grupos de seguridad personalizados.

    6. Seleccione Save (Guardar).

Al lanzar una instancia de Amazon EC2 en su Amazon VPC, esa instancia podrá conectarse a su clúster de MemoryDB.

Acceder a los recursos de MemoryDB desde el exterior AWS

MemoryDB es un servicio diseñado para que se utilice internamente en su VPC. Se desaconseja el acceso externo debido a la latencia del tráfico de Internet y a los riesgos de seguridad. Sin embargo, si se requiere acceso externo a MemoryDB para fines de desarrollo o pruebas, puede obtenerse a través de una VPN.

Con AWS Client VPN, permite el acceso externo a sus nodos de MemoryDB con las siguientes ventajas:

  • Acceso restringido a usuarios aprobados o claves de autenticación

  • Tráfico cifrado entre el cliente VPN y el punto final de la AWS VPN;

  • Acceso limitado a subredes o nodos específicos

  • Revocación sencilla del acceso de los usuarios o claves de autenticación

  • Conexiones de auditoría

Los siguientes procedimientos muestran cómo:

Crear una entidad de certificación

Es posible crear una entidad de certificación (CA) utilizando diferentes técnicas o herramientas. Recomendamos la utilidad easy-rsa, proporcionada por el proyecto OpenVPN . Independientemente de la opción que elija, asegúrese de mantener protegidas las claves. El siguiente procedimiento descarga los scripts de easy-rsa, y crea la entidad de certificación y las claves para autenticar el primer cliente de VPN:

  • Para crear los certificados iniciales, abra un terminal y proceda del modo siguiente:

    • 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

    Se creará un subdirectorio pki que contiene los certificados bajo easy-rsa.

  • Envíe el certificado del servidor al administrador AWS de certificados (ACM):

    • En la consola de ACM, seleccione Certificate Manager.

    • Seleccione Importar certificado.

    • Especifique el certificado de clave pública disponible en el archivo easy-rsa/pki/issued/server.crt en el campo Cuerpo del certificado.

    • Pegue la clave privada disponible en easy-rsa/pki/private/server.key en el campo Clave privada del certificado. Asegúrese de seleccionar todas las líneas entre BEGIN AND END PRIVATE KEY (incluidas las líneas END y BEGIN).

    • Pegue la clave pública de CA disponible en el archivo easy-rsa/pki/ca.crt en el campo Cadena de certificados.

    • Seleccione Revisar e importar.

    • Seleccione Importar.

    Para enviar los certificados del servidor a ACM mediante la AWS CLI, ejecute el siguiente 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

    Anote el ARN del certificado para usarlo en el futuro.

Configuración de los componentes de la VPN AWS del cliente

Uso de la AWS consola

En la AWS consola, selecciona Servicios y, a continuación, VPC.

En Red virtual privada, seleccione Puntos de conexión de VPN de cliente y proceda del modo siguiente:

Configuración de los componentes de AWS Client VPN

  • Seleccione Crear punto de conexión de VPN de cliente.

  • Especifique las opciones siguientes:

    • CIDR de IPv4 de cliente: utilice una red privada con una máscara de red de al menos el intervalo /22. Asegúrese de que la subred seleccionada no entra en conflicto con las direcciones de las redes de la VPC. Ejemplo 10.0.0.0/22.

    • En ARN del certificado del servidor, seleccione el ARN del certificado importado previamente.

    • Seleccione Utilizar la autenticación mutua.

    • En ARN del certificado de cliente, seleccione el ARN del certificado importado previamente.

    • Seleccione Crear punto de conexión de VPN de cliente.

Uso del AWS CLI

Ejecute el siguiente comando:

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

Ejemplo de salida:

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

Asociar las redes de destino al punto de conexión de VPN

  • Seleccione el nuevo punto de conexión de VPN y, a continuación, seleccione la pestaña Asociaciones.

  • Seleccione Asociar y especifique las siguientes opciones.

    • VPC: seleccione la VPC del clúster de MemoryDB.

    • Seleccione una de las redes del clúster de MemoryDB. En caso de duda, revise las redes en Grupos de subredes en el panel de MemoryDB.

    • Seleccione Asociar. Si es necesario, repita los pasos para las redes restantes.

Usando el AWS CLI

Ejecute el siguiente comando:

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

Ejemplo de salida:

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

Revisar el grupo de seguridad de VPN

El punto de conexión de VPN adoptará automáticamente el grupo de seguridad predeterminado de la VPC. Compruebe las reglas de entrada y salida y confirme si el grupo de seguridad permite el tráfico desde la red VPN (definida en la opción Punto de conexión de VPN) a las redes de MemoryDB en los puertos de servicio (de forma predeterminada, 6379 para Redis).

Si necesita cambiar el grupo de seguridad asignado al punto de conexión de VPN, proceda de la siguiente manera:

  • Seleccione el grupo de seguridad actual

  • Seleccione Aplicar grupo de seguridad.

  • Seleccione el nuevo grupo de seguridad.

Usando el AWS CLI

Ejecute el siguiente comando:

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

Ejemplo de salida:

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

nota

El grupo de seguridad de MemoryDB también necesita permitir el tráfico procedente de los clientes de VPN. Las direcciones de los clientes se enmascararán con la dirección del punto de conexión de VPN, de acuerdo con la red de la VPC. Por lo tanto, tenga en cuenta la red de la VPC (no la red de los clientes de VPN) cuando cree la regla de entrada en el grupo de seguridad de MemoryDB.

Autorizar el acceso de VPN a las redes de destino

En la pestaña Autorización seleccione Autorizar entrada y especifique lo siguiente:

  • Red de destino para habilitar el acceso: utilice 0.0.0.0/0 para permitir el acceso a cualquier red (incluido Internet) o restrinja las redes o hosts de MemoryDB.

  • En Conceder acceso a:, seleccione Permitir el acceso a todos los usuarios.

  • Seleccione Añadir reglas de autorización.

Usando el AWS CLI

Ejecute el siguiente comando:

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

Ejemplo de salida:

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

Permitir el acceso a Internet desde los clientes de VPN

Si necesita navegar por Internet a través de la VPN, debe crear una ruta adicional. Seleccione la pestaña Route Table (Tabla de ruteo) y, a continuación, seleccione Create Route (Crear ruta):

  • Destino de la ruta: 0.0.0.0/0

  • Target VPC Subnet ID (ID de subred de la VPC de destino): seleccione una de las subredes asociadas con acceso a Internet.

  • Seleccione Create Route (Crear ruta).

Usando el AWS CLI

Ejecute el siguiente comando:

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

Ejemplo de salida:

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

Configurar el cliente de VPN

En el panel de AWS Client VPN, seleccione el punto final VPN creado recientemente y seleccione Descargar la configuración del cliente. Copie el archivo de configuración y los archivos easy-rsa/pki/issued/client1.domain.tld.crt y easy-rsa/pki/private/client1.domain.tld.key. Edite el archivo de configuración y cambie o agregue los siguientes parámetros:

  • cert: agregue una nueva línea con el parámetro cert apuntando al archivo client1.domain.tld.crt. Utilice la ruta completa al archivo. Ejemplo: cert /home/user/.cert/client1.domain.tld.crt

  • cert: key: agregue una nueva línea con el parámetro key apuntando al archivo client1.domain.tld.key. Utilice la ruta completa al archivo. Ejemplo: key /home/user/.cert/client1.domain.tld.key

Establezca la conexión de VPN con el comando: sudo openvpn --config downloaded-client-config.ovpn

Revocar el acceso

Si necesita invalidar el acceso de una clave de cliente concreta, la clave debe revocarse en la CA. A continuación, envíe la lista de revocaciones a AWS Client VPN.

Revocar la clave con easy-rsa:

  • cd easy-rsa

  • ./easyrsa3/easyrsa revoke client1.domain.tld

  • Especifique "yes" (sí) para continuar o escriba cualquier otra entrada para cancelar.

    Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl

  • Se ha creado una CRL actualizada. Archivo CRL: /home/user/easy-rsa/pki/crl.pem

Importación de la lista de revocaciones a la AWS Client VPN:

  • En AWS Management Console, seleccione Servicios y, a continuación, VPC.

  • Seleccione Puntos de conexión de VPN de cliente.

  • Seleccione el punto de conexión de Client VPN y, a continuación, seleccione Actions (Acciones) -> Import Client Certificate CRL (Importar CRL de certificado de cliente).

  • Pegue el contenido del archivo crl.pem.

Usando la AWS CLI

Ejecute el siguiente comando:

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

Ejemplo de salida:

Example output: { "Return": true }