Configuración de Endpoints y Políticas en AWS con Terraform
Clase 22 de 30 • Curso de Ciberseguridad para Desarrollo Web
Resumen
¿Cómo configurar un endpoint en una VPC para acceder a Secrets Manager?
Configurar endpoints en una VPC es un paso crucial para garantizar que los recursos puedan comunicarse con servicios externos como AWS Secrets Manager. Aquí te explicamos cómo se hace:
- Accede a la consola de AWS y dirige a la sección de VPCs para encontrar la tuya.
- Crea un nuevo endpoint seleccionando Create Endpoint.
- Asigna un nombre al endpoint, por ejemplo,
AccessSecretsBloodSea
. - Selecciona Secrets Manager como el servicio que podrá acceder.
- Elige tu VPC por defecto y selecciona todas las subredes que estás utilizando.
- Configura el tipo de dirección como IPv4 y define el Security Group que se aplicará.
- Establece una política con permisos de Full Access.
- Crea el endpoint.
Una vez configurado, asegúrate de que los recursos dentro de tu Security Group puedan acceder al endpoint mediante ajustes en las Security Group Rules.
¿Cómo crear políticas IAM en Terraform para acceder a AWS Secrets Manager?
Terraform te ayuda a definir problemas de acceso mediante políticas IAM. Aquí te mostramos cómo:
- Dentro de tu carpeta de infraestructura en Visual Studio, navega a IAM y a las políticas.
- Crea un archivo nuevo llamado
CanGetDbPassword
. - Define la política que permitirá el acceso seguro a un secret específico.
resource "aws_iam_policy" "CanGetDbPassword" {
name = "CanGetDbPassword"
description = "Policy for lambdas to access DB password"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "secretsmanager:GetSecretValue"
Effect = "Allow"
Resource = "arn:aws:secretsmanager:REGION:ACCOUNT-ID:secret:SECRET-NAME"
}
]
})
}
- Asegúrate de reemplazar
"arn:aws:secretsmanager:REGION:ACCOUNT-ID:secret:SECRET-NAME"
con el ARN real de tu secret. - Asocia esta política al rol que tus lambdas asumirán para permitir el acceso al Secrets Manager.
¿Cómo conectar lambdas a una base de datos con Terraform?
Conectar lambdas a bases de datos es crucial para muchas aplicaciones. Sigue estos pasos para configurar las variables de entorno necesarias:
- Entra a get metrics en tu configuración de lambda.
- Define las variables de entorno necesarias.
- DB host: El endpoint de tu base de datos.
- DB user: Usuario de tu base de datos, por ejemplo,
Platzi
. - DB password: El nombre de tu secreto en Secrets Manager, no el ARN.
- DB name: Generalmente sabemos que es Postgres en aplicaciones estándar.
resource "aws_lambda_function" "example_lambda" {
...
environment {
variables = {
DB_HOST = "database-endpoint"
DB_USER = "Platzi"
DB_PASSWORD = "secret-name"
DB_NAME = "Postgres"
}
}
...
}
- Realiza un despliegue completo con Terraform plan y Terraform apply después de modificar las variables.
Recuerda que, durante estos procesos, el código no se compila dentro del despliegue del infraestructura; sólo se proveen y configuran los recursos necesarios desde S3.
¿Cómo validar la implementación con Postman y ajustar el token?
Una vez que hayas configurado todo adecuadamente, es crucial verificar que tus implementaciones funcionan como se esperaba. Postman es una herramienta esencial para probar los endpoints y realizar peticiones.
- Obtén un nuevo token para tu enlace en Postman.
- Introduce la URL del token en el navegador, llena tus credenciales y copia el token obtenido.
- Cambia el token en Postman y asegúrate de que esté correctamente formateado sin espacios.
- Realiza la petición para verificar que los datos se pueden obtener y están correctos.
Estos pasos te aseguran una implementación segura y funcional. Sigue aprendiendo y profundizando en los temas para perfeccionar tus habilidades en el uso de AWS y Terraform. ¡El camino al dominio es continuar practicando y explorando!