Diseño de aplicaciones seguras en AzureDesign secure applications on Azure

En esta serie de artículos se presentan las actividades y controles de seguridad que hay que tener en cuenta al diseñar aplicaciones para la nube.In this article we present security activities and controls to consider when you design applications for the cloud. Se abarcan los recursos de entrenamiento junto con los conceptos y preguntas de seguridad que se han de tener en cuenta durante las fases de diseño y requisitos del ciclo de vida de desarrollo de seguridad (SDL) de Microsoft.Training resources along with security questions and concepts to consider during the requirements and design phases of the Microsoft Security Development Lifecycle (SDL) are covered. El objetivo es ayudarle a definir actividades y servicios de Azure que pueden usarse para diseñar una aplicación más segura.The goal is to help you define activities and Azure services that you can use to design a more secure application.

En este artículo se tratan las siguientes fases del SDL:The following SDL phases are covered in this article:

  • CursosTraining
  • RequisitosRequirements
  • DiseñoDesign

CursosTraining

Antes de comenzar a desarrollar la aplicación en la nube, dedique tiempo a comprender la seguridad y privacidad en Azure.Before you begin developing your cloud application, take time to understand security and privacy on Azure. Al realizar este paso, puede reducir la cantidad y gravedad de las vulnerabilidades infringibles en la aplicación.By taking this step, you can reduce the number and severity of exploitable vulnerabilities in your application. Estará mejor preparado para reaccionar adecuadamente ante el cambiante panorama de amenazas.You'll be more prepared to react appropriately to the ever-changing threat landscape.

Utilice los recursos siguientes durante la fase de entrenamiento para familiarizarse con los servicios de Azure disponibles para los desarrolladores y con los procedimientos recomendados en Azure:Use the following resources during the training stage to familiarize yourself with the Azure services that are available to developers and with security best practices on Azure:

  • Guía de Azure para desarrolladores le muestra cómo empezar a trabajar con Azure.Developer’s guide to Azure shows you how to get started with Azure. La guía le muestra los servicios que puede usar para ejecutar las aplicaciones, almacenar los datos, incorporar inteligencia, compilar aplicaciones de IoT e implementar sus soluciones de forma más eficaz y segura.The guide shows you which services you can use to run your applications, store your data, incorporate intelligence, build IoT apps, and deploy your solutions in a more efficient and secure way.

  • Guía de introducción para desarrolladores de Azure ofrece información esencial para los desarrolladores que quieran comenzar a usar la plataforma Microsoft Azure para sus necesidades de desarrollo.Get started guide for Azure developers provides essential information for developers who are looking to get started using the Azure platform for their development needs.

  • SDK y herramientas describe las herramientas que están disponibles en Azure.SDKs and tools describes the tools that are available on Azure.

  • Azure DevOps Services proporciona herramientas de colaboración de desarrollo.Azure DevOps Services provides development collaboration tools. Las herramientas incluyen canalizaciones de alto rendimiento, repositorios GIT gratuitos, paneles Kanban configurables y amplias pruebas de carga automatizadas y basadas en la nube.The tools include high-performance pipelines, free Git repositories, configurable Kanban boards, and extensive automated and cloud-based load testing. El centro de recursos de DevOps combina nuestros recursos para el aprendizaje de prácticas de DevOps, control de versiones de GIT, métodos ágiles, cómo se trabaja con DevOps en Microsoft y cómo puede evaluar su progresión de DevOps.The DevOps Resource Center combines our resources for learning DevOps practices, Git version control, agile methods, how we work with DevOps at Microsoft, and how you can assess your own DevOps progression.

  • 5 elementos de seguridad principales que deben tenerse en cuenta antes de pasar a producción le muestra cómo contribuir a proteger las aplicaciones web en Azure y a proteger sus aplicaciones frente a los ataques de aplicación web más comunes y peligrosos.Top 5 security items to consider before pushing to production shows you how to help secure your web applications on Azure and protect your apps against the most common and dangerous web application attacks.

  • Secure DevOps Kit para Azure es una colección de scripts, herramientas, extensiones y automatizaciones que satisface las necesidades integrales de seguridad de recursos y suscripción a Azure de los equipos de DevOps que utilizan automatización extensiva.Secure DevOps Kit for Azure is a collection of scripts, tools, extensions, and automations that caters to the comprehensive Azure subscription and resource security needs of DevOps teams that use extensive automation. Secure DevOps Kit para Azure puede mostrarle cómo integrar sin problemas la seguridad en los flujos de trabajo de DevOps nativos.The Secure DevOps Kit for Azure can show you how to smoothly integrate security into your native DevOps workflows. El kit aborda herramientas tales como pruebas de comprobación de la seguridad, que pueden ayudar a los desarrolladores escribir código seguro y probar la configuración segura de sus aplicaciones en la nube en las fases de desarrollo temprano y codificación.The kit addresses tools like security verification tests (SVTs), which can help developers write secure code and test the secure configuration of their cloud applications in the coding and early development stages.

  • Security best practices for Azure solutions (Procedimientos recomendados de seguridad para soluciones de Azure) ofrece una colección de procedimientos recomendados de seguridad que se pueden usar al diseñar, implementar y administrar soluciones en la nube mediante Azure.Security best practices for Azure solutions provides a collection of security best practices to use as you design, deploy, and manage your cloud solutions by using Azure.

RequisitosRequirements

La fase de la definición de requisitos es un paso fundamental en la definición de lo que es la aplicación y lo que hará cuando se publique.The requirements definition phase is a crucial step in defining what your application is and what it will do when it's released. La fase de requisitos también es el momento de pensar en los controles de seguridad que se compilarán en la aplicación.The requirements phase is also a time to think about the security controls that you will build into your application. Durante esta fase, también se inician los pasos que realizará en todo el SDL para asegurarse de que lanza e implementa una aplicación segura.During this phase, you also begin the steps that you will take throughout the SDL to ensure that you release and deploy a secure application.

Consideración de cuestiones de seguridad y privacidadConsider security and privacy issues

Esta fase es el mejor momento para plantearse cuestiones fundamentales de seguridad y privacidad.This phase is the best time to consider foundational security and privacy issues. La definición de los niveles aceptables de seguridad y privacidad al principio de un proyecto ayuda a un equipo a:Defining acceptable levels of security and privacy at the start of a project helps a team:

  • Comprender los riesgos asociados a problemas de seguridad.Understand risks associated with security issues.
  • Identificar y corregir errores de seguridad durante el desarrollo.Identify and fix security bugs during development.
  • Aplicar los niveles establecidos de seguridad y privacidad a lo largo de todo el proyecto.Apply established levels of security and privacy throughout the entire project.

