Procedimientos recomendados de seguridad de Azure Service FabricAzure Service Fabric security best practices

La implementación de una aplicación en Azure es un proceso rápido, sencillo y rentable.Deploying an application on Azure is fast, easy, and cost-effective. Antes de implementar la aplicación en la nube en producción, revise la lista de procedimientos recomendados y fundamentales para implementar clústeres seguros en la aplicación.Before you deploy your cloud application into production, review our list of essential and recommended best practices for implementing secure clusters in your application.

Azure Service Fabric es una plataforma de sistemas distribuidos que facilita el empaquetamiento, la implementación y la administración de microservicios escalables y confiables.Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices. Service Fabric también aborda los desafíos importantes en el desarrollo y la administración de aplicaciones en la nube.Service Fabric also addresses the significant challenges in developing and managing cloud applications. Los desarrolladores y administradores pueden evitar problemas complejos de infraestructura y centrarse en su lugar en las cargas de trabajo más exigentes y críticas que son escalables, confiables y fáciles de administrar.Developers and administrators can avoid complex infrastructure problems and focus on implementing mission-critical, demanding workloads that are scalable, reliable, and manageable.

Para cada procedimiento recomendado, explicaremos:For each best practice, we explain:

  • El procedimiento recomendado.What the best practice is.
  • Por qué debería implementar el procedimiento recomendado.Why you should implement the best practice.
  • Qué puede ocurrir si no se implementa el procedimiento recomendado.What might happen if you don't implement the best practice.
  • Cómo aprender a implementar el procedimiento recomendado.How you can learn to implement the best practice.

Disponemos de los siguientes procedimientos recomendados de seguridad de Azure Service Fabric:We recommend the following Azure Service Fabric security best practices:

  • Usar plantillas de Azure Resource Manager y el módulo de PowerShell de Service Fabric para crear clústeres seguros.Use Azure Resource Manager templates and the Service Fabric PowerShell module to create secure clusters.
  • Usar certificados X.509.Use X.509 certificates.
  • Configurar directivas de seguridad.Configure security policies.
  • Implementar la configuración de seguridad de Reliable Actors.Implement the Reliable Actors security configuration.
  • Configurar TLS para Azure Service Fabric.Configure TLS for Azure Service Fabric.
  • Usar aislamiento y seguridad de red con Azure Service Fabric.Use network isolation and security with Azure Service Fabric.
  • Configurar Azure Key Vault para la seguridad.Configure Azure Key Vault for security.
  • Asignar usuarios a roles.Assign users to roles.

Procedimientos recomendados para proteger los clústeresBest practices for securing your clusters

Use siempre un clúster seguro:Always use a secure cluster:

  • Implemente la seguridad del clúster mediante el uso de certificados.Implement cluster security by using certificates.
  • Proporcione acceso de cliente (administrador y de solo lectura) mediante el uso de Azure Active Directory (Azure AD).Provide client access (admin and read-only) by using Azure Active Directory (Azure AD).

Use implementaciones automatizadas:Use automated deployments:

  • Use scripts para generar, implementar y sustituir secretos.Use scripts to generate, deploy, and roll over the secrets.
  • Almacene los secretos en Azure Key Vault y use Azure AD para todos los otros accesos de cliente.Store the secrets in Azure Key Vault and use Azure AD for all other client access.
  • Requiera autenticación para el acceso de usuario a los secretos.Require authentication for human access to the secrets.

Además, tenga en cuenta las siguientes opciones de configuración:Additionally, consider the following configuration options:

  • Cree redes perimetrales (también conocido como DMZ y subredes filtradas) mediante el uso de grupos de seguridad de red (NSG) de Azure.Create perimeter networks (also known as demilitarized zones, DMZs, and screened subnets) by using Azure Network Security Groups (NSGs).
  • Use servidores de salto con conexión a Escritorio remoto para obtener acceso a las máquinas virtuales (VM) del clúster o administrar el clúster.Access cluster virtual machines (VMs) or manage your cluster by using jump servers with Remote Desktop Connection.

