Tutorial: Como configurar o acesso à rede privada usando um Linux Bastion Host - Amazon Managed Workflows for Apache Airflow

Tutorial: Como configurar o acesso à rede privada usando um Linux Bastion Host

Este tutorial mostra as etapas para criar um túnel SSH do seu computador para o servidor web Apache Airflow para seu ambiente Amazon Managed Workflows for Apache Airflow. Pressupõe-se que você já tenha criado um ambiente Amazon MWAA. Depois de configurado, um Linux Bastion Host atua como um servidor jump, permitindo uma conexão segura do seu computador com os recursos em sua VPC. Em seguida, você usará um complemento de gerenciamento de proxy SOCKS para controlar as configurações de proxy em seu navegador e acessar sua IU do Apache Airflow.

Rede privada

Este tutorial pressupõe que você tenha escolhido o modo de acesso à rede privada para seu servidor Web Apache Airflow.

Esta imagem mostra a arquitetura de um ambiente Amazon MWAA com um servidor Web privado.

O modo de acesso à rede privada limita o acesso à interface do usuário do Apache Airflow aos usuários da Amazon VPC que receberam acesso à política do IAM do seu ambiente.

Ao criar um ambiente com acesso privado ao servidor web, você deve empacotar todas as suas dependências em um arquivo wheel do Python (.whl) e, em seguida, referenciar .whl em seu requirements.txt. Para obter instruções sobre como empacotar e instalar suas dependências usando o wheel, consulte Gerenciando dependências usando o Python wheel.

A imagem a seguir mostra onde encontrar a opção Rede privada no console do Amazon MWAA.

Esta imagem mostra onde encontrar a opção de Rede privada no console do Amazon MWAA.

Casos de uso

Você pode usar este tutorial depois de criar um ambiente Amazon MWAA. Você deve usar o mesmo Amazon VPC, grupos de segurança VPC e sub-redes públicas do seu ambiente.

Antes de começar

  1. Verifique as permissões do usuário. Certifique-se de que sua conta no AWS Identity and Access Management (IAM) tenha permissões suficientes para criar e gerenciar recursos de VPC.

  2. Use sua VPC do Amazon MWAA. Este tutorial pressupõe que você esteja associando o bastion host a uma VPC existente. O Amazon VPC deve estar na mesma região de seu ambiente do Amazon MWAA e ter duas sub-redes privadas, como definido em Criar a rede VPC.

  3. Crie uma chave SSH. Você precisa criar uma chave SSH do Amazon EC2 (.pem) na mesma região do seu ambiente Amazon MWAA para se conectar aos servidores virtuais. Se você não tiver uma chave SSH, consulte Criar ou importar um par de chaves no Guia do usuário do Amazon EC2.

Objetivos

Neste tutorial, você irá:

  1. Crie uma instância do Linux Bastion Host usando um Modelo AWS CloudFormationpara uma VPC existente.

  2. Autorize o tráfego de entrada para o grupo de segurança da instância bastion usando uma regra de entrada na porta 22.

  3. Autorize o tráfego de entrada do grupo de segurança de um ambiente do Amazon MWAA para o grupo de segurança da instância do Bastion.

  4. Crie um túnel SSH para a instância do bastion.

  5. Instale e configure o complemento FoxyProxy para o navegador Firefox para visualizar a IU do Apache Airflow.

Etapa 1: criar a instância do bastion

A seção a seguir descreve as etapas para criar a instância Linux Bastion usando um Modelo AWS CloudFormation para uma VPC existente no console AWS CloudFormation.

Para criar o Linux Bastion Host
  1. Abra a página Implantar início rápido no console AWS CloudFormation.

  2. Use o seletor de região na barra de navegação para escolher a região da AWS como seu ambiente Amazon MWAA.

  3. Escolha Próximo.

  4. Digite um nome no campo de texto Nome da pilha, como.mwaa-linux-bastion.

  5. No painel Parâmetros, Configuração de rede, escolha as seguintes opções:

    1. Escolha o seu ID da VPC do ambiente do Amazon VPC.

    2. Escolha o seu ID da sub-rede pública 1 do ambiente do Amazon VPC.

    3. Escolha o seu ID da sub-rede pública 2 do ambiente do Amazon VPC.

    4. Insira o intervalo de endereços mais estreito possível (por exemplo, um intervalo CIDR interno) em CIDR de acesso externo permitido ao Bastion.

      nota

      A maneira mais simples de identificar um intervalo é usar o mesmo intervalo CIDR de suas sub-redes públicas. Por exemplo, as sub-redes públicas no modelo do AWS CloudFormation na página Criar a rede VPC são 10.192.10.0/24 e 10.192.11.0/24.

  6. No painel Configuração do Amazon EC2, escolha o seguinte:

    1. Escolha sua chave SSH na lista suspensa em Nome do par de chaves.

    2. Insira um nome em Nome do bastion host.

    3. Escolha verdadeiro para Encaminhamento TCP.

      Atenção

      O encaminhamento TCP deve ser definido como verdadeiro nesta etapa. Caso contrário, não será possível criar um túnel SSH na etapa seguinte.

  7. Escolha Avançar, Avançar.

  8. Selecione a confirmação e então escolha Criar pilha.

