

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Acessar o cluster
<a name="accessing-memorydb"></a>

As instâncias do MemoryDB são projetadas para acesso por meio de uma instância do Amazon EC2.

Você pode acessar seu nó do MemoryDB de uma instância do Amazon EC2 na mesma Amazon VPC. Ou, usando o emparelhamento da VPC, você pode acessar seu nó do MemoryDB de um Amazon EC2 em uma Amazon VPC diferente.

**Topics**
+ [Conceder acesso a seus clusters](#grant-access)
+ [Acessar recursos do MemoryDB de fora da AWS](#access-from-outside-aws)

## Conceder acesso a seus clusters
<a name="grant-access"></a>

Você pode se conectar ao seu cluster do MemoryDB somente a partir de uma instância do Amazon EC2 que esteja sendo executada na mesma Amazon VPC. Nesse caso, você precisará conceder entrada de rede ao cluster.

**Para conceder entrada na rede de um grupo de segurança da Amazon VPC para um cluster**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação esquerdo, em **Network & Security**, escolha **Security Groups**.

1. Na lista de grupos de segurança, escolha o de segurança para a sua Amazon VPC. A menos que você tenha criado um grupo de segurança para uso com o MemoryDB, esse grupo de segurança será chamado *default*.

1. Escolha a guia **Inbound** e faça o seguinte:

   1. Selecione **Editar**.

   1. Escolha **Adicionar regra**.

   1. Na coluna **Tipo**, escolha **Regra TCP personalizada**.

   1. Na caixa **Port range**, digite o número da porta para o nó do cluster. Esse número deve ser o mesmo que você especificou quando você executou o cluster. A porta padrão para Valkey e Redis OSS é **6379**.

   1. Na caixa **Fonte**, escolha **Qualquer lugar**, que tem o intervalo de porta (0.0.0.0/0) para que qualquer instância do Amazon EC2 que você inicie na sua Amazon VPC possa se conectar aos seus nós do MemoryDB.
**Importante**  
Abrir o cluster do MemoryDB para 0.0.0.0/0 não expõe o cluster à Internet, pois ele não possui um endereço IP público e, portanto, não pode ser acessado de fora da VPC. No entanto, o grupo de segurança padrão pode ser aplicado a outras instâncias do Amazon EC2 na conta do cliente, e essas instâncias podem ter um endereço IP público. Se eles estiverem executando algo na porta padrão, esse serviço poderá ser exposto involuntariamente. Portanto, recomendamos criar um grupo de segurança de VPC que será usado exclusivamente pelo MemoryDB. Para obter mais informações, consulte [Grupos de segurança personalizados](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#creating-your-own-security-groups).

   1. Escolha **Salvar**.

Quando você ativa uma instância do Amazon EC2 na sua Amazon VPC, essa instância poderá se conectar ao seu cluster do MemoryDB.

## Acessar recursos do MemoryDB de fora da AWS
<a name="access-from-outside-aws"></a>

MemoryDB é um serviço projetado para ser usado internamente em sua VPC. O acesso externo não é recomendado devido à latência do tráfego da Internet e preocupações de segurança. No entanto, se o acesso externo ao MemoryDB for necessário para fins de teste ou desenvolvimento, poderá ser feito por meio de uma VPN.

Usando o cliente VPN da AWS, você permite o acesso externo aos seus nós do MemoryDB com os seguintes benefícios:
+ Acesso restrito a usuários aprovados ou chaves de autenticação;
+ Tráfego criptografado entre o cliente de VPN e o endpoint da VPN da AWS;
+ Acesso limitado a sub-redes ou nós específicos;
+ Fácil revogação do acesso de usuários ou chaves de autenticação;
+ Conexões de auditoria;

Os procedimentos a seguir demonstram como:

**Topics**
+ [Criar uma autoridade de certificação](#create-cert)
+ [Configuração de componentes do cliente VPN da AWS](#configure-vpn-components)
+ [Configurar o cliente de VPN](#configure-vpn-client)

### Criar uma autoridade de certificação
<a name="create-cert"></a>

É possível criar uma Autoridade de certificação (CA) usando diferentes técnicas ou ferramentas. Sugerimos o utilitário easy-rsa, fornecido pelo projeto [OpenVPN](https://openvpn.net/community-resources/openvpn-project/). Independentemente da opção escolhida, mantenha as chaves seguras. O procedimento a seguir faz download dos scripts easy-rsa, cria a Autoridade de certificação e as chaves para autenticar o primeiro cliente de VPN:
+ Para criar os certificados iniciais, abra um terminal e faça o seguinte:
  + `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`

  Um subdiretório **pki** com os certificados será criado sob **easy-rsa**.
+ Envie o certificado do servidor para o AWS Certificate Manager (ACM):
  + No console do ACM, selecione **Gerenciador de certificados**.
  + Selecione **Importar certificado**.
  + Informe o certificado de chave pública disponível no arquivo `easy-rsa/pki/issued/server.crt` no campo **Corpo do certificado**.
  + Cole a chave privada disponível no `easy-rsa/pki/private/server.key` no campo **Chave privada do certificado**. Selecione todas as linhas entre `BEGIN AND END PRIVATE KEY` (incluindo as linhas `BEGIN` e `END`).
  + Cole a chave pública da CA disponível no arquivo `easy-rsa/pki/ca.crt` no campo **Cadeia de certificados**.
  + Selecione **Revisar e importar**.
  + Selecione **Importar**.

  Para enviar os certificados do servidor ao ACM usando a CLI da AWS, execute o seguinte 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 o ARN do certificado para uso futuro.

### Configuração de componentes do cliente VPN da AWS
<a name="configure-vpn-components"></a>

**Usar o AWS Console**

No console da AWS, selecione **Serviços** e, depois, **VPC**.

Em **Rede privada virtual (VPN)**, selecione **Endpoints do Client VPN** e faça o seguinte:

**Configuração de componentes do cliente VPN da AWS**
+ Selecione **Criar endpoint do Client VPN**.
+ Especifique as seguintes opções:
  + **CIDR de IPv4 de cliente**: use uma rede privada com uma máscara de rede de pelo menos intervalo /22. Verifique se a sub-rede selecionada não entra em conflito com os endereços das redes da VPC. Exemplo: 10.0.0.0/22.
  + Em **ARN do certificado de servidor**, selecione o ARN do certificado importado anteriormente.
  + Selecione **Usar autenticação mútua**.
  + Em **ARN do certificado de cliente**, selecione o ARN do certificado importado anteriormente.
  + Selecione **Criar endpoint do Client VPN**.

**Como usar a AWS CLI**

Execute o seguinte 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 `

Resultado do exemplo:

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

**Associar as redes de destino ao endpoint de VPN**
+ Selecione o novo endpoint de VPN e, depois, selecione a guia **Associações**.
+ Selecione **Associar** e especifique as opções a seguir.
  + **VPC**: selecione a VPC do cluster do MemoryDB.
  + Selecione uma das redes do cluster do MemoryDB. Em caso de dúvida, revise as redes nos **Grupos de sub-redes** no painel do MemoryDB.
  + Selecione **Associar**. Se necessário, repita as etapas para as redes restantes.

**Como usar a AWS CLI**

Execute o seguinte comando:

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

Resultado do exemplo:

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

**Analisar o grupo de segurança de VPN**

O endpoint de VPN adotará automaticamente o grupo de segurança padrão da VPC. Verifique as regras de entrada e saída e confirme se o grupo de segurança permite o tráfego da rede VPN (definido nas configurações de endpoint de VPN) para as redes do MemoryDB nas portas de serviço (por padrão, 6379 para Redis).

Se você precisar alterar o grupo de segurança atribuído ao endpoint de VPN, faça o seguinte:
+ Selecione o grupo de segurança atual.
+ Selecione **Apply Security Group (Aplicar grupo de segurança)**.
+ Selecione o novo grupo de segurança.

**Como usar a AWS CLI**

Execute o seguinte 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`

Resultado do exemplo:

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

**nota**  
O grupo de segurança do MemoryDB também precisa permitir o tráfego proveniente dos clientes de VPN. Os endereços dos clientes serão mascarados com o endereço do endpoint de VPN, de acordo com a rede VPC. Portanto, considere a rede VPC (não a rede dos clientes de VPN) ao criar a regra de entrada no grupo de segurança do MemoryDB.

**Autorizar o acesso de VPN às redes de destino**

Na guia **Autorização**, selecione **Autorizar entrada** e especifique o seguinte:
+ Rede de destino para habilitar o acesso: use 0.0.0.0/0 para permitir o acesso a qualquer rede (incluindo a Internet) ou restringir as redes/hosts do MemoryDB.
+ Em **Conceder acesso a:**, selecione **Permitir acesso a todos os usuários**.
+ Selecione **Adicionar regras de autorização**.

**Como usar a AWS CLI**

Execute o seguinte 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`

Resultado do exemplo: 

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

**Permitir o acesso à Internet dos clientes de VPN**

Se você precisar navegar na Internet por meio da VPN, será necessário criar uma rota adicional. Selecione a guia **Tabela de rotas** e, depois, selecione **Criar rota**:
+ Destino da rota: 0.0.0.0/0
+ **ID de sub-rede da VPC de destino**: selecione uma das sub-redes associadas com acesso à Internet.
+ Selecione **Criar rota**.

**Como usar a AWS CLI**

Execute o seguinte 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`

Resultado do exemplo:

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

### Configurar o cliente de VPN
<a name="configure-vpn-client"></a>

No painel do cliente VPN da AWS, selecione o endpoint de VPN criado recentemente e selecione **Baixar configuração do cliente**. Copie o arquivo de configuração e os arquivos `easy-rsa/pki/issued/client1.domain.tld.crt` e `easy-rsa/pki/private/client1.domain.tld.key`. Edite o arquivo de configuração e altere ou adicione os seguintes parâmetros:
+ cert: adicione uma nova linha com o parâmetro cert apontando para o arquivo `client1.domain.tld.crt`. Use o caminho completo para o arquivo. Exemplo: `cert /home/user/.cert/client1.domain.tld.crt`
+ cert: key: adicione uma nova linha com a chave de parâmetro apontando para o arquivo `client1.domain.tld.key`. Use o caminho completo para o arquivo. Exemplo: `key /home/user/.cert/client1.domain.tld.key`

Estabeleça a conexão VPN com o comando: `sudo openvpn --config downloaded-client-config.ovpn`

**Revogar acesso**

Se você precisar invalidar o acesso de uma chave de cliente específica, a chave precisará ser revogada na CA. Depois, envie a lista de revogação para o cliente VPN da AWS.

Revogar a chave com easy-rsa: 
+ `cd easy-rsa`
+ `./easyrsa3/easyrsa revoke client1.domain.tld`
+ Digite "sim" para continuar ou qualquer outra entrada para cancelar.

  `Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl`
+ Uma CRL atualizada foi criada. Arquivo de CRL: `/home/user/easy-rsa/pki/crl.pem` 

Importação da lista de revogação para o cliente VPN da AWS:
+ No Console de gerenciamento da AWS, selecione **Serviços** e, depois, **VPC**.
+ Selecione **Endpoints do Client VPN**.
+ Selecione o endpoint do Client VPN e, depois, selecione **Ações** -> **Importar CRL de certificado de cliente**.
+ Cole o conteúdo do arquivo `crl.pem`. 

**Como usar a AWS CLI**

Execute o seguinte 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 `

Resultado do exemplo:

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