Al escribir los requisitos para la aplicación, ha de tener en cuenta los controles de seguridad que pueden ayudar a proteger sus datos y aplicaciones.When you write the requirements for your application, be sure to consider security controls that can help keep your application and data safe.

Formulación de preguntas de seguridadAsk security questions

Formule preguntas de seguridad tales como:Ask security questions like:

  • ¿Mi aplicación contiene información confidencial?Does my application contain sensitive data?

  • ¿Mi aplicación recopila o almacena datos que exigen que se cumplan estándares del sector y programas de cumplimiento como el Consejo Federal de Inspección de Instituciones Financieras (FFIEC) o las Normas de seguridad de datos del sector de las tarjetas de pago (PCI DSS)?Does my application collect or store data that requires me to adhere to industry standards and compliance programs like the Federal Financial Institution Examination Council (FFIEC) or the Payment Card Industry Data Security Standards (PCI DSS)?

  • ¿Mi aplicación recopila o contiene datos confidenciales personales o de clientes que pueden utilizarse, solos o con otra información, para identificar, ponerse en contacto o buscar a una persona?Does my application collect or contain sensitive personal or customer data that can be used, either on its own or with other information, to identify, contact, or locate a single person?

  • ¿Mi aplicación recopila o contiene datos que se pueden usar para acceder a información médica, educativa, financiera o de empleo de una persona?Does my application collect or contain data that can be used to access an individual’s medical, educational, financial, or employment information? La identificación de la confidencialidad de los datos durante la fase de requisitos le ayuda a clasificar los datos e identificar el método de protección de datos que va a utilizar para la aplicación.Identifying the sensitivity of your data during the requirements phase helps you classify your data and identify the data protection method you will use for your application.

  • ¿Dónde y cómo están los datos almacenados?Where and how is my data stored? Tenga en cuenta cómo va a supervisar los servicios de almacenamiento que usa la aplicación para detectar cualquier cambio inesperado de comportamiento (por ejemplo, tiempos de respuesta más lentos).Consider how you will monitor the storage services that your application uses for any unexpected changes (such as slower response times). ¿Podrá influir en el registro para recopilar datos más detallados y analizar un problema en profundidad?Will you be able to influence logging to collect more detailed data and analyze a problem in depth?

  • ¿Mi aplicación estará disponible para el público (en Internet) o solo internamente?Will my application be available to the public (on the internet) or internally only? Si la aplicación está disponible al público, ¿cómo protege los datos que puedan recopilarse para que no se utilicen de forma incorrecta?If your application is available to the public, how do you protect the data that might be collected from being used in the wrong way? Si la aplicación solo está disponible internamente, tenga en cuenta qué usuarios de la organización han de tener acceso a la aplicación y durante cuánto tiempo.If your application is available internally only, consider who in your organization should have access to the application and how long they should have access.

  • ¿Entiende el modelo de identidad antes de empezar a diseñar la aplicación?Do you understand your identity model before you begin designing your application? ¿Cómo va a determinar que los usuarios son quienes dicen ser y lo que un usuario está autorizado a hacer?How will you determine that users are who they say they are and what a user is authorized to do?

  • ¿Mi aplicación lleva a cabo las tareas importantes o confidenciales (por ejemplo, transferencias de dinero, desbloqueo de puertas o administración de medicamentos)?Does my application perform sensitive or important tasks (such as transferring money, unlocking doors, or delivering medicine)? Tenga en cuenta cómo va a validar que el usuario que realiza una tarea confidencial está autorizado a realizarla y cómo se va a autenticar que la persona es quien dice ser.Consider how you will validate that the user performing a sensitive task is authorized to perform the task and how you will authenticate that the person is who they say they are. Autorización (AuthZ) es el acto de conceder permiso para hacer algo a una entidad de seguridad autenticada.Authorization (AuthZ) is the act of granting an authenticated security principal permission to do something. Autenticación es el acto de (AuthN) de exigir credenciales legítimas a una entidad.Authentication (AuthN) is the act of challenging a party for legitimate credentials.

  • ¿Mi aplicación realiza actividades de riesgo de software, como permitir que los usuarios carguen o descarguen archivos u otros datos?Does my application perform any risky software activities, like allowing users to upload or download files or other data? Si la aplicación lleva a cabo actividades de riesgo, tenga en cuenta cómo va a proteger a los usuarios de la manipulación de datos o archivos malintencionados.If your application does perform risky activities, consider how your application will protect users from handling malicious files or data.

Revisión de OWASP Top 10Review OWASP top 10

Considere la posibilidad de consultar el documento OWASP Top 10 Application Security Risks (10 principales riesgos de seguridad según OWASP).Consider reviewing the OWASP Top 10 Application Security Risks. OWASP Top 10 aborda los riesgos de seguridad críticos en aplicaciones web.The OWASP Top 10 addresses critical security risks to web applications. El conocimiento de estos riesgos de seguridad puede ayudarle a tomar decisiones de diseño y de requisitos que minimicen estos riesgos en la aplicación.Awareness of these security risks can help you make requirement and design decisions that minimize these risks in your application.

Es importante pensar en los controles de seguridad para evitar infracciones de seguridad.Thinking about security controls to prevent breaches is important. Aunque también es de esperar que se produzca alguna infracción de seguridad.However, you also want to assume a breach will occur. Suponer que se produce una infracción de seguridad ayuda a responder de antemano a algunas preguntas importantes sobre la seguridad, para que no haya que responderlas en una emergencia:Assuming a breach helps answer some important questions about security in advance, so they don't have to be answered in an emergency:

  • ¿Cómo se detecta un ataque?How will I detect an attack?

  • ¿Qué hacer si se produce un ataque o una infracción de seguridad?What will I do if there is an attack or breach?

  • ¿Cómo voy a recuperarme de ataques tales como filtraciones de datos o manipulaciones de datos?How am I going to recover from the attack like data leaking or tampering?

DiseñoDesign

La fase de diseño es fundamental para el establecimiento de procedimientos recomendados para el diseño y las especificaciones funcionales.The design phase is critical for establishing best practices for design and functional specifications. También es decisiva para realizar un análisis de riesgos que ayude a mitigar los problemas de seguridad y privacidad a lo largo de un proyecto.It also is critical for performing risk analysis that helps mitigate security and privacy issues throughout a project.