Para saber mais sobre a arquitetura do seu Linux Bastion Host, consulte Linux Bastion Hosts na AWS Nuvem: Arquitetura.

Etapa 2: criar o túnel ssh

As etapas a seguir descrevem como criar o túnel ssh para o seu bastion do Linux. Um túnel SSH recebe a solicitação do seu endereço IP local para o linux bastion, e é por isso que o encaminhamento de TCP para o linux bastion foi configurado para true nas etapas anteriores.

macOS/Linux
Para criar um túnel via linha de comando
  1. Abra a página Instâncias no console do Amazon EC2.

  2. Escolha uma instância.

  3. Copie o endereço em DNS IPv4 pública. Por exemplo, ec2-4-82-142-1.compute-1.amazonaws.com.

  4. No prompt de comando, navegue até o diretório em que sua chave SSH está armazenada.

  5. Execute o comando a seguir para se conectar à instância do bastion usando ssh. Substitua o valor da amostra pelo nome da sua chave SSH em mykeypair.pem.

    ssh -i mykeypair.pem -N -D 8157 ec2-user@YOUR_PUBLIC_IPV4_DNS
Windows (PuTTY)
Para criar um túnel usando PuTTY
  1. Abra a página Instâncias no console do Amazon EC2.

  2. Escolha uma instância.

  3. Copie o endereço em DNS IPv4 pública. Por exemplo, ec2-4-82-142-1.compute-1.amazonaws.com.

  4. Abra o PuTTY, e selecione Sessão.

  5. Insira o nome do host em Nome do host como ec2-user@YOUR_PUBLIC_IPV4_DNS e a porta como 22.

  6. Expanda a guia SSH e selecione Auth. Em Arquivo de chave privada para autenticação, escolha seu arquivo “ppk” local.

  7. Em SSH, escolha a guia Túneis e selecione as opções Dinâmico e Automático.

  8. Em Porta de origem adicione a porta 8157 (ou qualquer outra porta não usada) e deixe a porta Destino em branco. Escolha Adicionar.

  9. Escolha a guia Sessão e insira o nome da sessão. Por exemplo, SSH Tunnel.

  10. Escolha Salvar, Abrir.

    nota

    Talvez seja necessário inserir uma frase secreta para sua chave pública.

nota

Se você receber um erro Permission denied (publickey), recomendamos usar a ferramenta AWSSupport-TroubleshootSSH e escolher Executar esta automação (console) para solucionar problemas de configuração de SSH.

Etapa 3: configurar o grupo de segurança bastion como uma regra de entrada

O acesso aos servidores e o acesso regular à Internet a partir dos servidores são permitidos com um grupo de segurança especial de manutenção conectado a esses servidores. As etapas a seguir descrevem como configurar o grupo de segurança bastion como uma fonte de tráfego de entrada para o grupo de segurança VPC de um ambiente.

  1. Abra a página Ambientes no console do Amazon MWAA.

  2. Escolha um ambiente.

  3. No painel Rede, escolha Grupo de segurança VPC.

  4. Escolha Editar regras de entrada.

  5. Escolha Adicionar regra.

  6. Escolha sua ID do grupo de segurança da VPC na lista suspensa Fonte.

  7. Deixe as opções restantes em branco ou defina-as com seus valores padrão.

  8. Escolha Salvar regras.

Etapa 4: copiar o URL do Apache Airflow

As etapas a seguir descrevem como abrir o console do Amazon MWAA e copiar o URL para a IU do Apache Airflow.

  1. Abra a página Ambientes no console do Amazon MWAA.

  2. Escolha um ambiente.

  3. Copie o URL na IU do Airflow para as etapas subsequentes.

