Partilhar via


Identificar a origem dos pacotes com assinaturas digitais

se aplica a:SQL Server SSIS Integration Runtime no Azure Data Factory

Um pacote do Integration Services pode ser assinado com um certificado digital para identificar sua origem. Depois que um pacote for assinado com um certificado digital, você poderá fazer com que o Integration Services verifique a assinatura digital antes de carregá-lo. Para que o Integration Services verifique a assinatura, defina uma opção no SSDT (SQL Server Data Tools) ou no utilitário dtexec (dtexec.exe) ou defina um valor de registro opcional.

Assinar um pacote com um certificado digital

Antes de assinar um pacote com um certificado digital, primeiro você precisa obter ou criar o certificado. Depois de ter o certificado, você pode usá-lo para assinar o pacote. Para obter mais informações sobre como obter um certificado e assinar um pacote com esse certificado, consulte Assinar um pacote usando um certificado digital.

Definir uma opção para verificar a assinatura do pacote

Tanto o SSDT (SQL Server Data Tools) quanto o utilitário dtexec têm uma opção que configura o Integration Services para verificar a assinatura digital de um pacote assinado. Se você usa o SSDT (SQL Server Data Tools) ou o utilitário dtexec depende se você deseja verificar todos os pacotes ou apenas os específicos:

  • Para verificar a assinatura digital de todos os pacotes antes de os carregar durante o tempo de desenvolvimento, defina a opção Verificar assinatura digital ao carregar um pacote no SQL Server Data Tools (SSDT). Essa opção é uma configuração global para todos os pacotes no SSDT (SQL Server Data Tools).

  • Para verificar a assinatura digital de um pacote individual, especifique a opção /VerifyS[igned] ao usar o utilitário dtexec para executar o pacote. Para obter mais informações, consulte dtexec Utility.

Definir um valor do Registro para verificar a assinatura do pacote

O Integration Services também oferece suporte a um valor de registro opcional, BlockedSignatureStates, que você pode usar para gerenciar a política de uma organização para carregar pacotes assinados e não assinados. O valor do Registro pode impedir que os pacotes sejam carregados se os pacotes não estiverem assinados ou tiverem assinaturas inválidas ou não confiáveis. Para obter mais informações sobre como definir este valor do registo, consulte Implemente uma Política de Assinatura ao definir um valor do registo.

Observação

O valor opcional BlockedSignatureStates do registo pode especificar uma configuração mais restritiva do que a opção de assinatura digital definida no SSDT (SQL Server Data Tools) ou na linha de comando dtexec. Nessa situação, a configuração de registro mais restritiva substitui as outras configurações.

Implementar uma política de assinatura ao definir um valor do registo

Você pode usar um valor de registro opcional para gerenciar a política de uma organização para carregar pacotes assinados ou não assinados. Se você usar esse valor do Registro, deverá criá-lo em cada computador no qual os pacotes do Integration Services serão executados e no qual deseja impor a política. Depois de o valor do registo ser definido, o Integration Services verificará as assinaturas antes de carregar os pacotes.

O procedimento neste artigo descreve como adicionar o valor DWORD opcional BlockedSignatureStates à chave de registo HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\150\SSIS\Setup\DTSPath.

Observação

Um local do Registro abaixo de 150 representa o SQL Server 2019, em 140 representa o SQL Server 2017, em 130 representa o SQL Server 2016, em 120 representa o SQL Server 2014 e em 110 representa o SQL Server 2012.

O valor de dados em BlockedSignatureStates determina se um pacote deve ser bloqueado se tiver uma assinatura não confiável, tiver uma assinatura inválida ou não estiver assinado.

Para o estado das assinaturas usadas para assinar pacotes, o valor do registo BlockedSignatureStates utiliza as seguintes definições:

  • Uma assinatura válida é aquela que pode ser lida com sucesso.

  • Um assinatura inválida é aquela para a qual a soma de verificação descriptografada (o hash unidirecional do código do pacote criptografado por uma chave privada) não corresponde à soma de verificação descriptografada calculada como parte do processo de carregamento dos pacotes do Integration Services.

  • Uma assinatura confiável é aquela que é criada usando um certificado digital emitido por uma Autoridade de Certificação Raiz Confiável. Essa configuração não exige que o signatário seja encontrado na lista de Editores Confiáveis do usuário.

  • Uma assinatura não confiável é aquela que não pode ser verificada como emitida por uma Autoridade de Certificação Raiz Confiável ou uma assinatura que não é atual.

A tabela a seguir lista os valores válidos dos dados DWORD e sua política associada.

Valor Descrição
0 Sem restrição administrativa.
1 Bloquear assinaturas inválidas.

Essa configuração não bloqueia pacotes não assinados.
2 Bloqueie assinaturas inválidas e não confiáveis.

Essa configuração não bloqueia pacotes não assinados, mas bloqueia assinaturas geradas automaticamente.
3 Bloquear assinaturas inválidas e não confiáveis e pacotes não assinados

Essa configuração também bloqueia assinaturas geradas automaticamente.

Observação

A configuração recomendada para BlockedSignatureStates é 3. Essa configuração fornece a maior proteção contra pacotes não assinados ou assinaturas que não são válidas ou não confiáveis. No entanto, a configuração recomendada pode não ser apropriada em todas as circunstâncias. Para obter mais informações sobre como assinar ativos digitais, consulte o tópico "Introdução à assinatura de código", na Biblioteca MSDN.