Cuando se establecen requisitos de seguridad y se usan los conceptos de diseño seguro, puede evitar o minimizar las posibilidades de brecha de seguridad.When you have security requirements in place and use secure design concepts, you can avoid or minimize opportunities for a security flaw. Una brecha de seguridad es una omisión en el diseño de la aplicación que puede permitir a un usuario realizar acciones maliciosas o inesperadas después del lanzamiento de la aplicación.A security flaw is an oversight in the design of the application that might allow a user to perform malicious or unexpected actions after your application is released.

Durante la fase de diseño, piense también en cómo puede aplicar la seguridad en capas; un nivel de defensa no es necesariamente suficiente.During the design phase, also think about how you can apply security in layers; one level of defense isn't necessarily enough. ¿Qué ocurre si un atacante traspasa el firewall de aplicaciones web (WAF)?What happens if an attacker gets past your web application firewall (WAF)? Quiere establecer otro control de seguridad para defenderse contra este ataque.You want another security control in place to defend against that attack.

Con esta intención, se analizan los siguientes conceptos de diseño seguro y los controles de seguridad que hay que abordar al diseñar aplicaciones seguras:With this in mind, we discuss the following secure design concepts and the security controls you should address when you design secure applications:

  • Uso de una biblioteca de codificación segura y un marco de software.Use a secure coding library and a software framework.
  • Búsqueda de componentes vulnerables.Scan for vulnerable components.
  • Uso del modelado de amenazas durante el diseño de la aplicación.Use threat modeling during application design.
  • Reducción de la superficie expuesta a ataques.Reduce your attack surface.
  • Adopción de una directiva de identidad como perímetro de seguridad principal.Adopt a policy of identity as the primary security perimeter.
  • Exigencia de reautenticación con transacciones importantes.Require re-authentication for important transactions.
  • Uso de una solución de administración de claves para proteger las claves, las credenciales y otros secretos.Use a key management solution to secure keys, credentials, and other secrets.
  • Protección de datos confidenciales.Protect sensitive data.
  • Implementación de medidas para notificaciones de error.Implement fail-safe measures.
  • Aprovechamiento del control de errores y excepciones.Take advantage of error and exception handling.
  • Uso del registro y las alertas.Use logging and alerting.

Uso de una biblioteca de codificación segura y un marco de softwareUse a secure coding library and a software framework

Durante el desarrollo, utilice una biblioteca de codificación segura y un marco de software con seguridad incorporada.For development, use a secure coding library and a software framework that has embedded security. Los desarrolladores pueden usar características existentes y probadas (cifrado, sanitización de entrada, codificación de salida, claves o cadenas de conexión y cualquier otra cosa que se considere un control de seguridad) en lugar de desarrollar controles de seguridad desde cero.Developers can use existing, proven features (encryption, input sanitation, output encoding, keys or connection strings, and anything else that would be considered a security control) instead of developing security controls from scratch. Esto ayuda a protegerse frente a errores de implementación y de diseño relacionados con la seguridad.This helps guard against security-related design and implementation flaws.

Asegúrese de que utiliza la versión más reciente del marco y todas las características de seguridad disponibles en él.Be sure that you're using the latest version of your framework and all the security features that are available in the framework. Azure ofrece un completo conjunto de herramientas de desarrollo (que funcionan en cualquier plataforma o lenguaje) para que todos los desarrolladores entreguen aplicaciones en la nube.Microsoft offers a comprehensive set of development tools for all developers, working on any platform or language, to deliver cloud applications. Puede programar con el lenguaje que prefiera mediante la elección de diversos SDK.You can code with the language of your choice by choosing from various SDKs. Puede aprovechar entornos de desarrollo integrados (IDE) completos y editores con funcionalidades de depuración avanzadas y Soporte técnico de Azure integrado.You can take advantage of full-featured integrated development environments (IDEs) and editors that have advanced debugging capabilities and built-in Azure support.

Microsoft ofrece diversos lenguajes, marcos y herramientas que puede usar para desarrollar aplicaciones en Azure.Microsoft offers a variety of languages, frameworks, and tools that you can use to develop applications on Azure. Un ejemplo de ello es Azure para desarrolladores de .NET y .NET Core.An example is Azure for .NET and .NET Core developers. Para cada idioma y marco que ofrecemos, encontrará inicios rápidos, tutoriales y referencias de API que le ayudarán a empezar a trabajar rápidamente.For each language and framework that we offer, you’ll find quickstarts, tutorials, and API references to help you get started fast.

Azure ofrece diversos servicios que puede usar para hospedar aplicaciones web y sitios web.Azure offers a variety of services you can use to host websites and web applications. Estos servicios le permiten desarrollar en su lenguaje preferido, ya sea .NET, .NET Core, Java, Ruby, Node.js, PHP o Python.These services let you develop in your favorite language, whether that's .NET, .NET Core, Java, Ruby, Node.js, PHP, or Python. Azure App Service Web Apps (Web Apps) es uno de estos servicios.Azure App Service Web Apps (Web Apps) is one of these services.

Web Apps agrega el potencial de Microsoft Azure a la aplicación.Web Apps adds the power of Microsoft Azure to your application. Incluye seguridad, equilibrio de carga, escalado automático y administración automatizada.It includes security, load balancing, autoscaling, and automated management. También puede sacar partido de las funcionalidades de DevOps en Web Apps, como, por ejemplo, administración de paquetes, entornos de ensayo, dominios personalizados, certificados SSL/TLS e implementación continua desde Azure DevOps, GitHub, Docker Hub y otros orígenes.You can also take advantage of DevOps capabilities in Web Apps, like package management, staging environments, custom domains, SSL/TLS certificates, and continuous deployment from Azure DevOps, GitHub, Docker Hub, and other sources.

Azure ofrece otros servicios que puede usar para hospedar aplicaciones web y sitios web.Azure offers other services that you can use to host websites and web applications. En la mayoría de los casos, Web Apps es la mejor opción.For most scenarios, Web Apps is the best choice. Como arquitectura de microservicios, considere la posibilidad de usar Azure Service Fabric.For a micro service architecture, consider Azure Service Fabric. Si necesita más control sobre las máquinas virtuales en las que se ejecuta el código, considere Azure Virtual Machines.If you need more control over the VMs that your code runs on, consider Azure Virtual Machines. Para más información sobre qué servicio de Azure elegir, consulte una comparación de Azure App Service, Virtual Machines, Service Fabric y Cloud Services.For more information about how to choose between these Azure services, see a comparison of Azure App Service, Virtual Machines, Service Fabric, and Cloud Services.

