{"id":1178,"date":"2026-03-11T15:20:32","date_gmt":"2026-03-11T18:20:32","guid":{"rendered":"https:\/\/maurobernal.com.ar\/blog\/?p=1178"},"modified":"2026-03-11T20:02:26","modified_gmt":"2026-03-11T23:02:26","slug":"seguridad-en-docker-buenas-practicas-errores-comunes","status":"publish","type":"post","link":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/","title":{"rendered":"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed"},"content":{"rendered":"\n<p class=\"intro-destacado\">Desplegu\u00e9 una imagen con credenciales hardcodeadas en el Dockerfile. Una vez. Cuando me di cuenta, la imagen estaba en el registry privado de la empresa y nadie m\u00e1s la hab\u00eda visto \u2014 pero el susto fue suficiente para que revisara la seguridad de todos mis contenedores ese mismo d\u00eda.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Los errores de seguridad m\u00e1s comunes en Docker<\/h2>\n\n\n\n<p>La mayor\u00eda de los problemas de seguridad en Docker no son bugs ex\u00f3ticos: son malas pr\u00e1cticas que cometemos por desconocimiento o por apurarnos. Ac\u00e1 van los que yo comet\u00ed y c\u00f3mo los correg\u00ed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Error 1: Correr contenedores como root<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code\"># &#x274c; Por defecto, el proceso corre como root dentro del contenedor\nFROM node:20-alpine\nWORKDIR \/app\nCOPY . .\nRUN npm install\nCMD [\"node\", \"server.js\"]\n# Si el proceso es comprometido, tiene privilegios de root dentro del contenedor\n\n# &#x2705; Crear y usar un usuario no-root\nFROM node:20-alpine\nWORKDIR \/app\n\n# Crear usuario sin privilegios\nRUN addgroup -S appgroup && adduser -S appuser -G appgroup\n\n# Copiar archivos con el usuario correcto\nCOPY --chown=appuser:appgroup . .\nRUN npm install --only=production\n\nUSER appuser\nCMD [\"node\", \"server.js\"]<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Error 2: Secretos en el Dockerfile o en variables de entorno planas<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code\"># &#x274c; NUNCA - el secreto queda grabado en una capa para siempre\nENV DB_PASSWORD=mipassword123\nRUN curl -H \"Authorization: Bearer TOKENREALAQUI\" https:\/\/api.interna.com\/config\n\n# Aunque hagas otra capa que lo \"borre\", sigue en la historia de la imagen:\ndocker history mi-imagen  # el secreto es visible\n\n# &#x2705; Para secrets en build-time, usar BuildKit secrets\n# Esto NO deja rastro en las capas\n# syntax=docker\/dockerfile:1\nFROM alpine\nRUN --mount=type=secret,id=api_token     TOKEN=$(cat \/run\/secrets\/api_token) &&     curl -H \"Authorization: Bearer $TOKEN\" https:\/\/api.interna.com\/config\n\n# Build:\ndocker build --secret id=api_token,src=.\/secrets\/api_token .\n\n# &#x2705; Para secrets en runtime, usar Docker secrets (Swarm) o variables de entorno\n# via archivo .env que NUNCA va al repositorio\ndocker run --env-file .env.prod mi-imagen<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Error 3: Im\u00e1genes base desactualizadas<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code\"># Escanear una imagen en busca de vulnerabilidades conocidas\ndocker scout cves mi-imagen:latest\n\n# O con Trivy (m\u00e1s completo, lo que uso en CI)\ndocker run --rm   -v \/var\/run\/docker.sock:\/var\/run\/docker.sock   aquasec\/trivy image mi-imagen:latest\n\n# Resultado t\u00edpico:\n# 2026-03-11T10:00:00Z INFO Detected OS: alpine 3.18\n# CRITICAL: 0, HIGH: 1, MEDIUM: 3, LOW: 8\n# HIGH: libssl CVE-2024-XXXXX - update to 3.1.5-r0<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Error 4: El .dockerignore inexistente<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code\"># Sin .dockerignore, COPY . . incluye todo \u2014 incluyendo:\n# - .git\/ (historial completo del repo)\n# - .env (credenciales locales)\n# - node_modules\/ (pesado e innecesario)\n# - tests\/ (c\u00f3digo de tests en la imagen de producci\u00f3n)\n\n# .dockerignore completo que uso en todos mis proyectos:\n.git\n.gitignore\n.env\n.env.*\n!.env.example\n**\/node_modules\n**\/bin\n**\/obj\n**\/*.log\n**\/.DS_Store\ndocker-compose*.yml\nDockerfile*\ntests\/\ndocs\/\nREADME.md\n.github\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Dockerfile inseguro vs seguro: comparaci\u00f3n completa<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code\"># &#x274c; Dockerfile inseguro\nFROM node:latest                    # versi\u00f3n impredecible\nENV API_KEY=abc123supersecret       # secreto en capa\nWORKDIR \/app\nCOPY . .                            # sin .dockerignore, incluye .env y .git\nRUN npm install                     # instala todo incluyendo devDependencies\nEXPOSE 3000\nCMD [\"node\", \"server.js\"]           # corre como root<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code\"># &#x2705; Dockerfile seguro\nFROM node:20.11.0-alpine3.19        # versi\u00f3n fija y verificable\n\nWORKDIR \/app\n\n# Usuario no-root\nRUN addgroup -S app && adduser -S app -G app\n\n# Dependencias primero (aprovecha cache, sin devDependencies)\nCOPY --chown=app:app package*.json .\/\nRUN npm ci --only=production && npm cache clean --force\n\n# C\u00f3digo fuente (sin secretos - .dockerignore los excluye)\nCOPY --chown=app:app src\/ .\/src\/\n\n# Sin variables de entorno sensibles en la imagen\n# Se pasan en runtime con --env-file\n\nUSER app\nEXPOSE 3000\n\n# Healthcheck\nHEALTHCHECK --interval=30s --timeout=3s --retries=3   CMD wget -q -O \/dev\/null http:\/\/localhost:3000\/health || exit 1\n\nCMD [\"node\", \"src\/server.js\"]<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Limitar capacidades del contenedor<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code\"># Eliminar todas las capabilities de Linux y agregar solo las necesarias\ndocker run   --cap-drop=ALL   --cap-add=NET_BIND_SERVICE \\   # solo si necesita bind a puerto < 1024\n  --read-only \\                   # sistema de archivos de solo lectura\n  --tmpfs \/tmp \\                  # \u00e1rea de escritura temporal\n  --security-opt=no-new-privileges   --user 1001:1001   mi-imagen:latest<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">El checklist que uso antes de cada deploy<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#x2705; \u00bfLa imagen corre con usuario no-root?<\/li>\n<li>&#x2705; \u00bfHay .dockerignore con .env excluido?<\/li>\n<li>&#x2705; \u00bfLos secretos van en runtime, no en la imagen?<\/li>\n<li>&#x2705; \u00bfLa imagen base tiene versi\u00f3n fija?<\/li>\n<li>&#x2705; \u00bfPas\u00e9 Trivy o docker scout y no hay CVEs cr\u00edticos?<\/li>\n<li>&#x2705; \u00bfLos puertos expuestos son solo los necesarios?<\/li>\n<li>&#x2705; \u00bfHay healthcheck configurado?<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><em>\u2190 <a href=\"https:\/\/maurobernal.com.ar\/blog\/blog\/kubernetes\/microservicios-con-docker-arquitectura-practica\/\">Art\u00edculo anterior: Microservicios con Docker<\/a> | <strong>Serie Docker Completo<\/strong> | Pr\u00f3ximo: Docker vs Kubernetes \u2192<\/em><\/p>\n\n\n<hr class=\"wp-block-separator\"\/>\n<p><em>\u2190 <a href=\"https:\/\/maurobernal.com.ar\/blog\/blog\/kubernetes\/microservicios-con-docker-arquitectura-practica\/\">Art\u00edculo anterior: Microservicios con Docker: lo que aprend\u00ed armando mi primera arquitectura<\/a> | <strong>Serie Docker Completo<\/strong> | Pr\u00f3ximo: <a href=\"https:\/\/maurobernal.com.ar\/blog\/blog\/kubernetes\/docker-vs-kubernetes-cuando-usar-cada-uno\/\">Docker vs Kubernetes: cu\u00e1ndo me alcanza con uno y cu\u00e1ndo necesito el otro \u2192<\/a><\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>Los errores de seguridad m\u00e1s comunes en Docker: root como usuario, secretos en capas, .dockerignore ausente. Dockerfile inseguro vs seguro y checklist pre-deploy.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[233],"tags":[241,242,240,215,269,270,268],"class_list":["post-1178","post","type-post","status-publish","format-standard","hentry","category-kubernetes","tag-contenedores","tag-devops","tag-docker","tag-linux","tag-rootless","tag-secrets","tag-seguridad"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed &#183; devops Mauro Bernal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed &#183; devops Mauro Bernal\" \/>\n<meta property=\"og:description\" content=\"Los errores de seguridad m\u00e1s comunes en Docker: root como usuario, secretos en capas, .dockerignore ausente. Dockerfile inseguro vs seguro y checklist pre-deploy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/\" \/>\n<meta property=\"og:site_name\" content=\"devops Mauro Bernal\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-11T18:20:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-11T23:02:26+00:00\" \/>\n<meta name=\"author\" content=\"Mauro Bernal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:site\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mauro Bernal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/seguridad-en-docker-buenas-practicas-errores-comunes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/seguridad-en-docker-buenas-practicas-errores-comunes\\\/\"},\"author\":{\"name\":\"Mauro Bernal\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"headline\":\"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed\",\"datePublished\":\"2026-03-11T18:20:32+00:00\",\"dateModified\":\"2026-03-11T23:02:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/seguridad-en-docker-buenas-practicas-errores-comunes\\\/\"},\"wordCount\":254,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"keywords\":[\"contenedores\",\"devops\",\"docker\",\"linux\",\"rootless\",\"secrets\",\"seguridad\"],\"articleSection\":[\"Kubernetes\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/seguridad-en-docker-buenas-practicas-errores-comunes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/seguridad-en-docker-buenas-practicas-errores-comunes\\\/\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/seguridad-en-docker-buenas-practicas-errores-comunes\\\/\",\"name\":\"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed &#183; devops Mauro Bernal\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\"},\"datePublished\":\"2026-03-11T18:20:32+00:00\",\"dateModified\":\"2026-03-11T23:02:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/seguridad-en-docker-buenas-practicas-errores-comunes\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/seguridad-en-docker-buenas-practicas-errores-comunes\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/seguridad-en-docker-buenas-practicas-errores-comunes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\",\"name\":\"devops Mauro Bernal\",\"description\":\"Cuando tu trabajo es hacer que las cosas funcionen bien...\",\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\",\"name\":\"Mauro Bernal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"width\":1740,\"height\":1740,\"caption\":\"Mauro Bernal\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\"},\"description\":\"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman\",\"sameAs\":[\"https:\\\/\\\/maurobernal.com.ar\",\"https:\\\/\\\/x.com\\\/_maurobernal\",\"https:\\\/\\\/youtube.com\\\/maurobernal\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed &#183; devops Mauro Bernal","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/","og_locale":"es_ES","og_type":"article","og_title":"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed &#183; devops Mauro Bernal","og_description":"Los errores de seguridad m\u00e1s comunes en Docker: root como usuario, secretos en capas, .dockerignore ausente. Dockerfile inseguro vs seguro y checklist pre-deploy.","og_url":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/","og_site_name":"devops Mauro Bernal","article_published_time":"2026-03-11T18:20:32+00:00","article_modified_time":"2026-03-11T23:02:26+00:00","author":"Mauro Bernal","twitter_card":"summary_large_image","twitter_creator":"@_maurobernal","twitter_site":"@_maurobernal","twitter_misc":{"Escrito por":"Mauro Bernal","Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/#article","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/"},"author":{"name":"Mauro Bernal","@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"headline":"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed","datePublished":"2026-03-11T18:20:32+00:00","dateModified":"2026-03-11T23:02:26+00:00","mainEntityOfPage":{"@id":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/"},"wordCount":254,"commentCount":0,"publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"keywords":["contenedores","devops","docker","linux","rootless","secrets","seguridad"],"articleSection":["Kubernetes"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/","url":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/","name":"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed &#183; devops Mauro Bernal","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#website"},"datePublished":"2026-03-11T18:20:32+00:00","dateModified":"2026-03-11T23:02:26+00:00","breadcrumb":{"@id":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/maurobernal.com.ar\/blog\/seguridad-en-docker-buenas-practicas-errores-comunes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/maurobernal.com.ar\/blog\/"},{"@type":"ListItem","position":2,"name":"Seguridad en Docker: errores que comet\u00ed y c\u00f3mo los correg\u00ed"}]},{"@type":"WebSite","@id":"https:\/\/maurobernal.com.ar\/blog\/#website","url":"https:\/\/maurobernal.com.ar\/blog\/","name":"devops Mauro Bernal","description":"Cuando tu trabajo es hacer que las cosas funcionen bien...","publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/maurobernal.com.ar\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283","name":"Mauro Bernal","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","url":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","contentUrl":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","width":1740,"height":1740,"caption":"Mauro Bernal"},"logo":{"@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1"},"description":"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman","sameAs":["https:\/\/maurobernal.com.ar","https:\/\/x.com\/_maurobernal","https:\/\/youtube.com\/maurobernal"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/comments?post=1178"}],"version-history":[{"count":4,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1178\/revisions"}],"predecessor-version":[{"id":1253,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1178\/revisions\/1253"}],"wp:attachment":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/media?parent=1178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/categories?post=1178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/tags?post=1178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}