Melhores práticas de segurança do Service FabricAzure Service Fabric security best practices

Implementar uma aplicação no Azure é rápido, fácil e rentável.Deploying an application on Azure is fast, easy, and cost-effective. Antes de colocar a sua aplicação em nuvem em produção, reveja a nossa lista de boas práticas essenciais e recomendadas para implementar clusters seguros na sua aplicação.Before you deploy your cloud application into production, review our list of essential and recommended best practices for implementing secure clusters in your application.

O Azure Service Fabric é uma plataforma de sistemas distribuídos que facilita o empacotamento, a implementação e a gestão de microsserviços dimensionáveis e fiáveis.Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices. O Service Fabric também faz face aos desafios significativos no desenvolvimento e na gestão de aplicações na cloud.Service Fabric also addresses the significant challenges in developing and managing cloud applications. Permite, assim, que os programadores e administradores evitem problemas complexos de infraestrutura e se concentrem na implementação de cargas de trabalho exigentes e fundamentais que sejam dimensionáveis, fiáveis e geríveis.Developers and administrators can avoid complex infrastructure problems and focus on implementing mission-critical, demanding workloads that are scalable, reliable, and manageable.

Para cada boa prática, explicamos:For each best practice, we explain:

  • Qual é a melhor prática.What the best practice is.
  • Por que deve implementar as melhores práticas?Why you should implement the best practice.
  • O que pode acontecer se não implementares as melhores práticas.What might happen if you don't implement the best practice.
  • Como pode aprender a implementar as melhores práticas.How you can learn to implement the best practice.

Recomendamos as seguintes boas práticas de segurança da Azure Service Fabric:We recommend the following Azure Service Fabric security best practices:

  • Utilize os modelos do Gestor de Recursos Azure e o módulo PowerShell do tecido de serviço para criar clusters seguros.Use Azure Resource Manager templates and the Service Fabric PowerShell module to create secure clusters.
  • Utilize certificados X.509.Use X.509 certificates.
  • Configurar políticas de segurança.Configure security policies.
  • Implementar a configuração de segurança de Atores Fidedigso.Implement the Reliable Actors security configuration.
  • Configure TLS para tecido de serviço Azure.Configure TLS for Azure Service Fabric.
  • Utilize isolamento de rede e segurança com o Azure Service Fabric.Use network isolation and security with Azure Service Fabric.
  • Configure Azure Key Vault para segurança.Configure Azure Key Vault for security.
  • Atribua os utilizadores a funções.Assign users to roles.

Melhores práticas para garantir os seus clustersBest practices for securing your clusters

Utilize sempre um cluster seguro:Always use a secure cluster:

  • Implementar a segurança do cluster utilizando certificados.Implement cluster security by using certificates.
  • Fornecer acesso ao cliente (administrador e apenas leitura) utilizando o Azure Ative Directory (Azure AD).Provide client access (admin and read-only) by using Azure Active Directory (Azure AD).

Utilizar implementações automatizadas:Use automated deployments:

  • Use scripts para gerar, implementar e rebolar os segredos.Use scripts to generate, deploy, and roll over the secrets.
  • Guarde os segredos no Azure Key Vault e use a Azure AD para todos os outros acessos ao cliente.Store the secrets in Azure Key Vault and use Azure AD for all other client access.
  • Requerem autenticação para acesso humano aos segredos.Require authentication for human access to the secrets.

Além disso, considere as seguintes opções de configuração:Additionally, consider the following configuration options:

  • Criar redes de perímetro (também conhecidas como zonas desmilitarizadas, DMZs e sub-redes selecionadas) utilizando grupos de segurança da rede Azure (NSGs).Create perimeter networks (also known as demilitarized zones, DMZs, and screened subnets) by using Azure Network Security Groups (NSGs).
  • Aceda a máquinas virtuais de cluster (VMs) ou gere o seu cluster utilizando servidores de salto com Conexão de Ambiente de Trabalho Remoto.Access cluster virtual machines (VMs) or manage your cluster by using jump servers with Remote Desktop Connection.

