Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
En 2016, se me encargó redactar controles de computación en nube como parte de un gran esfuerzo de migración a la nube. Estos controles se basaban en normas adoptadas por -y creadas dentro de- nuestraorganización, y evitaban cambios no deseados y potencialmente peligrosos en nuestros entornos de nube. Empecé a escribir los controles utilizando lo que creía que era la mejor herramienta de mi caja de herramientas, Java; yo era un experto en la materia (SME) de Java, y el proveedor de servicios en la nube (CSP) ofrecía un kit de desarrollo de software (SDK) Java maduro.
El primer y, según parece, último control que escribí en Java aplicaba el cifrado de datos en reposo en el almacenamiento de objetos. Hay ciertos tipos de control dentro de la computación en nube que considero fundamentales para una computación segura, y el cifrado de los datos en reposo y en tránsito encabeza mi lista.
Rápidamente me di cuenta de que construir y ejecutar programas o módulos individuales para implementar controles para la vasta colección de servicios de computación en nube y sus respectivas funciones no era escalable ni fácilmente soportable. Escribir código para consumir el SDK era un nivel demasiado bajo. Iba demasiado despacio, y me resultaba difícil compartir mi enfoque de forma que facilitara una amplia adopción. Las PYMES de normas y controles no eran programadores Java, y no podía esperar que aprendieran Java sólo para construir nuevos controles o incluso dar soporte a los ya construidos.
Necesitaba la Política como Código
Necesitaba una solución más abstracta -tal vez basada en un lenguaje específico del dominio (DSL)- que proporcionara un léxico común que resultara más familiar a la gente que especificaba los controles de la computación en nube. Independientemente de la implementación subyacente, los usuarios que definan los controles deben ser expertos en controles de computación en nube, no en la tecnología utilizada para implementarlos. La solución que elegí fue Cloud Custodian (c7n).
C7n fue desarrollado por un colega mío y, con el tiempo, ha sido ampliamente adoptado por usuarios y proveedores de computación en nube. Con c7n desplegamos motores de reglas en nuestros entornos de nube y escribimos políticas utilizando un DSL YAML fácil de controlar. Además, el DSL no requería ningún conocimiento del código Python subyacente utilizado para construir c7n. C7n fue la primera herramienta Policy as Code (PaC) que utilicé.
Nota
Como punto de referencia, la Política como Código (PaC) -el tema central de este libro- es el uso de artefactos de código para gestionar y aplicar reglas y condiciones. Los motores de políticas son los programas que interpretan los artefactos de políticas para aplicar las decisiones políticas. Las reglas y condiciones definidas en los artefactos de políticas nos ayudan a aplicar las normas y políticas que hemos creado o adoptado. Estas implementaciones -conocidas como controles- aplicandecisiones de seguridad, cumplimiento, gobernanza y buenas prácticas que están diseñadas para prevenir y reaccionar ante cambios no deseados en los sistemas que soportamos y utilizamos.
De aquella experiencia aprendí que la seguridad, el cumplimiento y la gobernanza no tenían por qué obstaculizar el progreso. Redactamos políticas que servían de límites entre los que trabajaban nuestros ingenieros de la nube. Estos límites no les detuvieron; es más, nuestros ingenieros aprendieron los controles que debían seguir, y redujimos los cambios no deseados en nuestros entornos de nube. Gestionamos las políticas de c7n como otros artefactos de código, empleando herramientas de integración continua (CI) y entrega continua (CD) para mantener actualizadas nuestras políticas y entornos en la nube.
Las soluciones PaC permiten a los usuarios escribir políticas para imponer comportamientos. Estos comportamientos se encuadran en los controles de seguridad, cumplimiento y gobernanza, así como en las buenas prácticas. PaC -con las políticas adecuadas- puede reducir o incluso eliminar los comportamientos no deterministas dentro de tus artefactos y sistemas. Y cuando se trata de garantizar la seguridad de los sistemas, menos sorpresas suele considerarse algo positivo.
Quién debería leer este libro
Este libro está dirigido a profesionales de DevOps, operadores de clústeres de Kubernetes, ingenieros de seguridad y cualquier persona encargada de garantizar la seguridad de las operaciones en entornos nativos de la nube y de todo como código. En este libro, presento conceptos y casos de uso de PaC, y te expongo patrones y soluciones para ayudarte a utilizar con éxito PaC para tus necesidades de seguridad, cumplimiento y gobernanza. Creo que este libro puede servir de referencia para quienes necesitéis comprender el PaC y elegir la solución adecuada para vuestros casos de uso. También puedes utilizar este libro para descubrir técnicas y patrones que puedes aplicar inmediatamente. Creo que algunos de vosotros releeréis este libro para comprender mejor los distintos aspectos de la PaC.
A los efectos de este libro, me refiero a soluciones PaC y PaC que son, en su mayor parte, neutrales con respecto al proveedor y agnósticas con respecto al CSP. Al final de este libro, deberías comprender mejor la teoría y las capacidades de la PaC, así como los casos de uso, los patrones y las buenas prácticas para los controles de seguridad, cumplimiento y gobernanza. En el Capítulo 1, presento un proceso que puedes utilizar para elegir la solución de PaC adecuada a tus necesidades y capacidades. A medida que leas este libro, vuelve a consultar el proceso para comprender mejor cada solución y su posible adecuación a tus necesidades.
Convenciones utilizadas en este libro
En este libro se utilizan las siguientes convenciones tipográficas:
- Cursiva
-
Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.
Constant width
-
Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.
Constant width bold
-
Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.
Constant width italic
-
Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.
Consejo
Este elemento significa un consejo o sugerencia.
Nota
Este elemento significa una nota general.
Advertencia
Este elemento indica una advertencia o precaución.
Utilizar ejemplos de código
El material complementario (ejemplos de código, etc.) se puede descargar en https://github.com/Policy-as-Code-Book.
Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a support@oreilly.com.
Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.
Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Policy as Code por Jimmy Ray (O'Reilly). Copyright 2024 Jimmy Ray, 978-1-098-13918-6".
Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en permissions@oreilly.com.
Aprendizaje en línea O'Reilly
Nota
Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.
Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.
Cómo contactar con nosotros
Dirige tus comentarios y preguntas sobre este libro a la editorial:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Norte
- Sebastopol, CA 95472
- 800-889-8969 (en Estados Unidos o Canadá)
- 707-827-7019 (internacional o local)
- 707-829-0104 (fax)
- support@oreilly.com
- https://www.oreilly.com/about/contact.html
Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/policy-as-code.
Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.
Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media.
Míranos en YouTube: https://youtube.com/oreillymedia.
Agradecimientos
Aunque soy la única autora que aparece en este libro y me propuse escribirlo sola, enseguida me encontré buscando la orientación de quienes me habían precedido y de otras PYMES del sector. Empecé este esfuerzo cuando aún estaba en AWS, y Michael Hausenblas -mi colega y un prolífico autor cuyos libros suelo leer de principio a fin- me ayudó a ponerme en marcha con O'Reilly y el proceso de escritura. Habría sido mucho más difícil lanzar este esfuerzo sin la experiencia y los conocimientos de Michael como guía.
Tuve la suerte de recibir revisiones técnicas, experiencia en la materia, comentarios críticos y ánimos de varias personas durante el proceso; estoy en deuda con ellos, aunque no se den cuenta. Anders Eknert, Jesse Loudon y Rosemary Wang fueron mis primeros revisores técnicos. Fueron duros, me retaron a pensar más allá de mi perspectiva y a tener en cuenta las necesidades de mis lectores, y pusieron el listón y mis expectativas muy altos. Siguieron ayudándome a lo largo de la redacción de este libro con temas de política general, Kubernetes y Open Policy Agent (OPA); en lo que se refiere a OPA, Rego y PaC, Anders aportó una gran cantidad de información valiosa. Dentro del canal de Slack de la comunidad OPA, Stephan Renatus destaca por ayudarme a responder preguntas justo a tiempo para terminar los temas.
Para los temas de MagTape y OPA, Joe Searcy fue de gran ayuda. Aunque el proyecto está algo inactivo, ese capítulo es uno de mis favoritos de este libro, ya que desafía el statu quo de la integración de PaC y Kubernetes e ilustra el arte de lo posible .
Conozco a Jim Bugwadia desde hace años, desde cuando trabajaba en Capital One; él y yo colaboramos en un par de blogs sobre AWS, esfuerzos para los que también conté con la ayuda de Chip Zoller. Jim y Chip aportaron una visión muy necesaria de Kubernetes y Kyverno, así como revisiones técnicas sobre temas relacionados. Juntos, ayudaron a corregir y suavizar lo que yo creía saber.
Michael LaPane ayudó con varios temas complejos de Terraform, y discutimos el libro en varias sesiones en el Crazy Rooster de Powhatan, Virginia, y en su casa, consumiendo barbacoa.
Pasé varias horas escribiendo este libro en el canal Slack de Gatekeeper, y Sertaç Özercan y Rita Zhang me ayudaron mucho.
Eve Ben Ezra, Michael Hume y Thomas Lawson proporcionaron una valiosa ayuda y comprensión sobre Conftest en forma de oportunas charlas en la KubeCon y publicaciones en el blog.
Cuando llegó el momento de escribir sobre Cloud Custodian para la infraestructura como servicio (IaaS) y Kubernetes, Kapil Thangavelu (creador de Cloud Custodian) y David Shepherd -ambos colegas de mis días en Capital One- y AJ Kerrigan respondieron de buena gana a todas mis preguntas y me ayudaron a mantenerme en el buen camino. Una cosa es utilizar una tecnología y otra muy distinta es poder escribir sobre ella con autoridad.
Rich Burroughs -de Loft Labs- me ayudó con jsPolicy, y Christopher Phillips -otro antiguo colega de Capital One, ahora en Anchore- me ayudó con SBOM y las herramientas Anchore Syft y Grype.
En lo que respecta a los temas de la cadena de suministro de software, recibí una ayuda considerable de la gente de Liatrio, incluidos Oliver Eikenberry, Robert Kelly, Jonathan Dorsey, Ahmed Alsabag y Eric Chapman. Liatrio cuenta con una gran cantidad de conocimientos y experiencia en el ámbito de la cadena de suministro de software. Y, como mi capítulo sobre PaC y la cadena de suministro de software era uno de los últimos, recibí ayuda justo a tiempo de Cassie Crossley y su recién acuñado -en aquel momento- libro Software Supply Chain Security (O'Reilly). Dan Lorenc me ayudó a destilar simplicidad del complejo tema de cómo se utiliza la infraestructura de clave pública para aplicar firmas a artefactos y atestados para crear declaraciones de la cadena de suministro de software.
Agradezco la experiencia de construir Kubernetes de la manera difícil -utilizando Bash y Go- conmis entonces colegas de Capital One Andrew Myhre y Zach Abrahamson. Lecciones que aprendí entonces y que todavía utilizo hoy.
Quiero dar las gracias a Mark Donovan, Jeremy Cowan y Jesse Butler, tres extraordinarios colegas de AWS: Mark y yo nos conocemos desde mis primeros días en Capital One. No estoy seguro de que sepan cuánto confío en su tutoría.
Escribir, como trabajar, no está exento de sacrificios. Escribir un libro es otro nivel de sacrificio, y mi familia era buena para no quejarse ni mostrar decepción cuando trabajaba para cumplir el horario. Aprendí nuevas técnicas para navegar por la casa silenciosa y oscura mientras trabajaba hasta altas horas de la noche. Por mucho que intentara no hacerlo, siempre parecía despertar a mi mujer. Agradezco su paciencia.
Por último, nada de esto sería posible sin mi equipo de O'Reilly. Melissa Potter es una fantástica editora de desarrollo de contenidos y una de las principales razones por las que pude entregar el contenido de este libro. Ella y yo nos reuníamos con regularidad, y me ayudó a entender cómo escribir para O'Reilly, recordándome cuál era la mejor forma de crear contenidos. Mientras sorteaba varios problemas relacionados con la salud y el trabajo, Melissa estuvo ahí para animarme y ayudarme con la programación. Liz Faerm es editora de producción, y habitualmente me recompensaba con mis primeras publicaciones y recomendaciones adicionales para mejorar la estructura de mis contenidos. Simina Calin -editora sénior de adquisiciones- fue mi principal contacto inicial con O'Reilly, y me ayudó a elaborar una estrategia y un esquema para todo el libro.
Get La Política como Código now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.