Aplicación de actualizaciones a componentesApply updates to components

Para evitar vulnerabilidades, debe hacer un inventario continuo de los componentes del lado cliente y del lado servidor (por ejemplo, marcos y bibliotecas) y sus dependencias a efectos de las actualizaciones.To prevent vulnerabilities, you should continuously inventory both your client-side and server-side components (for example, frameworks and libraries) and their dependencies for updates. Continuamente se publican nuevas vulnerabilidades y versiones de software actualizadas.New vulnerabilities and updated software versions are released continuously. Asegúrese de tener un plan continuo de supervisión, evaluación de prioridades, aplicación de actualizaciones o cambios de configuración para las bibliotecas y los componentes que utiliza.Ensure that you have an ongoing plan to monitor, triage, and apply updates or configuration changes to the libraries and components you use.

Consulte la página Open Web Application Security Project (OWASP) sobre el uso de componentes con vulnerabilidades conocidas para obtener sugerencias de herramientas.See the Open Web Application Security Project (OWASP) page on using components with known vulnerabilities for tool suggestions. También puede suscribirse a alertas de correo electrónico sobre vulnerabilidades de seguridad que están relacionadas con los componentes que usa.You can also subscribe to email alerts for security vulnerabilities that are related to components you use.

Usar el modelado de amenazas durante el diseño de la aplicaciónUse threat modeling during application design

El proceso de modelado de amenazas consiste en identificar posibles amenazas de seguridad para la empresa y la aplicación y luego asegurarse de establecer las mitigaciones adecuadas.Threat modeling is the process of identifying potential security threats to your business and application, and then ensuring that proper mitigations are in place. El SDL especifica que los equipos deben participar en el modelado de amenazas durante la fase de diseño, cuando la resolución de problemas potenciales es relativamente fácil y rentable.The SDL specifies that teams should engage in threat modeling during the design phase, when resolving potential issues is relatively easy and cost-effective. El uso del modelado de amenazas en la fase de diseño puede reducir considerablemente el costo total de desarrollo.Using threat modeling in the design phase can greatly reduce your total cost of development.

Para facilitar el proceso de modelado de amenazas, diseñamos Microsoft Threat Modeling Tool pensando en expertos no especializados en seguridad.To help facilitate the threat modeling process, we designed the SDL Threat Modeling Tool with non-security experts in mind. Esta herramienta facilita el modelado de amenazas para todos los programadores al ofrecer instrucciones claras sobre cómo crear y analizar los modelos de amenazas.This tool makes threat modeling easier for all developers by providing clear guidance about how to create and analyze threat models.

El modelado del diseño de aplicaciones y la enumeración de amenazas STRIDE —Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service y Elevation of Privilege (suplantación de identidad, manipulación, rechazo, divulgación de información, denegación de servicio y elevación de privilegios)— a través de todos los límites de la confianza ha demostrado ser una forma eficaz de detectar errores de diseño desde el principio.Modeling the application design and enumerating STRIDE threats—Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege—across all trust boundaries has proven an effective way to catch design errors early on. En esta tabla se enumeran las amenazas STRIDE y se incluyen algunas mitigaciones de ejemplo donde se usan características que Azure ofrece.The following table lists the STRIDE threats and gives some example mitigations that use features provided by Azure. Estas mitigaciones no funcionarán en todas las situaciones.These mitigations won’t work in every situation.

ThreatThreat Propiedad de seguridadSecurity property Posible mitigación de la plataforma AzurePotential Azure platform mitigation
Suplantación de identidadSpoofing AuthenticationAuthentication Requiere conexiones HTTPS.Require HTTPS connections.
Alteración de datosTampering IntegridadIntegrity Valida certificados SSL/TLS.Validate SSL/TLS certificates. Las aplicaciones que utilizan SSL/TLS deben comprobar completamente los certificados X.509 de las entidades a las que se conectan.Applications that use SSL/TLS must fully verify the X.509 certificates of the entities they connect to. Usa certificados de Azure Key Vault para administrar sus certificados x509.Use Azure Key Vault certificates to manage your x509 certificates.
RechazoRepudiation No rechazoNon-repudiation Habilita opciones de supervisión y diagnóstico de Azure.Enable Azure monitoring and diagnostics.
Divulgación de informaciónInformation Disclosure ConfidencialidadConfidentiality Cifra datos confidenciales en reposo y en tránsito.Encrypt sensitive data at rest and in transit.
Denegación de servicioDenial of Service DisponibilidadAvailability Supervisa las métricas de rendimiento de las posibles condiciones de denegación de servicio.Monitor performance metrics for potential denial of service conditions. Implementa filtros de conexión.Implement connection filters. Azure DDoS Protection, junto con los procedimientos recomendados de diseño de aplicaciones, constituyen una defensa frente a los ataques DDoS.Azure DDoS protection, combined with application design best practices, provides defense against DDoS attacks.
Elevación de privilegiosElevation of Privilege AuthorizationAuthorization Usa Azure Active Directory Privileged Identity Management.Use Azure Active Directory Privileged Identity Management.

Reducción de la superficie expuesta a ataquesReduce your attack surface

Una superficie expuesta a ataques es la superficie total de los lugares en los que pueden producirse vulnerabilidades potenciales.An attack surface is the total sum of where potential vulnerabilities might occur. En este artículo, nos centramos en la superficie expuesta a ataques de la aplicación.In this paper, we focus on an application’s attack surface. El objetivo es proteger una aplicación contra ataques.The focus is on protecting an application from attack. Una manera sencilla y rápida de minimizar la superficie expuesta a ataques es quitar el código y los recursos que no se usan en la aplicación.A simple and quick way to minimize your attack surface is to remove unused resources and code from your application. Cuanto menor sea la aplicación, menor será la superficie expuesta a ataques.The smaller your application, the smaller your attack surface. Por ejemplo, quite lo siguiente:For example, remove:

  • Código de las características que aún no ha lanzado.Code for features you haven’t released yet.
  • Depuración del código de soporte.Debugging support code.
  • Interfaces de red y protocolos que no se utilizan o que han quedado en desuso.Network interfaces and protocols that aren’t used or which have been deprecated.
  • Máquinas virtuales y otros recursos que no se usen.Virtual machines and other resources that you aren’t using.

