Deberia existir una clase para utilizar el secretmanager y realizar la practica
Importancia de la Infraestructura como código
Paso a paso para infraestructura cómo código
Cómo desplegar infraestructura en Cloud
Herramientas para desplegar infraestructura como código
Introducción y ventajas de usar Cloudformation
Laboratorio # 1: explorando la consola de Cloudformation
Funcionalidades y características en Cloudformation
Anatomía de un template en Cloudformation
Clase práctica creación de un template
Despliegue del template en Cloudformation
Caracteristícas finales del template en Cloudformation
Stacks: características y despliegue
Bonus: ejemplo de stack
Stack Sets: despliegues multicuenta
Laboratorio # 2: desplegando un Stack Set en un esquema multi-cuenta
Nested Stacks: composición y ejemplos
Laboratorio # 3: creación de recursos del Stack
Laboratorio #3: pruebas de funcionamiento del stack
Laboratorio # 4: crear nuestro primer Nested Stack
Laboratorio #4: pruebas de funcionamiento del Nested Stack
Laboratorio # 5: cómo crear un stack de forma gráfica con Designer
Funciones en Cloudformation
Funciones intrínsecas: GetAtt, FindInMap, Join, Split y Select
Funciones intrínsecas: Sub, Ref y ImportValue.
Funciones condicionales: If, Not, And y Equals
Automatización y despliegues de infraestructura como código
Importancia de la automatización de infraestructura
Cómo automatizar despliegues de infraestructura
Creación de pipelines para despliegue de infraestructura
Laboratorio #6: Estructura de repositorio para despliegue de función lambda
Laboratorio #6: prerequisitos para creación del pipeline
Laboratorio #6: despliegue de pre requisitos
Laboratorio #6: creación del pipeline para el despliegue de una función lambda
Laboratorio #6: verificación de recursos creados en el pipeline
Diagnostico de errores y seguridad en infraestructura como código.
Seguridad en templates
Troubleshooting
Seguridad en despliegues
Laboratorio # 7: identificación de errores en despliegues
Funciones lambda en Cloudformation
Cómo desplegar lambda como función
Cómo desplegar lambda como función serverless
Laboratorio # 8: puesta en producción de nuestra función lambda
Conclusiones
Conclusiones finales
Lectura
Creando infraestructura como código en AWS a través de Cloudformation es una buena práctica para cualquier tipo de proyecto, sin embargo debemos tener en cuenta diferentes aspectos que nos permitirán asegurar todo el proceso de despliegue de recursos y servicios.
Secrets Manager
Link: https://docs.aws.amazon.com/es_es/secretsmanager/latest/userguide/intro.html
AWS Secrets Manager es un servicio de AWS que permite administrar secretos y su ciclo de vida dentro de AWS. Pueden ser de diferentes tipos, puede controlarlos, rotarlos y cifrarlos.
Como vemos en la imagen podemos almacenar 4 tipos de secretos que se integran directamente con servicios de AWS como:
1- RDS → Bases de datos relacionales (puedes ver más en nuestro curso de bases de datos en AWS).
2- **Redshift Cluster **→ Servicio de Datalake en AWS(puedes ver más en nuestro curso de BigData en AWS)
3- DocumentDB → Base de datos de documentos (parecida a Mongo DB).
4- Otras bases de datos.
Por último se puede guardar otro tipo de secreto.
Para cifrar tokens de github o información importante en nuestros templates de cloudformation utilizaremos la opción “Other type of secrets”, adicionalmente debemos seleccionar la llave KMS con la que ciframos el secreto.
EJEMPLO
Necesitamos crear un Codepipeline usando Cloudformation y en una de las fases del pipeline tiene que leer el código de AWS, para esto debemos utilizar un token de conexión a Github, este token debe permanecer oculto por seguridad.
Para este fin debemos crear un secret en AWS Secrets Manager.
Este secreto almacenará un token de conexión a GitHub.
Una vez almacenemos el secreto nos pedirá un nombre visible para guardarlo, en este caso lo pondremos como SecretGithub.
Cuando necesitemos utilizar este secreto en cloudformation tenemos que hacerlo de la siguiente forma:
OAuthToken:"{{resolve:secretsmanager:SecretGithub:SecretString:TokenGithub}}"
En esta definición se puede observar dónde se utilizarán los nombre del secreto y la llave del mismo.
Llave del secreto: TokenGithub
**Nombre del secreto: **SecretGithub
De esta forma podremos poner todo el código del template de Cloudformation en un repositorio y no tendremos expuesto ninguna información confidencial. Es importante aclarar que el role de Codepipeline debe tener permisos sobre secrets manager específicamente sobre GetSecretValue.
PRICING
**Por secreto: ** $0.40 dólares por mes.
**Por llamadas a la API: ** $0.05 dólares por cada 10.000 llamadas.
AWS KMS
Link: https://docs.aws.amazon.com/es_es/kms/latest/developerguide/overview.html
Este servicio permite controlar las llaves de cifrado que se utilizan para el cifrado de información en AWS. Cuando se cree una llave KMS se deben especificar 2 niveles de permisos:
1- Quienes pueden usar la llave.
2- Quienes son los administradores de la llave.
Adicionalmente este servicio se integra con Cloudtrail en AWS el cual registra todas las llamadas a la API, es decir, nos permite identificar quién, cuándo y cuántas veces han usado o intentado utilizar la llave.
Cuando utilizamos secrets manager podemos ver que el secreto termina siendo cifrado por KMS, podemos entonces elegir entre la llave predeterminada o alguna que nosotros hayamos creado.
EJEMPLO
Necesitamos realizar el cifrado de una cadena de conexión, para este fin tendremos diferentes alternativas como:
Adicionalmente podemos utilizar otros lenguajes de programación soportados por AWS, para utilizar estas cadenas cifradas debemos garantizar que el servicio que accederá a él, tenga permisos para hacer actividades de Decrypt.
Aportes 6
Preguntas 1
Deberia existir una clase para utilizar el secretmanager y realizar la practica
Cual servicio debe tener el rol con permisos sobre secrets manager CodePipeline o CloudFormation?
Excelente curso gracias carlos
Gracias 😃
😃
Gracias. Buena explicación.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.