¿Cómo acceder a los secretos de la API mediante AWS Lambda?

Como Acceder A Los Secretos De La Api Mediante Aws Lambda



Las mejores prácticas de los servicios de AWS implican dos acciones, es decir, almacenar-recuperar y auditar-rotar. Combinando estas dos prácticas en una, AWS lanzó Secret Manager, que ayuda al usuario a proteger la información secreta de sus aplicaciones. AWS Secret Manager se utiliza ampliamente para crear, almacenar , modificando , replicando y credenciales de bases de datos rotativas, claves API, tokens OAuth, etc.

Esquema rápido

Este artículo cubre los siguientes aspectos:

¿Qué es AWS Lambda?

AWS Lambda es un servicio informático para ejecutar códigos en múltiples entornos e idiomas sin proporcionar ni administrar los servidores. Además, AWS Lambda puede activarse mediante múltiples servicios diferentes de AWS, como el depósito S3, API Gateways, etc. Este servicio escala automáticamente la aplicación y ejecuta el código de manera eficiente sin requerir que el usuario instale dependencias adicionales.







Para obtener más información sobre el servicio Lambda, consulte este artículo aquí: 'Comenzando con AWS Lambda' .



¿Qué es AWS Secret Manager?

AWS Secret Manager permite a los usuarios proteger y cifrar el información confidencial de aplicaciones como tokens OAuth, credenciales de bases de datos, API, etc. Esta información confidencial se conoce como 'secreto' . A estos secretos solo acceden organismos autorizados y pueden rotarse para mejorar la seguridad.



Obtenga más información sobre cómo almacenar credenciales RDS en Secret Manager consultando este artículo: '¿Cómo almacenar las credenciales de Amazon RDS utilizando Secret Manager?'





¿Cómo acceder a los secretos de la API en AWS utilizando AWS Lambda?

Lambda proporciona soporte integrado para múltiples servicios, p. Depósito S3, API Gateway y Secret Manager. Las funciones Lambda se pueden utilizar para obtener el valor de los secretos configurados. Al utilizar los secretos de API en AWS Lambda Functions, los usuarios pueden interactuar con múltiples servicios de AWS. Estos secretos de API también son importantes para autorizar las funciones lambda.

Para acceder a las claves API en AWS Secret Manager mediante AWS Lambda, siga los pasos que se mencionan a continuación:



  • Paso 1: crear un secreto de API
  • Paso 2: crear una política de IAM
  • Paso 3: crear una función de IAM
  • Paso 4: cree una función Lambda

Paso 1: crear un secreto de API

Antes de acceder a una clave API en AWS Secret Manager, primero aprenderemos a crear un secreto de API . Para ello acceda al “Gerente Secreto” servicio de la Consola de administración de AWS:

Sobre el Consola principal del AWS Secret Manager, haga clic en el “Guarda un nuevo secreto” botón:

En el “Tipo secreto” bloque, elija el “Otro tipo de secreto” opción entre las diversas opciones mostradas:

Desplácese hacia abajo hasta el “Pares clave/valor” sección y proporcionar una par clave-valor único para su secreto de API. A agregar más pares clave-valor , clickea en el 'Añadir fila' botón:

El siguiente es el 'Clave de encriptación' sección. AWS proporciona una clave de cifrado predeterminada por el secreto. Sin embargo, el usuario también puede proporcionar un nombre personalizado para la clave. Manteniendo el valor predeterminado, haga clic en el botón ' Próximo ' botón:

En esta interfaz, el usuario debe proporcionar un nombre único por su secreto y un descripción que es opcional campo aquí:

Al mantener el configuración sin cambios , continúe haciendo clic en el botón ' Próximo ' botón:

Luego viene el Sección de revisión. Para confirmar todos los información proporcionado es correcto , clickea en el ' Almacenar 'Botón ubicado en la parte inferior de la interfaz:

El secreto ha sido creado exitosamente . Clickea en el ' Recargar 'Para mostrar el nombre del secreto en la Panel :

Paso 2: crear una política de IAM

A crear una política de IAM, acceder al servicio IAM desde la Consola de administración de AWS:

Desde el barra lateral del IAM servicio, haga clic en ' Políticas ' opción:

Sobre el Consola de políticas , clickea en el “Crear política” botón:

Obtenga más información sobre la política de AWS IAM consultando este artículo: 'Ejemplos de políticas de AWS IAM'

El siguiente es el 'Especificar permisos' sección. Busca y selecciona el “Gerente Secreto” servicio:

Desplácese hacia abajo hasta el “Acciones permitidas” bloquear. Aquí, desde los diferentes niveles de Acceso, toque el botón “ Leer ' opción. Selecciona el “Todas las acciones de lectura” opción de habilitar todas las lecturas servicios para esta póliza:

Desplácese hacia abajo hacia ' Recursos ”Sección y haga clic en el “Agregar ARN” opción:

Navega de regreso a la Panel de control de AWS Secret Manager y haga clic en el nombre del secreto. Copia el ' ARN ' del secreto debajo del ' ARN secreto ”etiqueta de la interfaz mostrada:

Sobre el Consola ahora , pegue el ARN copiado en el “ ARN ' campo:

Antes de hacer clic en el 'Agregar ARN' botón, haga clic en el 'Esta cuenta' para confirmar que los secretos existen en la misma cuenta. Después de configurar los ajustes, haga clic en el 'Agregar ARN' botón:

Después configurando todos ajustes de la póliza, haga clic en el botón “ Próximo ' botón:

En el Secciones de detalles de la póliza , proporcione el nombre de la póliza en el campo ' Nombre de directiva ' campo:

Clickea en el ' Crear política ' botón:

El política Ha sido creado exitosamente :

Paso 3: crear una función de IAM

En esta sección, cree una función de IAM que contenga los permisos necesarios para que las funciones de Lambda accedan a los secretos. Para ello haga clic en el botón “ Roles ”de la barra lateral de la función de IAM y luego toque el “Crear rol” botón de la interfaz:

Después de hacer clic en el “Crear rol” , se le mostrará la siguiente interfaz. Selecciona el “Servicio AWS” opción de las siguientes opciones ya que adjuntaremos esto Rol de IAM con la función lambda:

En el “Caso de uso” sección, busque el servicio lambda y selecciónelo. Golpea el ' Próximo ”En la parte inferior de la interfaz para continuar:

Sobre el siguiente interfaz , busque el nombre del Nombre de la póliza que configuramos anteriormente. De los resultados mostrados, seleccione el Nombre de directiva:

Haga clic en el ' Próximo 'Botón en la parte inferior de la interfaz para continuar:

Proporcionar una identificador único para tu Rol de IAM en el siguiente campo resaltado:

manteniendo el resto de la configuración por defecto , clickea en el “Crear rol” desplazándose hacia abajo hasta la parte inferior de la interfaz:

El papel ha sido exitosamente creado:

Para obtener más información sobre la creación de un rol de IAM en AWS, consulte este artículo: 'Cómo crear funciones de IAM en AWS' .

Paso 4: crear una función Lambda

El siguiente paso es crear la función Lambda. Esta función lambda contendrá el rol de IAM y obtendrá el valor de los secretos cuando se ejecute. Para acceder al servicio Lambda, busque ' lambda ”en la barra de búsqueda del Consola de administración de AWS . Haga clic en el nombre del servicio del resultado para visitar la consola:

En la interfaz inicial del servicio Lambda, haga clic en el “Crear función” botón:

Esto mostrará el “Crear función” interfaz. Selecciona el “Autor desde cero” opción y continúe proporcionando el nombre del Función lambda en el campo resaltado:

En el Campo de tiempo de ejecución , Selecciona el ' Pitón 3.9 ' ambiente:

Bajo el Sección de tiempo de ejecución , hay un 'Cambiar el rol de ejecución predeterminado' sección. Selecciona el 'Usar un rol existente' opción y luego especifique el rol en el “Rol existente” campo:

En la misma interfaz, toque el “Crear función” botón en la parte inferior de la interfaz:

Para obtener más información sobre cómo crear una función Lambda, consulte este artículo: 'Cómo crear una función Lambda con Pyhton Runtime' .