Realizar una limpieza regular de los recursos y asegurarse de quitar código que no se usa son excelentes formas de asegurarse de que hay menos posibilidades de que ataquen actores malintencionados.Doing regular cleanup of your resources and ensuring that you remove unused code are great ways to ensure that there are fewer opportunities for malicious actors to attack.

Una forma más detallada y exhaustiva de reducir la superficie expuesta a ataques es completar un análisis de dicha superficie.A more detailed and in-depth way to reduce your attack surface is to complete an attack surface analysis. Un análisis de la superficie expuesta a ataques le ayuda a asignar los elementos de un sistema que se han de revisar y probar para detectar vulnerabilidades de seguridad.An attack surface analysis helps you map the parts of a system that need to be reviewed and tested for security vulnerabilities.

La finalidad de un análisis de la superficie expuesta a ataques es entender las áreas de riesgo de una aplicación para que los desarrolladores y especialistas en seguridad sepan qué componentes de la aplicación están expuestos a ataques.The purpose of an attack surface analysis is to understand the risk areas in an application so developers and security specialists are aware of what parts of the application are open to attack. A continuación, puede encontrar formas de minimizar este potencial, realizar un seguimiento de cuándo y cómo cambia la superficie expuesta a ataques y lo que esto significa desde una perspectiva de riesgo.Then, you can find ways to minimize this potential, track when and how the attack surface changes, and what this means from a risk perspective.

Un análisis de la superficie expuesta a ataques ayuda a identificar:An attack surface analysis helps you identify:

  • Funciones y componentes del sistema que hay que revisar y probar para detectar vulnerabilidades de seguridad.Functions and parts of the system you need to review and test for security vulnerabilities.
  • Áreas de alto riesgo del código que requieren protección de defensa en profundidad (componentes del sistema que necesita defender).High-risk areas of code that require defense-in-depth protection (parts of the system that you need to defend).
  • Cuando se modifica la superficie expuesta a ataques y hay que actualizar la valoración de amenazas.When you alter the attack surface and need to refresh a threat assessment.

La reducción de las posibilidades de que los atacantes aprovechen un punto débil o una vulnerabilidad potencial requiere que analice a fondo la superficie global expuesta a ataques de la aplicación.Reducing opportunities for attackers to exploit a potential weak spot or vulnerability requires you to thoroughly analyze your application's overall attack surface. También incluye la deshabilitación o restricción del acceso a los servicios del sistema, la aplicación del principio de privilegios mínimos y el empleo defensas por capas siempre que sea posible.It also includes disabling or restricting access to system services, applying the principle of least privilege, and employing layered defenses wherever possible.

Veremos cómo llevar a cabo una revisión de la superficie expuesta a ataques durante la fase de comprobación del SDL.We discuss conducting an attack surface review during the verification phase of the SDL.

Nota

¿Cuál es la diferencia entre el modelado de amenazas y análisis de la superficie expuesta a ataques?What's the difference between threat modeling and attack surface analysis? El proceso de modelado de amenazas consiste en identificar posibles amenazas de seguridad para la aplicación y luego asegurarse de establecer las mitigaciones adecuadas frente a las amenazas.Threat modeling is the process of identifying potential security threats to your application and ensuring that proper mitigations against the threats are in place. El análisis de la superficie expuesta a ataques identifica áreas de alto riesgo del código que están expuestas a ataques.Attack surface analysis identifies high-risk areas of code that are open to attack. Implica la búsqueda de formas de defender áreas de alto riesgo de la aplicación y la revisión y pruebas de esas áreas de código antes de implementar la aplicación.It involves finding ways to defend high-risk areas of your application and reviewing and testing those areas of code before you deploy the application.

Adoptar una directiva de identidad como perímetro de seguridad principalAdopt a policy of identity as the primary security perimeter

Al diseñar aplicaciones en la nube, es importante ampliar el enfoque del perímetro de seguridad de un enfoque centrado en redes a un enfoque centrado en identidades.When you design cloud applications, it’s important to expand your security perimeter focus from a network-centric approach to an identity-centric approach. Históricamente, el perímetro de seguridad local principal era la red de la organización.Historically, the primary on-premises security perimeter was an organization's network. La mayoría de los diseños de seguridad local utilizan la red como eje de seguridad principal.Most on-premises security designs use the network as the primary security pivot. Para las aplicaciones en la nube, se recomienda considerar la identidad como perímetro de seguridad principal.For cloud applications, you are better served by considering identity as the primary security perimeter.

Lo que puede hacer para desarrollar un enfoque centrado en identidades para el desarrollo de aplicaciones web:Things you can do to develop an identity-centric approach to developing web applications:

  • Activación de la autenticación multifactor para usuarios.Enforce multi-factor authentication for users.
  • use plataformas sólidas de autenticación y autorización.Use strong authentication and authorization platforms.
  • Aplicación del principio de privilegios mínimos.Apply the principle of least privilege.
  • Implementación de acceso Just-In-Time.Implement just-in-time access.

Exigencia de la autenticación multifactor para usuariosEnforce multi-factor authentication for users

Use la autenticación en dos fases.Use two-factor authentication. La autenticación en dos fases es el estándar actual para la autenticación y autorización porque evita las vulnerabilidades de seguridad inherentes a tipos de nombres de usuario y contraseñas de autenticación.Two-factor authentication is the current standard for authentication and authorization because it avoids the security weaknesses that are inherent in username and password types of authentication. El acceso a las interfaces de administración de Azure (Azure Portal/PowerShell remoto) y a los servicios usados por el cliente se debe diseñar y configurar para usar Azure Multi-Factor Authentication.Access to the Azure management interfaces (Azure portal/remote PowerShell) and to customer-facing services should be designed and configured to use Azure Multi-Factor Authentication.

Uso de plataformas sólidas de autenticación y autorizaciónUse strong authentication and authorization platforms