Os seus agrupamentos devem ser protegidos para evitar que os utilizadores não autorizados se conectem, especialmente quando um cluster está em funcionamento.Your clusters must be secured to prevent unauthorized users from connecting, especially when a cluster is running in production. Embora seja possível criar um cluster não seguro, os utilizadores anónimos podem ligar-se ao seu cluster se o cluster expor os pontos finais de gestão para a internet pública.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.

Existem três cenários para implementar a segurança do cluster utilizando várias tecnologias:There are three scenarios for implementing cluster security by using various technologies:

  • Segurança nó-a-nó: Este cenário assegura a comunicação entre os VMs e os computadores do cluster.Node-to-node security: This scenario secures communication between the VMs and the computers in the cluster. Esta forma de segurança garante que apenas os computadores autorizados a aderir ao cluster podem acolher aplicações e serviços no cluster.This form of security ensures that only those computers that are authorized to join the cluster can host applications and services in the cluster. Neste cenário, os clusters que funcionam no Azure, ou clusters autónomos que funcionam no Windows, podem utilizar a segurança dos certificados ou a segurança do Windows para máquinas do 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.
  • Segurança cliente-a-nó: Este cenário assegura a comunicação entre um cliente de Service Fabric e os nós individuais no cluster.Client-to-node security: This scenario secures communication between a Service Fabric client and the individual nodes in the cluster.
  • Controlo de acesso baseado em funções do Service Fabric (Service Fabric RBAC): Este cenário utiliza identidades separadas (certificados, Azure AD, e assim por diante) para cada administrador e papel do cliente do utilizador que acede ao cluster.Service Fabric role-based access control (Service Fabric RBAC): This scenario uses separate identities (certificates, Azure AD, and so on) for each administrator and user client role that accesses the cluster. Especifica as identidades de função quando cria o cluster.You specify the role identities when you create the cluster.

Nota

Recomendação de segurança para os clusters Azure: Utilize a segurança Azure AD para autenticar clientes e certificados para segurança nó-a-nó.Security recommendation for Azure clusters: Use Azure AD security to authenticate clients and certificates for node-to-node security.

Para configurar um cluster Windows autónomo, consulte as definições de Configuração para um cluster Windows autónomo.To configure a standalone Windows cluster, see Configure settings for a standalone Windows cluster.

Utilize os modelos do Gestor de Recursos Azure e o módulo PowerShell do tecido de serviço para criar um cluster seguro.Use Azure Resource Manager templates and the Service Fabric PowerShell module to create a secure cluster. Para obter instruções passo a passo para criar um cluster de tecido de serviço seguro utilizando modelos de Gestor de Recursos Azure, consulte criar um cluster de tecido de serviço.For step-by-step instructions to create a secure Service Fabric cluster by using Azure Resource Manager templates, see Creating a Service Fabric cluster.

Utilize o modelo Azure Resource Manager:Use the Azure Resource Manager template:

  • Personalize o seu cluster utilizando o modelo para configurar o armazenamento gerido para discos rígidos virtuais VM (VHDs).Customize your cluster by using the template to configure managed storage for VM virtual hard disks (VHDs).
  • Insupro as alterações ao seu grupo de recursos utilizando o modelo para uma gestão e auditoria fáceis de configuração.Drive changes to your resource group by using the template for easy configuration management and auditing.

Trate a sua configuração de cluster como código:Treat your cluster configuration as code:

  • Seja minucioso ao verificar as configurações de implementação.Be thorough when checking your deployment configurations.
  • Evite utilizar comandos implícitos para modificar diretamente os seus recursos.Avoid using implicit commands to directly modify your resources.

Muitos aspetos do ciclo de vida da aplicação Service Fabric podem ser automatizados.Many aspects of the Service Fabric application lifecycle can be automated. O módulo PowerShell do tecido de serviço automatiza tarefas comuns para implantação, atualização, remoção e teste de aplicações do Tecido de Serviço Azure.The Service Fabric PowerShell module automates common tasks for deploying, upgrading, removing, and testing Azure Service Fabric applications. Estão também disponíveis APIs geridos e APIs HTTP para gestão de aplicações.Managed APIs and HTTP APIs for application management are also available.