Los clústeres deben estar protegidos para evitar que usuarios no autorizados se conecten a ellos, especialmente cuando un clúster está en producción.Your clusters must be secured to prevent unauthorized users from connecting, especially when a cluster is running in production. Aunque es posible crear un clúster sin protección, si este expone los puntos de conexión de administración a Internet público, podrían conectarse a él usuarios anónimos.Although it's possible to create an unsecured cluster, anonymous users can connect to your cluster if the cluster exposes management endpoints to the public internet.

Hay tres escenarios para implementar la seguridad del clúster mediante el uso de varias tecnologías:There are three scenarios for implementing cluster security by using various technologies:

  • Seguridad de nodo a nodo: este escenario protege la comunicación entre las máquinas virtuales y los equipos del clúster.Node-to-node security: This scenario secures communication between the VMs and the computers in the cluster. Esta forma de seguridad garantiza que solo los equipos que están autorizados a unirse al clúster pueden hospedar aplicaciones y servicios en el clúster.This form of security ensures that only those computers that are authorized to join the cluster can host applications and services in the cluster. En este escenario, los clústeres que se ejecutan en Azure o los independientes que se ejecutan en Windows pueden utilizar una seguridad basada en certificados o la seguridad de Windows para las máquinas con Windows Server.In this scenario, the clusters that run on Azure, or standalone clusters that run on Windows, can use either certificate security or Windows security for Windows Server machines.
  • Seguridad de cliente a nodo: este escenario protege la comunicación entre un cliente de Service Fabric y los nodos individuales del clúster.Client-to-node security: This scenario secures communication between a Service Fabric client and the individual nodes in the cluster.
  • Control de acceso basado en rol (RBAC): este escenario utiliza identidades diferentes (certificados, Azure AD, etc) para cada rol de cliente de administrador y usuario que tiene acceso al clúster.Role-Based Access Control (RBAC): This scenario uses separate identities (certificates, Azure AD, and so on) for each administrator and user client role that accesses the cluster. Se especifican las identidades de rol cuando se crea el clúster.You specify the role identities when you create the cluster.

Nota

Recomendación de seguridad para los clústeres de Azure: utilice la seguridad de Azure AD para autenticar a los clientes y certificados para la seguridad de nodo a nodo.Security recommendation for Azure clusters: Use Azure AD security to authenticate clients and certificates for node-to-node security.

Para configurar el clúster de Windows independiente, consulte Opciones de configuración de un clúster de Windows independiente.To configure a standalone Windows cluster, see Configure settings for a standalone Windows cluster.

Use plantillas de Azure Resource Manager y el módulo de PowerShell de Service Fabric para crear un clúster seguro.Use Azure Resource Manager templates and the Service Fabric PowerShell module to create a secure cluster. Para instrucciones paso a paso sobre la creación de un clúster seguro de Service Fabric con las plantillas de Azure Resource Manager, consulte Creación de un clúster de Service Fabric.For step-by-step instructions to create a secure Service Fabric cluster by using Azure Resource Manager templates, see Creating a Service Fabric cluster.

Utilice la plantilla de Azure Resource Manager:Use the Azure Resource Manager template:

  • Personalice el clúster mediante la plantilla para configurar el almacenamiento administrado para los discos duros virtuales (VHD) de la máquina virtual.Customize your cluster by using the template to configure managed storage for VM virtual hard disks (VHDs).
  • Realice los cambios al grupo de recursos mediante la plantilla para facilitar la administración de la configuración y la auditoría.Drive changes to your resource group by using the template for easy configuration management and auditing.

Trate la configuración del clúster como código:Treat your cluster configuration as code:

  • Sea exhaustivo al comprobar las configuraciones de implementación.Be thorough when checking your deployment configurations.
  • Evite el uso de comandos implícitos para modificar directamente los recursos.Avoid using implicit commands to directly modify your resources.

Muchos aspectos del ciclo de vida de la aplicación de Service Fabric pueden automatizarse.Many aspects of the Service Fabric application lifecycle can be automated. El módulo de PowerShell de Service Fabric automatiza las tareas comunes para implementar, actualizar, eliminar y probar aplicaciones de Azure Service Fabric.The Service Fabric PowerShell module automates common tasks for deploying, upgrading, removing, and testing Azure Service Fabric applications. También cuenta con API HTTP y administradas para la administración de aplicaciones.Managed APIs and HTTP APIs for application management are also available.

Uso de certificados X.509Use X.509 certificates