Use los mecanismos de autenticación y autorización proporcionados en la plataforma en lugar del código personalizado.Use platform-supplied authentication and authorization mechanisms instead of custom code. Esto se debe a que el desarrollo de código de autenticación personalizado puede resultar propenso a errores.This is because developing custom authentication code can be prone to error. El código comercial (por ejemplo, de Microsoft) suele revisarse de manera amplia a efectos de seguridad.Commercial code (for example, from Microsoft) often is extensively reviewed for security. Azure Active Directory (Azure AD) es la solución de Azure para la administración de identidades y de acceso.Azure Active Directory (Azure AD) is the Azure solution for identity and access management. Estas herramientas y servicios de Azure AD contribuyen a un desarrollo seguro:These Azure AD tools and services help with secure development:

  • La plataforma de identidad de Azure AD (Azure AD para desarrolladores) es un servicio de identidad en la nube que usan los desarrolladores para compilar aplicaciones con inicio de sesión de usuarios seguro.Azure AD identity platform (Azure AD for developers) is a cloud identity service that developers use to build apps that securely sign in users. Azure AD ayuda tanto a desarrolladores que compilan aplicaciones de línea de negocio (LOB) de inquilino único como a desarrolladores que quieren desarrollar aplicaciones multiinquilino.Azure AD assists developers who are building single-tenant, line-of-business (LOB) apps and developers who are looking to develop multi-tenant apps. Además del inicio de sesión básico, las aplicaciones que se compilan mediante Azure AD pueden llamar a las API de Microsoft y a las API personalizadas que se basan en la plataforma de Azure AD.In addition to basic sign-in, apps that are built by using Azure AD can call Microsoft APIs and custom APIs that are built on the Azure AD platform. La plataforma de identidad de Azure AD admite protocolos estándar del sector tales como OAuth 2.0 y OpenID Connect.The Azure AD identity platform supports industry-standard protocols like OAuth 2.0 and OpenID Connect.

  • Azure Active Directory B2C (Azure AD B2C) es un servicio de administración de identidades que puede usar para personalizar y controlar la manera en que los clientes se registran, inician sesión y administran sus perfiles al usar las aplicaciones.Azure Active Directory B2C (Azure AD B2C) is an identity management service you can use to customize and control how customers sign up, sign in, and manage their profiles when they use your applications. Esto incluye las aplicaciones que se desarrollan para iOS, Android y .NET, entre otros.This includes applications that are developed for iOS, Android, and .NET, among others. Azure AD B2C permite estas acciones al tiempo que protege las identidades de los clientes.Azure AD B2C enables these actions while protecting customer identities.

Aplicación del principio de privilegios mínimosApply the principle of least privilege

El concepto de privilegios mínimos implica conceder a los usuarios el nivel preciso de acceso y control que necesitan para hacer su trabajo y nada más.The concept of least privilege means giving users the precise level of access and control they need to do their jobs and nothing more.

¿Necesitará un desarrollador de software derechos de administrador de dominio?Would a software developer need domain admin rights? ¿Necesitará un auxiliar administrativo acceso a controles administrativos en su equipo personal?Would an administrative assistant need access to administrative controls on their personal computer? La evaluación del acceso al software de evaluación no es diferente.Evaluating access to software is no different. Si usa control de acceso basado en rol (RBAC) para proporcionar a los usuarios distintas posibilidades y autoridad en la aplicación, no concede a todos los usuarios acceso a todo el contenido.If you use role-based access control (RBAC) to give users different abilities and authority in your application, you wouldn’t give everyone access to everything. Al limitar el acceso a lo que se requiere para cada rol, se limita el riesgo de que se produzca un problema de seguridad.By limiting access to what is required for each role, you limit the risk of a security issue occurring.

Asegúrese de que la aplicación aplica privilegios mínimos a lo largo de sus patrones de acceso.Ensure that your application enforces least privilege throughout its access patterns.

Nota

Las reglas de privilegios mínimos han de aplicarse al software y a las personas que lo crean.The rules of least privilege need to apply to the software and to the people creating the software. Los desarrolladores de software pueden suponer un gran riesgo para la seguridad de TI si se les da demasiado acceso.Software developers can be a huge risk to IT security if they are given too much access. Las consecuencias pueden ser graves si un desarrollador tiene intenciones maliciosas o si se le concede demasiado acceso.The consequences can be severe if a developer has malicious intent or is given too much access. Se recomienda aplicar las reglas de privilegios mínimos a los desarrolladores a lo largo del ciclo de vida de desarrollo.We recommend that the rules of least privilege be applied to developers throughout the development lifecycle.

Implementación de acceso Just-In-TimeImplement just-in-time access

Implemente acceso Just-In-Time (JIT) para reducir aún más el tiempo de exposición de los privilegios.Implement just-in-time (JIT) access to further lower the exposure time of privileges. Utilice Azure AD Privileged Identity Management para:Use Azure AD Privileged Identity Management to:

  • Conceder a los usuarios los permisos que requieren solo cuando sean necesarios.Give users the permissions they need only JIT.
  • Asignar roles para una duración reducida con confianza de que los privilegios se revocan automáticamente.Assign roles for a shortened duration with confidence that the privileges are revoked automatically.

Exigencia de reautenticación con transacciones importantesRequire re-authentication for important transactions

La falsificación de solicitud entre sitios (también conocida como XSRF o CSRF) es un ataque contra aplicaciones hospedadas en web, en el que una aplicación web malintencionada influye en la interacción entre un explorador cliente y una aplicación web que confía en ese explorador.Cross-site request forgery (also known as XSRF or CSRF) is an attack against web-hosted apps in which a malicious web app influences the interaction between a client browser and a web app that trusts that browser. Los ataques de falsificación de solicitud entre sitios son posibles porque los exploradores web envían automáticamente algunos tipos de token de autenticación con cada solicitud en un sitio web.Cross-site request forgery attacks are possible because web browsers send some types of authentication tokens automatically with every request to a website. Esta forma de aprovechamiento también se conoce como ataque con un clic o montaje en la sesión porque el ataque aprovecha la sesión del usuario autenticada anteriormente.This form of exploitation is also known as a one-click attack or session riding because the attack takes advantage of the user's previously authenticated session.

La mejor manera de defenderse contra este tipo de ataque es pedirle al usuario algo que solo él puede proporcionar antes de cada transacción importante, como una compra, la desactivación de la cuenta o un cambio de contraseña.The best way to defend against this kind of attack is to ask the user for something that only the user can provide before every important transaction, such as a purchase, account deactivation, or a password change. Puede pedirle al usuario que vuelva a escribir su contraseña, rellene un captcha o envíe un token secreto que solo él pueda tener.You might ask the user to reenter their password, complete a captcha, or submit a secret token that only the user would have. El enfoque más común es el token secreto.The most common approach is the secret token.

Uso de una solución de administración de claves para proteger las claves, las credenciales y otros secretosUse a key management solution to secure keys, credentials, and other secrets

