Como configurar uma conexão do Apache Airflow usando um segredo AWS Secrets Manager
AWS Secrets Manager é um back-end do Apache Airflow alternativo compatível com um ambiente do Amazon Managed Workflows for Apache Airflow. Este tópico explica como usar AWS Secrets Manager para armazenar com segurança segredos para variáveis do Apache Airflow e uma conexão do Apache Airflow no Amazon Managed Workflows for Apache Airflow.
nota
-
Você é cobrado pelos segredos que você cria. Para obter mais informações sobre precificação do Secrets Manager, consulte Precificação da AWS
. -
Também há suporte para o AWS Systems Manager Parameter Store como um backend de segredos no Amazon MWAA. Para obter mais informações, consulte a documentação do Amazon Provider Package
.
Sumário
Etapa 1: forneça ao Amazon MWAA permissão para acessar as chaves secretas do Secrets Manager
O perfil de execução do seu ambiente Amazon MWAA precisa de acesso de leitura à chave secreta de entrada em AWS Secrets Manager. A política do IAM a seguir permite acesso de leitura e gravação usando a política SecretsManagerReadWrite
Para anexar a política ao seu perfil de execução
-
Abra a página Ambientes
no console do Amazon MWAA. -
Escolha um ambiente.
-
Escolha sua função de execução no painel Permissões.
-
Escolha Anexar políticas.
-
Digite
SecretsManagerReadWriteno campo de texto Políticas de filtro. -
Escolha Anexar política.
Se você não quiser usar uma política de permissão gerenciada pela AWS, é possível atualizar diretamente o perfil de execução do seu ambiente para permitir qualquer nível de acesso aos recursos do Secrets Manager. Por exemplo, a instrução de política a seguir concede acesso de leitura a todos os segredos que você cria em uma Região da AWS específica no Secrets Manager.
Etapa 2: crie o back-end do Secrets Manager como uma opção de configuração do Apache Airflow
A seção a seguir descreve como criar uma opção de configuração do Apache Airflow no console Amazon MWAA para o back-end AWS Secrets Manager. Se você estiver usando uma definição de configuração com o mesmo nome em airflow.cfg, a configuração criada nas etapas a seguir terá precedência e substituirá as definições de configuração.
-
Abra a página Ambientes
no console do Amazon MWAA. -
Escolha um ambiente.
-
Escolha Editar.
-
Escolha Próximo.
-
Escolha Adicionar configuração personalizada no painel Opções de configuração do Airflow. Adicione os seguintes pares de chave-valor:
-
:secrets.backendairflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend -
:secrets.backend_kwargsConfigura o Apache Airflow para buscar strings de conexão e variáveis nos caminhos{"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"}airflow/connections/*eairflow/variables/*.É possível usar um padrão de pesquisa
para reduzir o número de chamadas de API que o Amazon MWAA faz para o Secrets Manager em seu nome. Se você não especificar um padrão de pesquisa, o Apache Airflow pesquisará todas as conexões e variáveis no back-end configurado. Ao especificar um padrão, você restringe os caminhos possíveis que o Apache Airflow procura. Isso reduz seus custos ao usar o Secrets Manager com o Amazon MWAA. Para especificar um padrão de pesquisa, especifique os parâmetros
connections_lookup_patternevariables_lookup_pattern. Esses parâmetros aceitam uma string RegEx como entrada. Por exemplo, para procurar segredos que comecem comtest, digite o seguinte parasecrets.backend_kwargs:{ "connections_prefix": "airflow/connections", "connections_lookup_pattern": "^test", "variables_prefix" : "airflow/variables", "variables_lookup_pattern": "^test" }nota
Para usar
connections_lookup_patternevariables_lookup_pattern, você deve instalar a versão 7.3.0 ou superior deapache-airflow-providers-amazon. Para obter mais informações sobre como atualizar os pacotes do provedor para versões mais recentes, consulte Arquivo de restrições.
-
-
Escolha Salvar.
Etapa 3: gere uma string de URI de conexão AWS do Apache Airflow
Para criar uma string de conexão, use a tecla "Tab" do teclado para adicionar recuo dos pares de chave-valor no objeto Conexãoextra em sua sessão de shell. A seção a seguir mostra as etapas para gerar uma string de URI de conexão do Apache Airflow
Etapa 4: adicione as variáveis no Secrets Manager
A seção a seguir descreve como criar o segredo para uma variável no Secrets Manager.
Para criar o segredo
-
Abra o console de AWS Secrets Manager
. -
Selecione Armazenar um novo segredo.
-
Selecione Outro tipo de segredo.
-
No painel Especificar os pares de chave/valor a serem armazenados nesse painel secreto, escolha Texto simples.
-
Adicione o valor da variável como Texto simples no formato a seguir.
"YOUR_VARIABLE_VALUE"Por exemplo, para especificar um número inteiro:
14Por exemplo, para especificar uma string:
"mystring" -
Em Chave de criptografia, escolha uma opção de AWS KMS chave na lista suspensa.
-
Insira um nome no campo de texto para Nome secreto no formato a seguir.
airflow/variables/YOUR_VARIABLE_NAMEPor exemplo:
airflow/variables/test-variable -
Escolha Próximo
-
Na página Configurar segredo, no painel Nome e descrição do segredo, faça o seguinte.
-
Em Nome secreto, forneça um nome para seu segredo.
-
(Opcional) Em Descrição, insira uma descrição para o nome do segredo.
Escolha Avançar.
-
-
Em Configurar rotação - opcional, deixe as opções padrão e escolha Avançar.
-
Repita essas etapas no Secrets Manager para quaisquer variáveis adicionais que você queira adicionar.
-
Na página Analisar, analise os detalhes do segredo e escolha Armazenar.
Etapa 5: adicione a conexão no Secrets Manager
A seção a seguir descreve como criar o segredo para o URI da string de conexão no Secrets Manager.
Para criar o segredo
-
Abra o console de AWS Secrets Manager
. -
Selecione Armazenar um novo segredo.
-
Selecione Outro tipo de segredo.
-
No painel Especificar os pares de chave/valor a serem armazenados nesse painel secreto, escolha Texto simples.
-
Adicione a string do URI de conexão como texto simples no formato a seguir.
YOUR_CONNECTION_URI_STRINGPor exemplo:
mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA®ion_name=us-east-1Atenção
O Apache Airflow analisa cada um dos valores na string de conexão. Você não deve usar aspas simples nem duplas, ou ele analisará a conexão como uma única string.
-
Em Chave de criptografia, escolha uma opção de AWS KMS chave na lista suspensa.
-
Insira um nome no campo de texto para Nome secreto no formato a seguir.
airflow/connections/YOUR_CONNECTION_NAMEPor exemplo:
airflow/connections/myconn -
Escolha Próximo
-
Na página Configurar segredo, no painel Nome e descrição do segredo, faça o seguinte.
-
Em Nome secreto, forneça um nome para seu segredo.
-
(Opcional) Em Descrição, insira uma descrição para o nome do segredo.
Escolha Avançar.
-
-
Em Configurar rotação - opcional, deixe as opções padrão e escolha Avançar.
-
Repita essas etapas no Secrets Manager para quaisquer variáveis adicionais que você queira adicionar.
-
Na página Analisar, analise os detalhes do segredo e escolha Armazenar.
Código de exemplo
-
Saiba como usar a chave secreta para a conexão do Apache Airflow (
myconn) nesta página usando o código de exemplo em Como usar uma chave secreta em AWS Secrets Manager para uma conexão do Apache Airflow. -
Saiba como usar a chave secreta para a variável do Apache Airflow (
test-variable) nesta página usando o código de exemplo em Como usar uma chave secreta em AWS Secrets Manager para uma variável do Apache Airflow.
Recursos
-
Para obter mais informações sobre como configurar os segredos do Secrets Manager usando o console e a AWS CLI, consulte Criar um segredo no Guia do usuário do AWS Secrets Manager.
-
Use um script Python para migrar um grande volume de variáveis e conexões do Apache Airflow para o Secrets Manager em Move your Apache Airflow connections and variables to AWS Secrets Manager
(Mova suas conexões e variáveis do Apache Airflow para ).
Próximas etapas
-
Saiba como gerar um token para acessar a interface do Apache Airflow em Como acessar o Apache Airflow.