Proteja siempre los clústeres mediante el uso de certificados X.509 o con la seguridad de Windows.Always secure your clusters by using X.509 certificates or Windows security. Solo se configura la seguridad en el momento de creación de clúster.Security is only configured at cluster creation time. No es posible activar la seguridad una vez creado el clúster.It's not possible to turn on security after the cluster is created.

Para especificar un certificado de clúster, establezca el valor de la propiedad ClusterCredentialType en X509.To specify a cluster certificate, set the value of the ClusterCredentialType property to X509. Para especificar un certificado de servidor para conexiones externas, establezca la propiedad ServerCredentialType en X509.To specify a server certificate for outside connections, set the ServerCredentialType property to X509.

Además, siga estos procedimientos:In addition, follow these practices:

  • Cree los certificados para los clústeres de producción mediante un servicio de certificados de Windows Server configurado correctamente.Create the certificates for production clusters by using a correctly configured Windows Server certificate service. También puede obtener los certificados de una entidad de certificación aprobada (CA).You can also obtain the certificates from an approved certificate authority (CA).
  • Nunca utilice a un certificado temporal o de prueba para clústeres de producción si el certificado se creó mediante MakeCert.exe u otra herramienta similar.Never use a temporary or test certificate for production clusters if the certificate was created by using MakeCert.exe or a similar tool.
  • Use un certificado autofirmado para clústeres de prueba, pero no para clústeres de producción.Use a self-signed certificate for test clusters, but not for production clusters.

Si el clúster no es seguro, cualquiera puede conectarse de forma anónima y realizar operaciones de administración.If the cluster is unsecure, anyone can connect to the cluster anonymously and perform management operations. Por esta razón, proteja siempre los clústeres de producción mediante el uso de certificados X.509 o con la seguridad de Windows.For this reason, always secure production clusters by using X.509 certificates or Windows security.

Para más información sobre el uso de certificados X.509, consulte Agregar o quitar certificados para un clúster de Service Fabric.To learn more about using X.509 certificates, see Add or remove certificates for a Service Fabric cluster.

Configuración de directivas de seguridadConfigure security policies

Service Fabric también protege los recursos utilizados por las aplicaciones.Service Fabric also secures the resources that are used by applications. Los recursos tales como archivos, directorios y certificados se almacenan en las cuentas de usuario cuando se implementa la aplicación.Resources like files, directories, and certificates are stored under the user accounts when the application is deployed. Esta característica aumenta la seguridad entre las aplicaciones en ejecución, incluso en un entorno hospedado compartido.This feature makes running applications more secure from one another, even in a shared hosted environment.

  • Use un usuario o un grupo de dominios de Active Directory: ejecute el servicio con las credenciales de una cuenta de usuario o grupo de Active Directory.Use an Active Directory domain group or user: Run the service under the credentials for an Active Directory user or group account. Asegúrese de utilizar Active Directory local dentro del dominio y no Azure Active Directory.Be sure to use Active Directory on-premises within your domain and not Azure Active Directory. Utilice un usuario o grupo de dominio para tener acceso a otros recursos del dominio en los que se le hayan concedido permisos.Access other resources in the domain that have been granted permissions by using a domain user or group. Por ejemplo, recursos compartidos de archivos.For example, resources such as file shares.

  • Asigne una directiva de acceso de seguridad a los puntos de conexión HTTP y HTTPS: especifique la propiedad SecurityAccessPolicy para aplicar una directiva RunAs a un servicio cuando el manifiesto de servicio declare los recursos del punto de conexión con HTTP.Assign a security access policy for HTTP and HTTPS endpoints: Specify the SecurityAccessPolicy property to apply a RunAs policy to a service when the service manifest declares endpoint resources with HTTP. Los puertos asignados a los puntos de conexión HTTP son listas de acceso controlado para la cuenta de usuario RunAs en la que se ejecuta el servicio.Ports allocated to the HTTP endpoints are correctly access-controlled lists for the RunAs user account that the service runs under. Cuando la directiva no está establecida, http.sys no tiene acceso al servicio y pueden aparecer errores en las llamadas del cliente.When the policy isn't set, http.sys doesn't have access to the service and you can get failures with calls from the client.