La pérdida de claves y credenciales es un problema común.Losing keys and credentials is a common problem. mucho peor que perder las claves y las credenciales es que otra persona no autorizada acceda a ellas.The only thing worse than losing your keys and credentials is having an unauthorized party gain access to them. Los atacantes pueden aprovechar técnicas automatizadas y manuales para encontrar claves y secretos almacenados en repositorios de código como GitHub.Attackers can take advantage of automated and manual techniques to find keys and secrets that are stored in code repositories like GitHub. No incluya claves ni secretos en estos repositorios de código públicos ni en ningún otro servidor.Don't put keys and secrets in these public code repositories or on any other server.

Coloque siempre sus claves, certificados, secretos y cadenas de conexión en una solución de administración de claves.Always put your keys, certificates, secrets, and connection strings in a key management solution. Puede usar una solución centralizada en la que las claves y los secretos se almacenen en módulos de seguridad de hardware (HSM).You can use a centralized solution in which keys and secrets are stored in hardware security modules (HSMs). Azure ofrece un HSM en la nube con Azure Key Vault.Azure provides you with an HSM in the cloud with Azure Key Vault.

Key Vault es un almacén de secretos: se trata de un servicio centralizado en la nube para el almacenamiento de secretos de aplicación.Key Vault is a secret store: it's a centralized cloud service for storing application secrets. Key Vault mantiene los secretos de aplicación en una única ubicación centralizada y proporciona acceso seguro, control de permisos y registro de acceso para proteger sus datos confidenciales.Key Vault keeps your confidential data safe by keeping application secrets in a single, central location and providing secure access, permissions control, and access logging.

Los secretos se almacenan en almacenes individuales.Secrets are stored in individual vaults. Cada almacén tiene sus propias directivas de configuración y seguridad para controlar el acceso.Each vault has its own configuration and security policies to control access. Los datos se obtienen a través de una API REST o un SDK que está disponible para la mayoría de lenguajes de programación de cliente.You get to your data through a REST API or through a client SDK that's available for most programming languages.

Importante

Azure Key Vault se ha diseñado para almacenar secretos de configuración de las aplicaciones de servidor.Azure Key Vault is designed to store configuration secrets for server applications. No tiene por objeto almacenar datos que pertenecen a los usuarios de la aplicación.It's not intended for storing data that belongs to app users. Esto se refleja en sus características de rendimiento, la API y el modelo de costos.This is reflected in its performance characteristics, API, and cost model.

Los datos de usuario deben almacenarse en otro lugar, como en una instancia de Azure SQL Database con cifrado de datos transparente (TDE) o en una cuenta de almacenamiento que usa Azure Storage Service Encryption.User data should be stored elsewhere, like in an Azure SQL Database instance that has Transparent Data Encryption (TDE) or in a storage account that uses Azure Storage Service Encryption. En Azure Key Vault se pueden conservar los secretos que usa la aplicación para acceder a estos almacenes de datos.Secrets that are used by your application to access these data stores can be kept in Azure Key Vault.

Protección de datos confidencialesProtect sensitive data

La protección de datos es una parte esencial de su estrategia de seguridad.Protecting data is an essential part of your security strategy. La clasificación de los datos y la identificación de las necesidades de protección de datos le ayudan a diseñar la aplicación teniendo en cuenta la seguridad de datos.Classifying your data and identifying your data protection needs helps you design your app with data security in mind. La clasificación de datos almacenados por confidencialidad e impacto de negocio permite a los desarrolladores determinar los riesgos asociados a los datos.Classifying (categorizing) stored data by sensitivity and business impact helps developers determine the risks that are associated with data.

Etiquete todos los datos aplicables como confidenciales al diseñar sus formatos de datos.Label all applicable data as sensitive when you design your data formats. Asegúrese de que la aplicación trata los datos aplicables como confidenciales.Ensure that the application treats the applicable data as sensitive. Estas prácticas pueden ayudarle a proteger sus datos confidenciales:These practices can help you protect your sensitive data:

  • Uso de cifrado.Use encryption.
  • Evitación de secretos codificados de forma rígida como claves y contraseñas.Avoid hard-coding secrets like keys and passwords.
  • Comprobación de que se han establecido controles de acceso y auditoría.Ensure that access controls and auditing are in place.

Uso de cifradoUse encryption

La protección de datos debe ser una parte esencial de su estrategia de seguridad.Protecting data should be an essential part of your security strategy. Si los datos se almacenan en una base de datos o se mueven entre ubicaciones, use el cifrado de datos en reposo (mientras se encuentran en la base de datos) y el cifrado de datos en tránsito (en su camino hacia y desde el usuario, la base de datos, una API o un punto de conexión de servicio).If your data is stored in a database or if it moves back and forth between locations, use encryption of data at rest (while in the database) and encryption of data in transit (on its way to and from the user, the database, an API, or service endpoint). Se recomienda usar siempre protocolos SSL/TLS para intercambiar datos.We recommend that you always use SSL/TLS protocols to exchange data. Asegúrese de usar la versión más reciente de TLS para el cifrado (actualmente, es la versión 1.2).Ensure that you use the latest version of TLS for encryption (currently, this is version 1.2).

Evitación del codificado de forma rígidaAvoid hard-coding

Algunos elementos no deben codificarse nunca de forma rígida en el software.Some things should never be hard-coded in your software. Por ejemplo, los nombres de host o las direcciones IP, las direcciones URL, las direcciones de correo electrónico, los nombres de usuario, las contraseñas, las claves de cuenta de almacenamiento y otras claves criptográficas.Some examples are hostnames or IP addresses, URLs, email addresses, usernames, passwords, storage account keys, and other cryptographic keys. Considere la posibilidad de implementar requisitos en torno a lo que puede o no estar codificado de forma rígida en su código, lo que incluye las secciones de comentarios del código.Consider implementing requirements around what can or can't be hard-coded in your code, including in the comment sections of your code.

Al insertar comentarios en el código, asegúrese de no guardar ninguna información confidencial.When you put comments in your code, ensure that you don't save any sensitive information. Esto incluye su dirección de correo electrónico, contraseñas, cadenas de conexión, información sobre su aplicación que solo pueda conocer alguien de su organización y cualquier otra cosa que pudiera dar ventaja a un atacante al atacar su aplicación u organización.This includes your email address, passwords, connection strings, information about your application that would only be known by someone in your organization, and anything else that might give an attacker an advantage in attacking your application or organization.

