Como acessar segredos de API usando AWS Lambda?

Como Acessar Segredos De Api Usando Aws Lambda



As melhores práticas dos serviços AWS envolvem duas ações, ou seja, Store-Retrieve e Audit-Rotate. Combinando essas duas práticas em uma, a AWS lançou o Secret Manager que ajuda o usuário a proteger as informações secretas de suas aplicações. AWS Secret Manager é amplamente utilizado para criar, armazenar , modificando , replicando e rotação de credenciais de banco de dados, chaves de API, tokens OAuth, etc.

Esboço rápido

Este artigo cobre os seguintes aspectos:

O que é AWS Lambda?

AWS Lambda é um serviço de computação para execução de códigos em vários ambientes e linguagens sem fornecer e gerenciar servidores. Além disso, o AWS Lambda pode ser acionado por vários serviços diferentes da AWS, como bucket S3, API Gateways, etc. Este serviço dimensiona automaticamente o aplicativo e executa o código com eficiência, sem exigir que o usuário instale quaisquer dependências adicionais.







Para saber mais sobre o serviço Lambda, consulte este artigo aqui: “Introdução ao AWS Lambda” .



O que é o AWS Secret Manager?

O AWS Secret Manager permite que os usuários protejam e criptografem o informação confidencial de aplicativos, como tokens OAuth, credenciais de banco de dados, APIs, etc. Essas informações confidenciais são chamadas de 'segredo' . Esses segredos são acessados ​​apenas por órgãos autorizados e podem ser alternados para aumentar a segurança.



Saiba mais sobre como armazenar credenciais RDS no Secret Manager consultando este artigo: “Como armazenar credenciais do Amazon RDS usando o Secret Manager?”





Como acessar segredos de API na AWS usando AWS Lambda?

Lambda fornece suporte integrado para vários serviços, por exemplo. Bucket S3, API Gateway e Secret Manager. As funções Lambda podem ser usadas para obter o valor dos segredos configurados. Ao usar os segredos da API nas funções AWS Lambda, os usuários podem interagir com vários serviços da AWS. Esses segredos da API também são importantes para autorizar as funções lambda.

Para acessar as chaves de API no AWS Secret Manager usando AWS Lambda, siga as etapas mencionadas abaixo:



  • Etapa 1: crie um segredo de API
  • Etapa 2: crie uma política IAM
  • Etapa 3: crie uma função IAM
  • Etapa 4: crie uma função Lambda

Etapa 1: crie um segredo de API

Antes de acessar uma chave de API no AWS Secret Manager, primeiro aprenderemos como crie um segredo de API . Para isso, acesse o “Gerente Secreto” serviço do Console de gerenciamento da AWS:

No Consola Principal do AWS Secret Manager, clique no botão “Guarde um novo segredo” botão:

No “Tipo secreto” bloco, escolha o “Outro tipo de segredo” opção entre as várias opções exibidas:

Role para baixo até “Pares chave/valor” seção e fornecer um par chave-valor exclusivo para o seu segredo da API. Para adicionar mais pares de valores-chave , Clique no 'Adicionar linha' botão:

O próximo é o 'Chave de encriptação' seção. A AWS fornece um chave de criptografia padrão pelo segredo. No entanto, o usuário também pode fornecer um nome personalizado para a chave. Mantendo o padrão, clique no botão “ Próximo ' botão:

Nesta interface, o usuário deve fornecer um Nome único pelo seu segredo e um descrição que é opcional campo aqui:

Ao manter o configurações inalteradas , prossiga clicando no botão “ Próximo ' botão:

Em seguida vem o Seção de revisão. Para confirmar todos os Informação fornecido é correto , Clique no ' Loja ”Botão localizado na parte inferior da interface:

O segredo foi criado com sucesso . Clique no ' recarregar ”Para exibir o nome do segredo no Painel :

Etapa 2: crie uma política IAM

Para criar uma política IAM, Acesse o Serviço IAM no Console de gerenciamento da AWS:

De barra lateral do IAM serviço, clique no botão “ Políticas ”opção:

No Console de políticas , Clique no “Criar política” botão:

Saiba mais sobre a política AWS IAM consultando este artigo: “Exemplos de políticas AWS IAM”

O próximo é o “Especificar permissões” seção. Pesquise e selecione o “Gerente Secreto” serviço:

Role para baixo até “Ações permitidas” bloquear. Aqui, nos diferentes níveis de acesso, toque no botão “ Ler ”Opção. Selecione os “Todas as ações de leitura” opção para ativar toda a leitura serviços para esta política:

Rolar para baixo para o ' Recursos ”E clique no “Adicionar ARN” opção:

Navegue de volta para o Painel do AWS Secret Manager e clique no nome do segredo. Copie o “ ARN ”Do segredo abaixo do“ ARN secreto ”da interface exibida:

No Consola agora , cole o ARN copiado no campo “ ARN ' campo:

Antes de clicar no “Adicionar ARNs” botão, clique no 'Esta conta' botão para confirmar se os segredos existem na mesma conta. Depois de definir as configurações, clique no botão “Adicionar ARNs” botão:

Depois configurando todos configurações da política, clique no botão “ Próximo ' botão:

No Seções de detalhes da política , forneça o nome da política no campo “ nome da política ' campo:

Clique no ' Criar política ' botão:

O política foi criado com sucesso :

Etapa 3: crie uma função IAM

Nesta seção, crie uma função do IAM que contenha as permissões necessárias para que as funções do Lambda acessem os segredos. Para isso, clique no botão “ Funções ”Opção na barra lateral da função IAM e, em seguida, toque no “Criar função” botão na interface:

Depois de clicar no “Criar função” botão, a seguinte interface será exibida para você. Selecione os “Serviço AWS” opção entre as seguintes opções, pois iremos anexar este Função do IAM com a função lambda:

No “Caso de uso” seção, pesquise o Serviço lambda e selecione-o. Acerte o ' Próximo ”Na parte inferior da interface para prosseguir:

No próxima interface , pesquise o nome do Nome da política que configuramos anteriormente. Nos resultados exibidos, selecione o nome da política:

Clique no ' Próximo ” na parte inferior do interface para prosseguir:

Providencie um identificador único Para o seu Função do IAM no seguinte campo destacado:

Mantendo o resto das configurações como padrão , Clique no “Criar função” botão rolando para baixo até a parte inferior da interface:

O papel foi com sucesso criada:

Para saber mais sobre como criar uma função IAM na AWS, consulte este artigo: “Como criar funções IAM na AWS” .

Etapa 4: crie uma função Lambda

A próxima etapa é criar a função Lambda. Esta função lambda conterá a função IAM e obterá o valor dos segredos quando executada. Para acessar o serviço Lambda, pesquise “ lambda ”na barra de pesquisa do Console de gerenciamento da AWS . Clique no nome do serviço no resultado para visitar o console:

Na interface inicial do Lambda Service, clique no botão “Criar função” botão:

Isso exibirá o “Criar função” interface. Selecione os “Autor do zero” opção e prossiga fornecendo o nome do Função Lambda no campo destacado:

No Campo de tempo de execução , selecione os ' Pitão 3.9 ' ambiente:

Abaixo de Seção de tempo de execução , existe um “Alterar função de execução padrão” seção. Selecione os “Usar uma função existente” opção e especifique a função no campo “Função existente” campo:

Na mesma interface, toque no “Criar função” botão na parte inferior da interface:

Para saber mais sobre como criar uma função Lambda, consulte este artigo: “Como criar uma função Lambda com tempo de execução Pyhton” .

A função Lambda foi criada. A próxima etapa é fornecer o código para a função Lambda. Quando este código for executado, ele exibirá os valores do Gerenciador secreto:

importar JSON
importar boto3
importar base64
de botocore. exceções importar Erro do cliente

def lambda_handler ( evento , contexto ) :
ambiente = evento [ 'ambiente' ]
nome_secreto = 'shmaster19/%s/chave' % ambiente
nome_da_região = 'ap-sudeste-1'

sessão = boto3. sessão . Sessão ( )
cliente = sessão. cliente (
Nome do Serviço = 'gerente de segredos' ,
nome_da_região = nome_da_região
)

tentar :
resposta_valor_secreta = cliente. get_secret_value (
ID secreto = nome_secreto
)
exceto ClientError como erro :
imprimir ( erro )
outro :
se 'SecretString' em resposta_valor_secreta :
segredo = json. cargas ( resposta_valor_secreta [ 'SecretString' ] )
retornar segredo
outro :
decoded_binary_secret = base64. b64decodificar ( secret_value_Response [ 'SegredoBinário' ] )
retornar decoded_binary_secret
  • importar JSON: usado para executar operações JSON.
  • importar boto3: é o SDK para comunicação entre AWS e Python.
  • importar base64: Usado para executar funções de codificação e decodificação em dados binários como Base64.
  • importar ClientError: Isso permite que os usuários lidem com exceções no código escrito.
  • nome_secreto: Nesta variável, forneça o nome do seu segredo. Observe que este segredo contém “%s” . É quando um usuário possui várias chaves de formato semelhante. Por exemplo, se um usuário criou dois segredos, por exemplo, “apikey/dev/chave” e “apikey/prod/chave” . Então no “%s” , se o usuário fornecer “ desenvolvedor ”, a função Lambda fornecerá o chave de desenvolvimento (apikey/dev/key) e vice-versa.
  • boto. sessão.Sessão(): permite que os usuários criem clientes de serviço e respostas.
  • nome_da_região: Forneça o nome da região na qual seu segredo da AWS está configurado.
  • Resposta_valor_secreto: Nesta variável, estamos usando o “ cliente.get_secret_value ”Função que retornará o valor do segredo.
  • Decodificado_binary_secert: Após adquirir o valor do segredo, ele será posteriormente decodificado em formato base 64 .

Após colar o código na Função Lambda, clique no botão “ Implantar ”Para salvar e aplicar as alterações:

Etapa 5: Testando o Código

Nesta seção do blog verificaremos se o código está funcionando ou não. Para isso, clique no botão “ Teste ”Após implantar com sucesso as alterações na função Lambda:

Na próxima interface, forneça o nome para o teste evento no 'Nome do evento' campo:

Role para baixo até Seção JSON do evento , especifique o ' ambiente ” e forneça o valor no formato JSON. O ' valor ”da chave será passada para “%s” . Como os segredos que especificamos contêm o “ desenvolvedor ”Valor, o“ desenvolvedor ”O valor é passado para o“ ambiente ' variável. A função Lambda identificará o segredo quando o código for executado, pois o identificador do segredo específico é fornecido no código. Após especificar os detalhes, clique no botão “ Salvar ' botão:

Quando o evento for criado com sucesso, clique no botão “ Teste ' botão:

Aqui, temos obtido com sucesso o valor do nosso segredo especificado:

Isso é tudo deste guia.

Conclusão

Para acessar chaves de API no Secret Manager usando Lambda, primeiro crie um segredo de API, uma política IAM, uma função e uma função Lambda e execute o código da função. As funções Lambda podem ser invocadas para obter os valores do AWS Secret Manager especificando o identificador do segredo ao executar o código. Este artigo fornece diretrizes passo a passo sobre como acessar chaves de API no AWS Secret Manager usando AWS Lambda.