Para implementar uma política de assinatura de pacotes

  1. No menu Iniciar, clique em Executar.

  2. Na caixa de diálogo Executar, digite Regedite clique em OK.

  3. Localize a chave do Registro, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS.

  4. Clique com o botão direito do rato MSDTS , aponte para Novoe, em seguida, clique em Valor DWORD.

  5. Atualize o nome do novo valor para BlockedSignatureStates.

  6. Clique com o botão direito em BlockedSignatureStates e depois em Modificar.

  7. Na caixa de diálogo Editar Valor DWORD, digite o valor 0, 1, 2 ou 3.

  8. Clique OK.

  9. No menu Arquivo, clique em Sair.

Assinar um pacote usando um certificado digital

Este tópico descreve como assinar um pacote do Integration Services com um certificado digital. Você pode usar uma assinatura digital, juntamente com outras configurações, para impedir que um pacote que não é válido seja carregado e executado.

Antes de assinar um pacote do Integration Services, você deve executar as seguintes tarefas:

  • Crie ou obtenha uma chave privada para associar ao certificado e armazene essa chave privada no computador local.

  • Obtenha um certificado para fins de assinatura de código de uma autoridade de certificação confiável. Você pode usar um dos seguintes métodos para obter ou criar um certificado:

    • Obtenha um certificado de uma autoridade de certificação pública e comercial que emite certificados.

    • Obtenha um certificado de um servidor de certificados, que permite que uma organização emita certificados internamente. Você precisa adicionar o certificado raiz que é usado para assinar o certificado ao armazenamento de Autoridades de Certificação Raiz Confiáveis . Para adicionar o certificado raiz, você pode usar o snap-in Certificados para o MMC (Console de Gerenciamento Microsoft). Para obter mais informações, consulte o tópico "Certificate Services" na biblioteca MSDN.

    • Crie seu próprio certificado apenas para fins de teste. O comando PowerShell New-SelfSignedCertificate pode criar um novo certificado autoassinado com algoritmo de hash seguro para fins de teste. Por exemplo:

        $params = @{
            Type = 'CodeSigningCert'
            Provider = 'Microsoft Enhanced RSA and AES Cryptographic Provider'
            Subject = 'CN=PS code signing Certificate 2'
            TextExtension = @(
                '2.5.29.37={text}1.3.6.1.5.5.7.3.3',
                '2.5.29.17={text}upn=yourupn' )
            KeyExportPolicy = 'NonExportable'
            KeyUsage = 'DigitalSignature'
            KeyAlgorithm = 'RSA'
            KeyLength = 2048
            CertStoreLocation = 'Cert:\CurrentUser\My'
                     HashAlgorithm = 'sha512'
        }
        New-SelfSignedCertificate @params
    

    Se você vir a mensagem de erro 'Falha na assinatura do pacote com erro 0x80090008 "Algoritmo inválido especificado."', isso indica que seu algoritmo de hash de certificado não é seguro, altere seu certificado para um algoritmo de hash mais seguro como SHA512 e use um CSP (Provedor de Serviços de Criptografia). Como o .NET framework é atualizado para 4.7.2 para SQL Server 2022, e o algoritmo SignedXML padrão é alterado para SHA256 porque SHA1 não é mais considerado seguro. Os detalhes referem-se a a este artigo.

    Para obter mais informações sobre certificados, consulte a Ajuda online para o snap-in de Certificados. Para obter mais informações sobre como assinar ativos digitais, consulte o tópico "Assinatura e verificação de código comAuthenticode" na Biblioteca MSDN.

  • Verifique se o certificado foi habilitado para assinatura de código. Para determinar se um certificado está ativado para assinatura de código, examine as propriedades do certificado no snap-in dos Certificados.

  • Armazene o certificado no repositório pessoal.

Depois de concluir as tarefas anteriores, você pode usar o procedimento a seguir para assinar um pacote.

Para assinar um pacote

  1. No SSDT (SQL Server Data Tools), abra o projeto Integration Services que contém o pacote a ser assinado.

  2. No Gerenciador de Soluções, clique duas vezes no pacote para abri-lo.

  3. No SSIS Designer, no menu SSIS, clique em Assinatura Digital .

  4. Na caixa de diálogo de Assinatura Digital, clique em Assinar.

  5. Na caixa de diálogo Selecionar um certificado, selecione um certificado.

  6. (Opcional) Clique em Ver Certificado para exibir as informações do certificado.

  7. Clique OK para fechar a caixa de diálogo Selecionar um Certificado.

  8. Clique OK para fechar a caixa de diálogo de Assinatura Digital.

  9. Para guardar o pacote atualizado, clique em Guardar itens selecionados no menu Ficheiro.

    Embora o pacote tenha sido assinado, agora você deve configurar o Integration Services para verificar ou verificar a assinatura digital antes de carregá-lo.

Referência da interface do usuário da caixa de diálogo de assinatura digital

Use a caixa de diálogo de Assinatura Digital para assinar um pacote com uma assinatura digital ou para remover a assinatura. A caixa de diálogo de Assinatura Digital está disponível a partir da opção de Assinatura Digital no menu SSIS nas Ferramentas de Dados SQL Server (SSDT).

Para mais informações, consulte Assinar um Pacote Usando um Certificado Digital.

Opções

Assine
Clique para abrir a caixa de diálogo Selecionar certificado e selecione o certificado a ser usado.

Remover
Clique para remover a assinatura digital.

Ver também

Pacotes do Integration Services (SSIS)
Visão geral da segurança dos Integration Services