Utilizar certificados X.509Use X.509 certificates

Proteja sempre os seus clusters utilizando certificados X.509 ou segurança do Windows.Always secure your clusters by using X.509 certificates or Windows security. A segurança só está configurada no tempo de criação do cluster.Security is only configured at cluster creation time. Não é possível ligar a segurança depois do aglomerado ser criado.It's not possible to turn on security after the cluster is created.

Para especificar um certificado de cluster,desloque o valor da propriedade ClusterCredentialType para X509.To specify a cluster certificate, set the value of the ClusterCredentialType property to X509. Para especificar um certificado de servidor para ligações externas, desloque a propriedade ServerCredentialType para X509.To specify a server certificate for outside connections, set the ServerCredentialType property to X509.

Além disso, siga estas práticas:In addition, follow these practices:

  • Crie os certificados para clusters de produção utilizando um serviço de certificados do Windows Server corretamente configurado.Create the certificates for production clusters by using a correctly configured Windows Server certificate service. Pode ainda obter os certificados de uma autoridade de certificados aprovada (CA).You can also obtain the certificates from an approved certificate authority (CA).
  • Nunca utilize um certificado temporário ou de teste para agrupamentos de produção se o certificado tiver sido criado utilizando MakeCert.exe ou uma ferramenta semelhante.Never use a temporary or test certificate for production clusters if the certificate was created by using MakeCert.exe or a similar tool.
  • Utilize um certificado auto-assinado para agrupamentos de teste, mas não para clusters de produção.Use a self-signed certificate for test clusters, but not for production clusters.

Se o cluster não for seguro, qualquer pessoa pode ligar-se ao cluster de forma anónima e realizar operações de gestão.If the cluster is unsecure, anyone can connect to the cluster anonymously and perform management operations. Por esta razão, proteja sempre os clusters de produção utilizando certificados X.509 ou segurança do Windows.For this reason, always secure production clusters by using X.509 certificates or Windows security.

Para saber mais sobre a utilização de certificados X.509, consulte adicionar ou remover certificados para um cluster de Tecido de Serviço.To learn more about using X.509 certificates, see Add or remove certificates for a Service Fabric cluster.

Configure políticas de segurançaConfigure security policies

A Service Fabric também assegura os recursos que são utilizados pelas aplicações.Service Fabric also secures the resources that are used by applications. Recursos como ficheiros, diretórios e certificados são armazenados nas contas do utilizador quando a aplicação é implementada.Resources like files, directories, and certificates are stored under the user accounts when the application is deployed. Esta funcionalidade torna as aplicações de execução mais seguras umas das outras, mesmo num ambiente partilhado.This feature makes running applications more secure from one another, even in a shared hosted environment.

  • Utilize um grupo de domínio de Diretório Ativo ou utilizador: Executar o serviço sob as credenciais para um utilizador do Ative Directory ou conta de grupo.Use an Active Directory domain group or user: Run the service under the credentials for an Active Directory user or group account. Certifique-se de que utiliza o Ative Directory no seu domínio e não o Azure Ative Directory.Be sure to use Active Directory on-premises within your domain and not Azure Active Directory. Aceda a outros recursos no domínio que tenham sido autorizados através da utilização de um utilizador ou grupo de domínio.Access other resources in the domain that have been granted permissions by using a domain user or group. Por exemplo, recursos como ações de ficheiros.For example, resources such as file shares.

  • Atribuir uma política de acesso à segurança para pontos finais HTTP e HTTPS: Especifique a propriedade SecurityAccessPolicy para aplicar uma política RunAs a um serviço quando o manifesto de serviço declara recursos de ponto final com 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. As portas atribuídas aos pontos finais HTTP são listas controladas corretamente para a conta de utilizador RunAs que o serviço executa.Ports allocated to the HTTP endpoints are correctly access-controlled lists for the RunAs user account that the service runs under. Quando a apólice não está definida, http.sys não tem acesso ao serviço e pode obter falhas com chamadas do 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 aprender a utilizar as políticas de segurança num cluster de Tecidos de Serviço, consulte as políticas de segurança Configure para a sua aplicação.To learn how to use security policies in a Service Fabric cluster, see Configure security policies for your application.