Básicamente, presuponga que todo el contenido de su proyecto de desarrollo será de conocimiento público cuando se implemente.Basically, assume that everything in your development project will be public knowledge when it is deployed. Evite incluir datos confidenciales de ningún tipo en el proyecto.Avoid including sensitive data of any kind in the project.

Anteriormente, analizamos Azure Key Vault.Earlier, we discussed Azure Key Vault. Puede usar Key Vault para almacenar secretos tales como las claves y contraseñas en lugar de codificarlas de forma rígida.You can use Key Vault to store secrets like keys and passwords instead of hard-coding them. Si usa Key Vault en combinación con identidades administradas para recursos de Azure, la aplicación web de Azure puede acceder a valores de configuración secretos de forma fácil y segura sin almacenar ningún secreto en la configuración o el control de código fuente.When you use Key Vault in combination with managed identities for Azure resources, your Azure web app can access secret configuration values easily and securely without storing any secrets in your source control or configuration. Para obtener más información, consulte Administración de secretos en aplicaciones de servidor con Azure Key Vault.To learn more, see Manage secrets in your server apps with Azure Key Vault.

Implementación de medidas para notificaciones de errorImplement fail-safe measures

La aplicación debe poder controlar errores que se produzcan durante la ejecución de forma coherente.Your application must be able to handle errors that occur during execution in a consistent manner. La aplicación debe detectar todos los errores y protegerse o cerrarse.The application should catch all errors and either fail safe or closed.

También debe asegurarse de que los errores se registran con contexto de usuario suficiente para identificar cualquier actividad sospechosa o malintencionada.You should also ensure that errors are logged with sufficient user context to identify suspicious or malicious activity. Los registros deben conservarse durante un tiempo suficiente para permitir el análisis forense diferido.Logs should be retained for a sufficient time to allow delayed forensic analysis. Los registros deben estar en un formato que una solución de administración de registro pueda consumir fácilmente.Logs should be in a format that can be easily consumed by a log management solution. Asegúrese de que se desencadenan alertas en errores relacionados con la seguridad.Ensure that alerts for errors that are related to security are triggered. El registro y la supervisión insuficientes permiten a los atacantes seguir atacando los sistemas y mantener la persistencia.Insufficient logging and monitoring allows attackers to further attack systems and maintain persistence.

Aprovechamiento del control de errores y excepcionesTake advantage of error and exception handling

La implementación de un correcto control de errores y excepciones es una parte importante de la codificación defensiva.Implementing correct error and exception handling is an important part of defensive coding. El control de errores y excepciones es fundamental para que el sistema sea confiable y seguro.Error and exception handling are critical to making a system reliable and secure. Los errores en el control de errores pueden traducirse en distintos tipos de vulnerabilidades de seguridad, como filtrar información a los atacantes y permitir que los atacantes comprendan mejor su plataforma y su diseño.Mistakes in error handling can lead to different kinds of security vulnerabilities, such as leaking information to attackers and helping attackers understand more about your platform and design.

Asegúrese de que:Ensure that:

  • Controla las excepciones de forma centralizada para evitar la duplicación de bloques try/catch en el código.You handle exceptions in a centralized manner to avoid duplicated try/catch blocks in the code.

  • Todos los comportamientos inesperados se controlan dentro de la aplicación.All unexpected behaviors are handled inside the application.

  • Los mensajes que se muestran a los usuarios no filtran datos críticos, pero ofrecen suficiente información para explicar el problema.Messages that are displayed to users don't leak critical data but do provide enough information to explain the issue.

  • Las excepciones se registran y proporcionan suficiente información para que los equipos de respuesta a incidentes o de análisis forense puedan investigarlas.Exceptions are logged and that they provide enough information for forensics or incident response teams to investigate.

Azure Logic Apps ofrece una experiencia de primera clase para el control de errores y excepciones producidos por sistemas dependientes.Azure Logic Apps provides a first-class experience for handling errors and exceptions that are caused by dependent systems. Puede usar Azure Logic Apps para crear flujos de trabajo que automaticen las tareas y los procesos de integración de aplicaciones, datos, sistemas y servicios a través de empresas y organizaciones.You can use Logic Apps to create workflows to automate tasks and processes that integrate apps, data, systems, and services across enterprises and organizations.

Uso del registro y las alertasUse logging and alerting

Registre sus problemas de seguridad a efectos de investigaciones de seguridad y desencadene alertas sobre los problemas para asegurarse de que la gente conozca los problemas de manera oportuna.Log your security issues for security investigations and trigger alerts about issues to ensure that people know about problems in a timely manner. Habilite la auditoría y el registro en todos los componentes.Enable auditing and logging on all components. Los registros de auditoría deben capturar el contexto de usuario e identificar todos los eventos importantes.Audit logs should capture user context and identify all important events.

Compruebe que no se registra ningún dato confidencial que un usuario envíe a su sitio.Check that you don't log any sensitive data that a user submits to your site. Ejemplos de datos confidenciales incluyen:Examples of sensitive data include:

  • Credenciales de usuarioUser credentials
  • Número del seguro social u otra información de identificaciónSocial Security numbers or other identifying information
  • Números de tarjeta de crédito u otra información financieraCredit card numbers or other financial information
  • Información relacionada con la saludHealth information
  • Claves privadas u otros datos que se puedan usar para descifrar información cifradaPrivate keys or other data that can be used to decrypt encrypted information
  • Información del sistema o de la aplicación que se puede usar para atacar la aplicación de forma más eficazSystem or application information that can be used to more effectively attack the application

Compruebe que la aplicación supervisa los eventos de administración de usuarios como los inicios de sesión de usuario correctos e incorrectos, el restablecimiento de contraseñas, los cambios de contraseña, el bloqueo de cuentas y el registro de usuarios.Ensure that the application monitors user management events such as successful and failed user logins, password resets, password changes, account lockout, and user registration. El registro de estos eventos le ayuda a detectar comportamientos potencialmente sospechosos y reaccionar ante ellos.Logging for these events helps you detect and react to potentially suspicious behavior. También le permite recopilar datos de operaciones, como, por ejemplo, quién accede a la aplicación.It also allows you to gather operations data, like who is accessing the application.

Pasos siguientesNext steps

En los siguientes artículos, se recomiendan controles de seguridad y actividades que pueden ayudarle a desarrollar e implementar aplicaciones seguras.In the following articles, we recommend security controls and activities that can help you develop and deploy secure applications.