Para más información sobre el uso de directivas de seguridad en un clúster de Service Fabric, consulte Configuración de directivas de seguridad para la aplicación.To learn how to use security policies in a Service Fabric cluster, see Configure security policies for your application.

Implementación de la configuración de seguridad de Reliable ActorsImplement the Reliable Actors security configuration

Service Fabric Reliable Actors es una implementación del modelo de diseño del actor.Service Fabric Reliable Actors is an implementation of the actor design pattern. Al igual que sucede con cualquier modelo de diseño de software, la decisión de usar un modelo específico se toma en función de si un problema de diseño de software se adapta al modelo o no.As with any software design pattern, the decision to use a specific pattern is based on whether a software problem fits the pattern.

En general, utilice el modelo de diseño de actor para ayudar a modelar soluciones para los siguientes problemas de software o escenarios de seguridad:In general, use the actor design pattern to help model solutions for the following software problems or security scenarios:

  • El espacio del problema implica un gran número (miles o más) de unidades pequeñas, independientes y aisladas de estado y lógica.Your problem space involves a large number (thousands or more) of small, independent, and isolated units of state and logic.
  • Trabaja con objetos de un único subproceso que no requieren una interacción importante con componentes externos, incluida la consulta del estado en un conjunto de actores.You're working with single-threaded objects that don't require significant interaction from external components, including querying state across a set of actors.
  • Las instancias de actor no bloquean a los autores de llamadas con retrasos imprevisibles emitiendo operaciones de E/S.Your actor instances don't block callers with unpredictable delays by issuing I/O operations.

En Service Fabric, los actores se implementan en el marco de trabajo de la aplicación de Reliable Actors.In Service Fabric, actors are implemented in the Reliable Actors application framework. Este marco de trabajo se basa en el patrón de actor y está construido sobre Reliable Services de Service Fabric.This framework is based on the actor pattern and built on top of Service Fabric Reliable Services. Cada servicio de Reliable Actors que escribe es un servicio de confianza con estado particionado.Each reliable actor service that you write is a partitioned stateful reliable service.

Cada actor se define como una instancia de un tipo de actor, similar a la forma en que un objeto de .NET es una instancia de un tipo de .NET.Every actor is defined as an instance of an actor type, identical to the way a .NET object is an instance of a .NET type. Por ejemplo, un tipo de actor que implementa la funcionalidad de una calculadora puede tener muchos actores de ese tipo distribuidos en varios nodos en un clúster.For example, an actor type that implements the functionality of a calculator can have many actors of that type that are distributed on various nodes across a cluster. Cada uno de los actores distribuidos se caracteriza de forma única por un identificador de actor.Each of the distributed actors is uniquely characterized by an actor identifier.

Las configuraciones de seguridad del replicador se usan para proteger el canal de comunicación que se utiliza durante la replicación.Replicator security configurations are used to secure the communication channel that is used during replication. Esta configuración impide que los servicios vean el tráfico de replicación de otros servicios y garantiza que los datos de alta disponibilidad son seguros.This configuration prevents services from seeing each other's replication traffic and ensures that highly available data is secure. De forma predeterminada, una sección de configuración de seguridad vacía impide la seguridad de la replicación.By default, an empty security configuration section prevents replication security. Las configuraciones de replicador configuran el replicador que es responsable de hacer que el proveedor de estado del actor resulte altamente confiable.Replicator configurations configure the replicator that is responsible for making the Actor State Provider state highly reliable.

Configuración de TLS para Azure Service FabricConfigure TLS for Azure Service Fabric

El proceso de autenticación de servidor autentica los puntos de conexión de administración del clúster a un cliente de administración.The server authentication process authenticates the cluster management endpoints to a management client. El cliente de administración, a continuación, reconoce que se comunica con el clúster real.The management client then recognizes that it's talking to the real cluster. Este certificado proporciona también un TLS para la API de administración de HTTPS y para Service Fabric Explorer sobre HTTPS.This certificate also provides a TLS for the HTTPS management API and for Service Fabric Explorer over HTTPS. Debe adquirir un nombre de dominio personalizado para el clúster.You must obtain a custom domain name for your cluster. Cuando solicite un certificado de una entidad de certificación, el nombre de sujeto del certificado debe coincidir con el nombre de dominio personalizado del clúster.When you request a certificate from a certificate authority, the certificate's subject name must match the custom domain name that you use for your cluster.