Implementar a configuração de segurança de Atores FiáveisImplement the Reliable Actors security configuration

Service Fabric Reliable Actors é uma implementação do padrão de design do ator.Service Fabric Reliable Actors is an implementation of the actor design pattern. Como em qualquer padrão de design de software, a decisão de usar um padrão específico baseia-se em se um problema de software se encaixa no padrão.As with any software design pattern, the decision to use a specific pattern is based on whether a software problem fits the pattern.

Em geral, utilize o padrão de design do ator para ajudar a modelar soluções para os seguintes problemas de software ou cenários de segurança:In general, use the actor design pattern to help model solutions for the following software problems or security scenarios:

  • O seu espaço problemático envolve um grande número (milhares ou mais) de pequenas, independentes e isoladas unidades de estado e lógica.Your problem space involves a large number (thousands or more) of small, independent, and isolated units of state and logic.
  • Estás a trabalhar com objetos de linha única que não requerem interação significativa de componentes externos, incluindo o estado de consulta através de um conjunto de atores.You're working with single-threaded objects that don't require significant interaction from external components, including querying state across a set of actors.
  • Os seus casos de ator não bloqueiam chamadas com atrasos imprevisíveis ao emitir operações de E/S.Your actor instances don't block callers with unpredictable delays by issuing I/O operations.

No Service Fabric, os atores são implementados no quadro de aplicação de Atores Fidedigtos.In Service Fabric, actors are implemented in the Reliable Actors application framework. Esta estrutura baseia-se no padrão do ator e construída em cima dos Serviços De Fiabilidadedo Tecido de Serviço.This framework is based on the actor pattern and built on top of Service Fabric Reliable Services. Cada serviço de ator confiável que escreve é um serviço de confiança estatal.Each reliable actor service that you write is a partitioned stateful reliable service.

Cada ator é definido como um exemplo de um tipo de ator, idêntico à forma como um objeto .NET é um exemplo de um tipo .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 exemplo, um tipo de ator que implementa a funcionalidade de uma calculadora pode ter muitos atores desse tipo que são distribuídos em vários nós através de um cluster.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 um dos atores distribuídos é caracterizado exclusivamente por um identificador de ator.Each of the distributed actors is uniquely characterized by an actor identifier.

As configurações de segurança do replicador são usadas para proteger o canal de comunicação que é utilizado durante a replicação.Replicator security configurations are used to secure the communication channel that is used during replication. Esta configuração impede que os serviços vejam o tráfego de replicação uns dos outros e garante que os dados altamente disponíveis são seguros.This configuration prevents services from seeing each other's replication traffic and ensures that highly available data is secure. Por predefinição, uma secção de configuração de segurança vazia impede a segurança da replicação.By default, an empty security configuration section prevents replication security. As configurações do replicador configuram o replicador que é responsável por tornar o Estado do Ator State Provider altamente fiável.Replicator configurations configure the replicator that is responsible for making the Actor State Provider state highly reliable.

Configure TLS para tecido de serviço AzureConfigure TLS for Azure Service Fabric

O processo de autenticação do servidor autentica os pontos finais de gestão do cluster a um cliente de gestão.The server authentication process authenticates the cluster management endpoints to a management client. O cliente da gerência reconhece então que está a falar com o verdadeiro cluster.The management client then recognizes that it's talking to the real cluster. Este certificado também fornece um TLS para a API de gestão HTTPS e para o Service Fabric Explorer em HTTPS.This certificate also provides a TLS for the HTTPS management API and for Service Fabric Explorer over HTTPS. Tem de obter um nome de domínio personalizado para o cluster.You must obtain a custom domain name for your cluster. Quando solicita um certificado a uma autoridade de certificados, o nome do certificado deve corresponder ao nome de domínio personalizado que utiliza para o seu cluster.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 o TLS para uma aplicação, primeiro precisa de obter um certificado SSL/TLS assinado por um CA.To configure TLS for an application, you first need to obtain an SSL/TLS certificate that has been signed by a CA. A AC é um terceiro de confiança que emite certificados para fins de segurança TLS.The CA is a trusted third party that issues certificates for TLS security purposes. Se ainda não tem um certificado SSL/TLS, precisa de obter um de uma empresa que venda certificados SSL/TLS.If you don't already have an SSL/TLS certificate, you need to obtain one from a company that sells SSL/TLS certificates.