Se ha creado la función Lambda. El siguiente paso es proporcionar el código a la función Lambda. Cuando se ejecuta este código, mostrará los valores de la Gerente Secreto:

importar json
importar boto3
importar base64
de botocore. excepciones importar Error de cliente

def lambda_handler ( evento , contexto ) :
ambiente = evento [ 'entorno' ]
nombre_secreto = 'shmaster19/%s/clave' % ambiente
nombre_región = 'ap-sureste-1'
   
sesión = boto3. sesión . Sesión ( )
cliente = sesión. cliente (
Nombre del Servicio = 'administrador de secretos' ,
nombre_región = nombre_región
    )
   
    intentar :
respuesta_valor_secreto = cliente. get_secret_value (
ID secreto = nombre_secreto
    )
excepto ClientError como error :
imprimir ( error )
    demás :
        si 'Cadena Secreta' en respuesta_valor_secreto :
secreto = json. cargas ( respuesta_valor_secreto [ 'Cadena Secreta' ] )
            devolver secreto
        demás :
secreto_binario_decodificado = base64. b64decodificar ( respuesta_valor_secreto [ 'SecretoBinario' ] )
            devolver secreto_binario_decodificado
  • importar json: Se utiliza para realizar operaciones JSON.
  • importar boto3: es el SDK para la comunicación entre AWS y Python.
  • importar base64: Se utiliza para realizar funciones de codificación y decodificación de datos binarios como Base64.
  • importar error de cliente: Esto permite a los usuarios manejar excepciones en el código escrito.
  • nombre_secreto: En esta variable, proporcione el nombre de su secreto. Tenga en cuenta que este secreto contiene '%s' . Esto ocurre cuando un usuario tiene varias claves de formato similar. Por ejemplo, si un usuario ha creado dos secretos, por ejemplo, “apikey/dev/clave” y “apikey/prod/clave” . Luego en el '%s' , si el usuario proporciona “ desarrollador ”, la función Lambda proporcionará la clave de desarrollo (apikey/dev/key) y viceversa.
  • boto. sesión.Sesión(): permite a los usuarios crear clientes de servicio y respuestas.
  • nombre_región: Proporcione el nombre de la región en la que está configurado su secreto de AWS.
  • Respuesta_valor_secreto: En esta variable, estamos usando el ' cliente.get_secret_value ”Función que devolverá el valor del secreto.
  • Decoded_binary_secert: Después de adquirir el valor del secreto, será decodificado en formato base 64 .

Después de pegar el código en la función Lambda, haga clic en ' Desplegar Botón ”para guardar y aplicar cambios:

Paso 5: probar el código

En esta sección del blog verificaremos si el código funciona o no. Para ello haga clic en el botón “ Prueba ”Después de implementar con éxito los cambios en la función Lambda:

En la siguiente interfaz, proporcione el nombre para la prueba evento en el 'Nombre del evento' campo:

Desplácese hacia abajo hasta el Sección JSON del evento , especifica el ' ambiente ” y proporcione el valor en formato JSON. El ' valor ” de la clave se pasará a '%s' . Como los secretos que hemos especificado contienen el “ desarrollador ' valor, el ' desarrollador 'El valor se pasa al' ambiente ' variable. La función Lambda identificará el secreto cuando se ejecute el código, ya que el identificador del secreto específico se proporciona en el código. Después de especificar los detalles, haga clic en ' Ahorrar ' botón:

Cuando el evento se haya creado correctamente, haga clic en ' Prueba ' botón:

Aquí tenemos obtenido con éxito el valor de nuestro secreto especificado:

Eso es todo de esta guía.

Conclusión

Para acceder a las claves de API en Secret Manager usando Lambda, primero cree un secreto de API, una política de IAM, un rol y una función Lambda y ejecute el código de la función. Se pueden invocar funciones Lambda para obtener los valores de AWS Secret Manager especificando el identificador del secreto al ejecutar el código. Este artículo proporciona pautas paso a paso sobre cómo acceder a las claves API en AWS Secret Manager mediante AWS Lambda.