Etapa 5: definir as configurações de proxy

Se você usar um túnel SSH com o encaminhamento de portas dinâmicas, deverá usar um complemento de gerenciamento de proxy SOCKS para controlar as configurações de proxy no seu navegador. Por exemplo, é possível usar o atributo --proxy-server do Chromium para iniciar uma sessão do navegador ou usar a extensão FoxyProxy no navegador Mozilla FireFox.

Opção um: configure um túnel SSH usando o encaminhamento de portas locais

Se não quiser usar um proxy SOCKS, é possível configurar um túnel SSH usando o encaminhamento de portas locais. O comando de exemplo a seguir acessa a interface web do Amazon EC2 ResourceManager ao encaminhar o tráfego na porta local 8157.

  1. Abra uma nova janela do prompt de comando.

  2. Digite o seguinte comando para abrir um túnel SSH.

    ssh -i mykeypair.pem -N -L 8157:YOUR_VPC_ENDPOINT_ID-vpce.YOUR_REGION.airflow.amazonaws.com:443 ubuntu@YOUR_PUBLIC_IPV4_DNS.YOUR_REGION.compute.amazonaws.com

    -L significa o uso do encaminhamento de portas locais, que permite especificar uma porta local usada para encaminhar dados à porta remota identificada no servidor Web local do nó principal.

  3. Digite http://localhost:8157/ em seu navegador.

    nota

    Talvez seja necessário usar https://localhost:8157/.

Opção dois: proxies via linha de comando

A maioria dos navegadores da Web permite que você configure proxies por meio de uma linha de comando ou parâmetro de configuração. Por exemplo, com o Chromium, é possível iniciar o navegador com o seguinte comando:

chromium --proxy-server="socks5://localhost:8157"

Ele inicia uma sessão do navegador que usa o túnel ssh que você criou nas etapas anteriores para proxy de suas solicitações. É possível abrir sua URL privada do ambiente Amazon MWAA (com https://) da seguinte forma:

https://YOUR_VPC_ENDPOINT_ID-vpce.YOUR_REGION.airflow.amazonaws.com/home.

Opção três: Proxies usando FoxyProxy para o Mozilla Firefox

O exemplo a seguir demonstra uma configuração FoxyProxy Standard (versão 7.5.1) para o Mozilla Firefox. O FoxyProxy fornece um conjunto de ferramentas de gerenciamento de proxy. Permite que seja usado um servidor proxy para URLs que corresponda aos padrões correspondentes aos domínios usados pela IU do Apache Airflow.

  1. No Firefox, abra a página de extensão FoxyProxy Standard.

  2. Escolha Adicionar ao Firefox.

  3. Escolha Adicionar.

  4. Escolha o ícone FoxyProxy na barra de ferramentas do seu navegador e escolha Opções.

  5. Copie o código a seguir e salve localmente como mwaa-proxy.json. Substitua o exemplo do valor em YOUR_HOST_NAME pelo seu URL do Apache Airflow.

    { "e0b7kh1606694837384": { "type": 3, "color": "#66cc66", "title": "airflow", "active": true, "address": "localhost", "port": 8157, "proxyDNS": false, "username": "", "password": "", "whitePatterns": [ { "title": "airflow-ui", "pattern": "YOUR_HOST_NAME", "type": 1, "protocols": 1, "active": true } ], "blackPatterns": [], "pacURL": "", "index": -1 }, "k20d21508277536715": { "active": true, "title": "Default", "notes": "These are the settings that are used when no patterns match a URL.", "color": "#0055E5", "type": 5, "whitePatterns": [ { "title": "all URLs", "active": true, "pattern": "*", "type": 1, "protocols": 1 } ], "blackPatterns": [], "index": 9007199254740991 }, "logging": { "active": true, "maxSize": 500 }, "mode": "patterns", "browserVersion": "82.0.3", "foxyProxyVersion": "7.5.1", "foxyProxyEdition": "standard" }
  6. No painel Importar configurações do FoxyProxy 6.0+, escolha Importar configurações e selecione o arquivo mwaa-proxy.json.

  7. Escolha OK.

Etapa 6: abra a IU do Apache Airflow

As etapas a seguir descrevem como abrir sua IU do Apache Airflow.

  1. Abra a página Ambientes no console do Amazon MWAA.

  2. Escolha Abrir a IU do Airflow.

Próximas etapas