O certificado deve satisfazer os seguintes requisitos relativos aos certificados SSL/TLS em Azure:The certificate must meet the following requirements for SSL/TLS certificates in Azure:

  • O certificado deve conter uma chave privada.The certificate must contain a private key.

  • O certificado deve ser criado para troca de chaves e ser exportável para um ficheiro de troca de informações pessoais (.pfx).The certificate must be created for key exchange and be exportable to a personal information exchange (.pfx) file.

  • O nome do certificado deve corresponder ao nome de domínio utilizado para aceder ao seu serviço na nuvem.The certificate's subject name must match the domain name that is used to access your cloud service.

    • Adquira um nome de domínio personalizado para usar para aceder ao seu serviço na nuvem.Acquire a custom domain name to use for accessing your cloud service.
    • Solicite um certificado a um CA com um nome de sujeito que corresponda ao nome de domínio personalizado do seu serviço.Request a certificate from a CA with a subject name that matches your service's custom domain name. Por exemplo, se o seu nome de domínio personalizado for contoso.com, o certificado da sua AC deve ter o nome de assunto .contoso.com ou 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

    Não é possível obter um certificado SSL/TLS de um CA para o domínio cloudapp.net.You cannot obtain an SSL/TLS certificate from a CA for the cloudapp.net domain.

  • O certificado deve utilizar um mínimo de 2.048 bits de encriptação.The certificate must use a minimum of 2,048-bit encryption.

O protocolo HTTP é inseguro e está sujeito a ataques de escuta.The HTTP protocol is unsecure and subject to eavesdropping attacks. Os dados que são transmitidos através de HTTP são enviados como texto simples do navegador web para o servidor web ou entre outros pontos finais.Data that is transmitted over HTTP is sent as plain text from the web browser to the web server or between other endpoints. Os atacantes podem intercetar e visualizar dados sensíveis que são enviados através de HTTP, tais como dados do cartão de crédito e logins de conta.Attackers can intercept and view sensitive data that is sent via HTTP, such as credit card details and account logins. Quando os dados são enviados ou publicados através de um navegador através de HTTPS, o SSL garante que as informações sensíveis são encriptadas e seguras a partir da interceção.When data is sent or posted through a browser via HTTPS, SSL ensures that sensitive information is encrypted and secure from interception.

Para saber mais sobre a utilização de certificados SSL/TLS, consulte configurar tLS para obter uma aplicação em Azure.To learn more about using SSL/TLS certificates, see Configuring TLS for an application in Azure.

Use o isolamento da rede e a segurança com o Tecido de Serviço AzureUse network isolation and security with Azure Service Fabric

Crie um cluster de 3 tipos seguros de tipo usando o modelo do Gestor de Recursos Azure como amostra.Set up a 3 nodetype secure cluster by using the Azure Resource Manager template as a sample. Controle o tráfego de rede de entrada e saída utilizando o modelo e os grupos de segurança da rede.Control the inbound and outbound network traffic by using the template and Network Security Groups.

O modelo tem um NSG para cada um dos conjuntos de balanças de máquinas virtuais e é usado para controlar o tráfego dentro e fora do 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. As regras são configuradas por padrão para permitir todo o tráfego necessário para os serviços do sistema e as portas de aplicação especificadas no modelo.The rules are configured by default to allow all traffic necessary for the system services and the application ports specified in the template. Reveja estas regras e faça quaisquer alterações que se adaptem às suas necessidades, incluindo a adição de novas regras para as suas aplicações.Review these rules and make any changes to fit your needs, including adding new rules for your applications.