Para configurar TLS para una aplicación, primero debe obtener un certificado SSL/TLS firmado por una entidad de certificación.To configure TLS for an application, you first need to obtain an SSL/TLS certificate that has been signed by a CA. La entidad de certificación es un tercero de confianza que emite certificados para TLS por motivos de seguridad.The CA is a trusted third party that issues certificates for TLS security purposes. Si todavía no tiene un certificado SSL/TLS, deberá obtenerlo de una compañía que los venda.If you don't already have an SSL/TLS certificate, you need to obtain one from a company that sells SSL/TLS certificates.

El certificado debe cumplir los siguientes requisitos de certificados SSL/TLS en Azure:The certificate must meet the following requirements for SSL/TLS certificates in Azure:

  • El certificado debe contener una clave privada.The certificate must contain a private key.

  • El certificado debe crearse para el intercambio de claves, que se puedan exportar a un archivo Personal Information Exchange (.pfx).The certificate must be created for key exchange and be exportable to a personal information exchange (.pfx) file.

  • El nombre de sujeto del certificado debe coincidir con el nombre de dominio usado para tener acceso al servicio en la nube.The certificate's subject name must match the domain name that is used to access your cloud service.

    • Debe adquirir un nombre de dominio personalizado para el acceso a su servicio en la nube.Acquire a custom domain name to use for accessing your cloud service.
    • Solicite un certificado a una entidad de certificación con un nombre de sujeto que coincida con el nombre de dominio personalizado del servicio.Request a certificate from a CA with a subject name that matches your service's custom domain name. Por ejemplo, si el nombre de dominio personalizado es contoso .com, el certificado de la CA debe tener el nombre de sujeto .contoso.com o www .contoso.com.For example, if your custom domain name is contoso.com, the certificate from your CA should have the subject name .contoso.com or www.contoso.com.

    Nota

    No se puede obtener un certificado SSL/TLS de una entidad de certificación para el dominio cloudapp .net.You cannot obtain an SSL/TLS certificate from a CA for the cloudapp.net domain.

  • Este certificado debe usar un cifrado de 2,048 bits como mínimo.The certificate must use a minimum of 2,048-bit encryption.

El protocolo HTTP no es seguro y está sujeto a ataques de interceptación.The HTTP protocol is unsecure and subject to eavesdropping attacks. Los datos que se transmiten a través de HTTP se envían como texto sin formato desde el explorador web al servidor web o entre otros puntos de conexión.Data that is transmitted over HTTP is sent as plain text from the web browser to the web server or between other endpoints. Los atacantes pueden interceptar y ver datos confidenciales enviados a través de HTTP, como los detalles de las tarjetas de crédito e inicios de sesión de cuenta.Attackers can intercept and view sensitive data that is sent via HTTP, such as credit card details and account logins. Cuando los datos se envían o se publican a través de un explorador mediante HTTPS, SSL garantiza que esa información se cifra y protege de la interceptación.When data is sent or posted through a browser via HTTPS, SSL ensures that sensitive information is encrypted and secure from interception.

Para más información sobre el uso de certificados SSL/TLS, consulte Configuración de TLS para una aplicación en Azure.To learn more about using SSL/TLS certificates, see Configuring TLS for an application in Azure.

Uso de aislamiento y seguridad de red con Azure Service FabricUse network isolation and security with Azure Service Fabric

Configure un clúster seguro de 3 tipos de nodo mediante la plantilla de Azure Resource Manager como ejemplo.Set up a 3 nodetype secure cluster by using the Azure Resource Manager template as a sample. Controle el tráfico de red entrante y saliente mediante el uso de la plantilla y los grupos de seguridad de red.Control the inbound and outbound network traffic by using the template and Network Security Groups.

La plantilla tiene un grupo de seguridad de red para cada uno de los conjuntos de escalado de máquinas virtuales a fin de controlar el tráfico dentro y fuera del conjunto.The template has an NSG for each of the virtual machine scale sets and is used to control the traffic in and out of the set. De forma predeterminada, las reglas se configuran para permitir todo el tráfico que necesitan los servicios del sistema y los puertos de la aplicación especificados en la plantilla.The rules are configured by default to allow all traffic necessary for the system services and the application ports specified in the template. Revise esas reglas y realice los cambios que necesite, incluido agregar nuevas reglas para las aplicaciones.Review these rules and make any changes to fit your needs, including adding new rules for your applications.

