Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Produto/Serviço | Artigo |
|---|---|
| Hub de Eventos do Azure | |
| Dynamics CRM | |
| Fábrica de dados do Azure | |
| Servidor de identidade | |
| Aplicativo Web |
|
| Banco de dados | |
| Azure Storage | |
| Cliente móvel | |
| WCF | |
| Web API | |
| Cache do Azure para Redis | |
| Gateway de Campo de IoT | |
| Gateway de Nuvem IoT |
Proteger a comunicação com o Hub de Eventos usando SSL/TLS
| Título | Detalhes |
|---|---|
| Componente | Hub de Eventos do Azure |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Não aplicável |
| Referências | Visão geral do modelo de autenticação e segurança dos Hubs de Eventos |
| Etapas | Proteger conexões AMQP ou HTTP ao Hub de Eventos usando SSL/TLS |
Verifique os privilégios da conta de serviço e verifique se os Serviços personalizados ou ASP.NET Páginas respeitam a segurança do CRM
| Título | Detalhes |
|---|---|
| Componente | Dynamics CRM |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Não aplicável |
| Referências | Não aplicável |
| Etapas | Verifique os privilégios da conta de serviço e verifique se os Serviços personalizados ou ASP.NET Páginas respeitam a segurança do CRM |
Usar o gateway de gerenciamento de dados ao conectar o SQL Server local ao Azure Data Factory
| Título | Detalhes |
|---|---|
| Componente | Fábrica de dados do Azure |
| Fase do SDL | Implantação |
| Tecnologias aplicáveis | Genérico |
| Atributos | Tipos de serviço vinculados – Azure e local |
| Referências | Movendo dados entre o Local e o Azure Data Factory |
| Etapas | A ferramenta DMG (Gateway de Gerenciamento de Dados) é necessária para se conectar a fontes de dados protegidas por trás da corpnet ou de um firewall.
|
Verifique se todo o tráfego para o Identity Server é por meio da conexão HTTPS
| Título | Detalhes |
|---|---|
| Componente | Servidor de identidade |
| Fase do SDL | Implantação |
| Tecnologias aplicáveis | Genérico |
| Atributos | Não aplicável |
| Referências | Não aplicável |
| Etapas | Por padrão, o IdentityServer requer que todas as conexões de entrada sejam acessadas por HTTPS. É absolutamente obrigatório que a comunicação com o IdentityServer seja feita somente em transportes protegidos. Há certos cenários de implantação, como o descarregamento de TLS, em que esse requisito pode ser relaxado. Consulte a página de implantação do Identity Server nas referências para obter mais informações. |
Verificar certificados X.509 usados para autenticar conexões SSL, TLS e DTLS
| Título | Detalhes |
|---|---|
| Componente | Aplicativo Web |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Não aplicável |
| Referências | Não aplicável |
| Etapas | Os aplicativos que usam SSL, TLS ou DTLS devem verificar completamente os certificados X.509 das entidades às quais se conectam. Isso inclui a verificação dos certificados para:
|
Configurar o certificado TLS/SSL para domínio personalizado no Serviço de Aplicativo do Azure
| Título | Detalhes |
|---|---|
| Componente | Aplicativo Web |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Tipo de ambiente - Azure |
| Referências | Habilitar HTTPS para um aplicativo no Serviço de Aplicativo do Azure |
| Etapas | Por padrão, o Azure já habilita HTTPS para cada aplicativo usando um certificado curinga para o domínio *.azurewebsites.net. No entanto, como todos os domínios curinga, ele não é tão seguro quanto usar um domínio personalizado com o próprio certificado Refer. É recomendável habilitar o TLS para o domínio personalizado pelo qual o aplicativo implantado será acessado |
Forçar todo o tráfego para o Serviço de Aplicativo do Azure por meio da conexão HTTPS
| Título | Detalhes |
|---|---|
| Componente | Aplicativo Web |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Tipo de ambiente - Azure |
| Referências | Impor HTTPS no Serviço de Aplicativo do Azure |
| Etapas | Embora o Azure já habilite HTTPS para serviços de aplicativo do Azure com um certificado curinga para o domínio *.azurewebsites.net, ele não impõe HTTPS. Os visitantes ainda podem acessar o aplicativo usando HTTP, o que pode comprometer a segurança do aplicativo e, portanto, o HTTPS precisa ser imposto explicitamente. ASP.NET aplicativos MVC devem usar o filtro RequireHttps que força uma solicitação HTTP não confiável a ser reenançada por HTTPS. Como alternativa, o módulo Regravação de URL, que está incluído no Serviço de Aplicativo do Azure, pode ser usado para impor HTTPS. O módulo de Regravação de URL permite que os desenvolvedores definam regras aplicadas a solicitações de entrada antes que as solicitações sejam entregues ao seu aplicativo. As regras de regravação de URL são definidas em um arquivo web.config armazenado na raiz do aplicativo |
Exemplo
O exemplo a seguir contém uma regra básica de reescrita de URL que força todo o tráfego de entrada a usar HTTPS
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Force HTTPS" enabled="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Essa regra funciona retornando um código de status HTTP 301 (redirecionamento permanente) quando o usuário solicita uma página usando HTTP. O 301 redireciona a solicitação para a mesma URL que o visitante solicitado, mas substitui a parte HTTP da solicitação por HTTPS. Por exemplo, HTTP://contoso.com seria redirecionado para HTTPS://contoso.com.
Habilitar O HSTS (Segurança de Transporte Estrito HTTP)
| Título | Detalhes |
|---|---|
| Componente | Aplicativo Web |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Não aplicável |
| Referências | Folha de dados do OWASP sobre Segurança de Transporte Estrito HTTP |
| Etapas | O HSTS (Http Strict Transport Security) é um aprimoramento de segurança de aceitação especificado por um aplicativo Web por meio do uso de um cabeçalho de resposta especial. Depois que um navegador com suporte receber esse cabeçalho, esse navegador impedirá que qualquer comunicação seja enviada via HTTP para o domínio especificado e, em vez disso, enviará todas as comunicações por HTTPS. Ele também impede cliques via HTTPS em prompts de navegadores. Para implementar o HSTS, o cabeçalho de resposta a seguir precisa ser configurado para um site globalmente, no código ou na configuração. Strict-Transport-Security: max-age=300; includeSubDomains HSTS aborda as seguintes ameaças:
|
Garantir a criptografia de conexão do SQL Server e a validação do certificado
| Título | Detalhes |
|---|---|
| Componente | Base de dados |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | SQL Azure |
| Atributos | Versão do SQL - V12 |
| Referências | Práticas recomendadas para escrever cadeias de conexão seguras para o Banco de Dados SQL |
| Etapas | Todas as comunicações entre o Banco de Dados SQL e um aplicativo cliente são criptografadas usando o TLS (Transport Layer Security), anteriormente conhecido como SSL (Secure Sockets Layer), em todos os momentos. O Banco de Dados SQL não dá suporte a conexões não criptografadas. Para validar certificados com código ou ferramentas do aplicativo, solicite explicitamente uma conexão criptografada e não confie nos certificados do servidor. Se o código do aplicativo ou as ferramentas não solicitarem uma conexão criptografada, elas ainda receberão conexões criptografadas No entanto, eles podem não validar os certificados do servidor e, portanto, serão suscetíveis a ataques "homem no meio". Para validar certificados com o código do aplicativo ADO.NET, defina |
Forçar a comunicação criptografada com o SQL Server
| Título | Detalhes |
|---|---|
| Componente | Base de dados |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | OnPrem |
| Atributos | Versão do SQL – MsSQL2016, Versão do SQL – MsSQL2012, Versão do SQL – MsSQL2014 |
| Referências | Habilitar conexões criptografadas para o mecanismo de banco de dados |
| Etapas | A habilitação da criptografia TLS aumenta a segurança dos dados transmitidos pelas redes entre instâncias do SQL Server e aplicativos. |
Verifique se a comunicação com o Armazenamento do Azure é via HTTPS
| Título | Detalhes |
|---|---|
| Componente | Armazenamento do Azure |
| Fase do SDL | Implantação |
| Tecnologias aplicáveis | Genérico |
| Atributos | Não aplicável |
| Referências | Criptografia do Armazenamento Azure Transport-Level – Utilizando HTTPS |
| Etapas | Para garantir a segurança dos dados do Armazenamento do Azure em trânsito, sempre use o protocolo HTTPS ao chamar as APIs REST ou acessar objetos no armazenamento. Além disso, as Assinaturas de Acesso Compartilhado, que podem ser usadas para delegar acesso a objetos do Armazenamento do Azure, incluem uma opção para especificar que somente o protocolo HTTPS pode ser usado ao usar Assinaturas de Acesso Compartilhado, garantindo que qualquer pessoa que envie links com tokens SAS use o protocolo adequado. |
Validar o hash MD5 depois de baixar o blob se o HTTPS não puder ser habilitado
| Título | Detalhes |
|---|---|
| Componente | Armazenamento do Azure |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | StorageType – Bloco de dados |
| Referências | Visão geral do Windows Azure Blob MD5 |
| Etapas | O serviço Blob do Windows Azure fornece mecanismos para garantir a integridade dos dados nas camadas de aplicativo e transporte. Se por algum motivo você precisar usar HTTP em vez de HTTPS e estiver trabalhando com blobs de blocos, poderá usar a verificação MD5 para ajudar a verificar a integridade dos blobs que estão sendo transferidos Isso ajudará na proteção contra erros de camada de rede/transporte, mas não necessariamente com ataques intermediários. Se você puder usar HTTPS, que fornece segurança em nível de transporte, o uso da verificação MD5 é redundante e desnecessário. |
Usar um cliente compatível com SMB 3.x para garantir a criptografia de dados em trânsito para compartilhamentos de arquivos do Azure
| Título | Detalhes |
|---|---|
| Componente | Cliente móvel |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Tipo de armazenamento - Arquivo |
| Referências | Arquivos do Azure, Suporte ao SMB de Arquivos do Azure para clientes Windows |
| Etapas | Os Arquivos do Azure dão suporte a HTTPS ao usar a API REST, mas são mais comumente usados como um compartilhamento de arquivos SMB anexado a uma VM. O SMB 2.1 não dá suporte à criptografia, portanto, as conexões só são permitidas dentro da mesma região no Azure. No entanto, o SMB 3.x dá suporte à criptografia e pode ser usado com o Windows Server 2012 R2, Windows 8, Windows 8.1 e Windows 10, permitindo acesso entre regiões e até mesmo acesso na área de trabalho. |
Implementar a anexação de certificado
| Título | Detalhes |
|---|---|
| Componente | Armazenamento do Azure |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico, Windows Phone |
| Atributos | Não aplicável |
| Referências | Anexação de chave pública e certificado |
| Etapas | A anexação de certificado protege contra ataques MITM (Man-In-The-Middle). A anexação é o processo de associar um host com sua chave pública ou seu certificado X509 esperado. Depois que um certificado ou chave pública é conhecido ou visto para um host, o certificado ou chave pública é associado ou 'fixado' ao host. Assim, quando um invasor tentar promover um ataque MITM TLS, durante o handshake do TLS, a chave do servidor do invasor será diferente da chave do certificado anexado, e a solicitação será descartada, impedindo que o certificado de MITM seja anexado com a implementação do delegado |
Exemplo
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
namespace CertificatePinningExample
{
class CertificatePinningExample
{
/* Note: In this example, we're hardcoding the certificate's public key and algorithm for
demonstration purposes. In a real-world application, this should be stored in a secure
configuration area that can be updated as needed. */
private static readonly string PINNED_ALGORITHM = "RSA";
private static readonly string PINNED_PUBLIC_KEY = "3082010A0282010100B0E75B7CBE56D31658EF79B3A1" +
"294D506A88DFCDD603F6EF15E7F5BCBDF32291EC50B2B82BA158E905FE6A83EE044A48258B07FAC3D6356AF09B2" +
"3EDAB15D00507B70DB08DB9A20C7D1201417B3071A346D663A241061C151B6EC5B5B4ECCCDCDBEA24F051962809" +
"FEC499BF2D093C06E3BDA7D0BB83CDC1C2C6660B8ECB2EA30A685ADE2DC83C88314010FFC7F4F0F895EDDBE5C02" +
"ABF78E50B708E0A0EB984A9AA536BCE61A0C31DB95425C6FEE5A564B158EE7C4F0693C439AE010EF83CA8155750" +
"09B17537C29F86071E5DD8CA50EBD8A409494F479B07574D83EDCE6F68A8F7D40447471D05BC3F5EAD7862FA748" +
"EA3C92A60A128344B1CEF7A0B0D94E50203010001";
public static void Main(string[] args)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://azure.microsoft.com");
request.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>
{
if (certificate == null || sslPolicyErrors != SslPolicyErrors.None)
{
// Error getting certificate or the certificate failed basic validation
return false;
}
var targetKeyAlgorithm = new Oid(certificate.GetKeyAlgorithm()).FriendlyName;
var targetPublicKey = certificate.GetPublicKeyString();
if (targetKeyAlgorithm == PINNED_ALGORITHM &&
targetPublicKey == PINNED_PUBLIC_KEY)
{
// Success, the certificate matches the pinned value.
return true;
}
// Reject, either the key or the algorithm does not match the expected value.
return false;
};
try
{
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine($"Success, HTTP status code: {response.StatusCode}");
}
catch(Exception ex)
{
Console.WriteLine($"Failure, {ex.Message}");
}
Console.WriteLine("Press any key to end.");
Console.ReadKey();
}
}
}
Habilitar HTTPS – Canal de Transporte Seguro
| Título | Detalhes |
|---|---|
| Componente | WCF (Windows Communication Foundation) |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | NET Framework 3 |
| Atributos | Não aplicável |
| Referências | MSDN, Fortify Kingdom |
| Etapas | A configuração do aplicativo deve garantir que o HTTPS seja usado para todo o acesso a informações confidenciais.
Do ponto de vista prático, as pessoas responsáveis por proteger a rede nem sempre acompanham os requisitos de segurança do aplicativo à medida que evoluem. |
WCF: Configurar o nível de proteção da segurança da mensagem para EncryptAndSign
Exemplo
Configurar o serviço e a operação para assinar apenas a mensagem é mostrado nos exemplos a seguir. Exemplo de Contrato de Serviço de ProtectionLevel.Sign: O exemplo a seguir demonstra o uso de ProtectionLevel.Sign no nível do Contrato de Serviço.
[ServiceContract(Protection Level=ProtectionLevel.Sign]
public interface IService
{
string GetData(int value);
}
Exemplo
Exemplo de contrato de operação de ProtectionLevel.Sign (para controle granular): o seguinte é um exemplo do uso de ProtectionLevel.Sign no nível do Contrato de Operação.
[OperationContract(ProtectionLevel=ProtectionLevel.Sign]
string GetData(int value);
WCF: usar uma conta com menos privilégios para executar seu serviço WCF
Forçar todo o tráfego para APIs Web pela conexão HTTPS
| Título | Detalhes |
|---|---|
| Componente | Web API |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | MVC5, MVC6 |
| Atributos | Não aplicável |
| Referências | Imposição de SSL em um controlador de API Web |
| Etapas | Se um aplicativo tiver um HTTPS e uma associação HTTP, os clientes ainda poderão usar HTTP para acessar o site. Para evitar isso, use um filtro de ação para garantir que as solicitações para APIs protegidas estejam sempre sobre HTTPS. |
Exemplo
O código a seguir mostra um filtro de autenticação da API Web que verifica se há TLS:
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
Adicione este filtro a qualquer ação de API Web que exija TLS:
public class ValuesController : ApiController
{
[RequireHttps]
public HttpResponseMessage Get() { ... }
}
Certifique-se de que a comunicação com o Azure Cache para Redis seja feita sobre TLS.
| Título | Detalhes |
|---|---|
| Componente | Azure Cache para Redis |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Não aplicável |
| Referências | Suporte ao Azure Redis TLS |
| Etapas | O servidor Redis não oferece suporte ao TLS de forma nativa, mas o Cache do Azure para Redis oferece. Se você estiver se conectando ao Cache do Azure para Redis e seu cliente der suporte ao TLS, como StackExchange.Redis, você deverá usar o TLS. Por padrão, a porta não TLS está desabilitada para novas instâncias do Cache do Azure para Redis. Certifique-se de que os padrões de segurança não sejam alterados, a menos que haja uma dependência no suporte a TLS para clientes Redis. |
Observe que o Redis foi projetado para ser acessado por clientes confiáveis dentro de ambientes confiáveis. Isso significa que geralmente não é uma boa ideia expor a instância do Redis diretamente à Internet ou, em geral, a um ambiente em que clientes não confiáveis podem acessar diretamente a porta TCP do Redis ou o soquete UNIX.
Proteger dispositivo para comunicações do Gateway de Campo
| Título | Detalhes |
|---|---|
| Componente | Gateway de Campo de IoT |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Não aplicável |
| Referências | Não aplicável |
| Etapas | Para dispositivos baseados em IP, o protocolo de comunicação normalmente pode ser encapsulado em um canal SSL/TLS para proteger dados em trânsito. Para outros protocolos que não dão suporte ao SSL/TLS, investigue se há versões seguras do protocolo que fornecem segurança na camada de transporte ou mensagem. |
Proteger a comunicação do Dispositivo para o Gateway de Nuvem usando SSL/TLS
| Título | Detalhes |
|---|---|
| Componente | Gateway de Nuvem IoT |
| Fase do SDL | Construir |
| Tecnologias aplicáveis | Genérico |
| Atributos | Não aplicável |
| Referências | Escolha o protocolo de comunicação |
| Etapas | Proteja protocolos HTTP/AMQP ou MQTT usando SSL/TLS. |