Para obter mais informações, consulte cenários comuns de networking para O Tecido de Serviço Azure.For more information, see Common networking scenarios for Azure Service Fabric.

Configurar o Cofre da Chave Azure para segurançaSet up Azure Key Vault for security

O Service Fabric utiliza certificados para fornecer autenticação e encriptação para garantir um cluster e suas aplicações.Service Fabric uses certificates to provide authentication and encryption for securing a cluster and its applications.

A Service Fabric utiliza certificados X.509 para garantir um cluster e fornecer funcionalidades de segurança da aplicação.Service Fabric uses X.509 certificates to secure a cluster and to provide application security features. Você usa Azure Key Vault para gerir certificados para clusters de tecido de serviço em Azure.You use Azure Key Vault to manage certificates for Service Fabric clusters in Azure. O fornecedor de recursos Azure que cria os clusters retira os certificados de um cofre chave.The Azure resource provider that creates the clusters pulls the certificates from a key vault. Em seguida, o fornecedor instala os certificados nos VMs quando o cluster é implantado no Azure.The provider then installs the certificates on the VMs when the cluster is deployed on Azure.

Existe uma relação de certificado entre o Azure Key Vault,o cluster de tecido de serviço, e o fornecedor de recursos que utiliza os certificados.A certificate relationship exists between Azure Key Vault, the Service Fabric cluster, and the resource provider that uses the certificates. Quando o cluster é criado, a informação sobre a relação com o certificado é armazenada num cofre chave.When the cluster is created, information about the certificate relationship is stored in a key vault.

Há dois passos básicos para montar um cofre chave:There are two basic steps to set up a key vault:

  1. Crie um grupo de recursos especificamente para o seu cofre de chaves.Create a resource group specifically for your key vault.

    Recomendamos que coloque o cofre chave no seu próprio grupo de recursos.We recommend that you put the key vault in its own resource group. Esta ação ajuda a prevenir a perda das suas chaves e segredos se outros grupos de recursos forem removidos, tais como armazenamento, cálculo ou o grupo que contém o seu cluster.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. O grupo de recursos que contém o seu cofre-chave deve estar na mesma região que o cluster que o está a usar.The resource group that contains your key vault must be in the same region as the cluster that is using it.

  2. Crie um cofre chave no novo grupo de recursos.Create a key vault in the new resource group.

    O cofre-chave deve ser ativado para a colocação.The key vault must be enabled for deployment. O fornecedor de recursos computacionais pode então obter os certificados do cofre e instalá-los nas instâncias VM.The compute resource provider can then get the certificates from the vault and install them on the VM instances.

Para saber mais sobre como montar um cofre chave, veja o que é Azure Key Vault?To learn more about how to set up a key vault, see What is Azure Key Vault?.

Atribuir utilizadores a funçõesAssign users to roles

Depois de ter criado as aplicações para representar o seu cluster, atribua os seus utilizadores às funções que são suportadas pela Service Fabric: apenas para leitura e administração. Pode atribuir estas funções utilizando o portal Azure.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 obter mais informações sobre a utilização de funções em Service Fabric, consulte o controlo de acesso baseado em funções do Service Fabric para clientes do Service Fabric.For more information about using roles in Service Fabric, see Service Fabric role-based access control for Service Fabric clients.

A Azure Service Fabric suporta dois tipos de controlo de acesso para clientes que estão ligados a um cluster de Tecido de Serviço: administrador e utilizador.Azure Service Fabric supports two access control types for clients that are connected to a Service Fabric cluster: administrator and user. O administrador do cluster pode usar o controlo de acesso para limitar o acesso a determinadas operações de cluster para diferentes grupos de utilizadores.The cluster administrator can use access control to limit access to certain cluster operations for different groups of users. O controlo de acesso torna o cluster mais seguro.Access control makes the cluster more secure.

Passos seguintesNext steps