Para más información, consulte Escenarios comunes de redes para Azure Service Fabric.For more information, see Common networking scenarios for Azure Service Fabric.

Configuración de Azure Key Vault para la seguridadSet up Azure Key Vault for security

Service Fabric usa certificados para proporcionar autenticación y cifrado con el fin de proteger un clúster y sus aplicaciones.Service Fabric uses certificates to provide authentication and encryption for securing a cluster and its applications.

Service Fabric usa certificados X.509 para proteger un clúster y proporcionar características de seguridad de las aplicaciones.Service Fabric uses X.509 certificates to secure a cluster and to provide application security features. Azure Key Vault se usa para administrar certificados para clústeres de Service Fabric en Azure.You use Azure Key Vault to manage certificates for Service Fabric clusters in Azure. El proveedor de recursos de Azure que crea los clústeres extrae los certificados de un almacén de claves.The Azure resource provider that creates the clusters pulls the certificates from a key vault. El proveedor, a continuación, instala los certificados en las máquinas virtuales cuando el clúster se implementa en Azure.The provider then installs the certificates on the VMs when the cluster is deployed on Azure.

Existe una relación de certificados entre Azure Key Vault, el clúster de Service Fabric y el proveedor de recursos que usa los certificados.A certificate relationship exists between Azure Key Vault, the Service Fabric cluster, and the resource provider that uses the certificates. Cuando se crea el clúster, la información sobre la relación de certificados se almacena en un almacén de claves.When the cluster is created, information about the certificate relationship is stored in a key vault.

Hay dos pasos básicos para configurar un almacén de claves:There are two basic steps to set up a key vault:

  1. Crear un grupo de recursos específico para el almacén de claves.Create a resource group specifically for your key vault.

    Se recomienda colocar el almacén de claves en su propio grupo de recursos.We recommend that you put the key vault in its own resource group. Esta acción ayuda a evitar la pérdida de las claves y secretos si se eliminan otros grupos de recursos, como almacenamiento, proceso o el grupo que contiene el clúster.This action helps to prevent the loss of your keys and secrets if other resource groups are removed, such as storage, compute, or the group that contains your cluster. El grupo de recursos que contiene el almacén de claves debe estar en la misma región que el clúster que lo usa.The resource group that contains your key vault must be in the same region as the cluster that is using it.

  2. Crear un almacén de claves en el nuevo grupo de recursos.Create a key vault in the new resource group.

    El almacén de claves debe estar habilitado para la implementación.The key vault must be enabled for deployment. El proveedor de recursos de proceso, a continuación, puede obtener los certificados del almacén e instalarlos en las instancias de máquina virtual.The compute resource provider can then get the certificates from the vault and install them on the VM instances.

Para obtener más información sobre cómo configurar un almacén de claves, consulte ¿Qué es Azure Key Vault?.To learn more about how to set up a key vault, see What is Azure Key Vault?.

Asignación de usuarios a rolesAssign users to roles

Una vez que haya creado las aplicaciones para representar el clúster, debe asignar los usuarios a los roles compatibles con Service Fabric: solo lectura y administrador. Puede asignar los roles mediante Azure Portal.After you've created the applications to represent your cluster, assign your users to the roles that are supported by Service Fabric: read-only and admin. You can assign these roles by using the Azure portal.

Nota

Para más información sobre el uso de roles en Service Fabric, consulte Control de acceso basado en roles para clientes de Service Fabric.For more information about using roles in Service Fabric, see Role-Based Access Control for Service Fabric clients.

Azure Service Fabric admite dos tipos de control de acceso para los clientes que están conectados a un clúster de Service Fabric: administrador y usuario.Azure Service Fabric supports two access control types for clients that are connected to a Service Fabric cluster: administrator and user. El administrador del clúster puede usar el control de acceso para limitarlo a determinadas operaciones del clúster para los diferentes grupos de usuarios.The cluster administrator can use access control to limit access to certain cluster operations for different groups of users. El control de acceso hace que el clúster sea más seguro.Access control makes the cluster more secure.

Pasos siguientesNext steps