Compartilhar via


Controle de acesso de dados confidenciais em pacotes

Para proteger os dados em um pacote do Integration Services, você pode definir um nível de proteção que ajude a proteger apenas dados confidenciais ou todos os dados no pacote. Além disso, você pode criptografar esses dados com uma senha ou uma chave de usuário ou contar com o banco de dados para criptografar os dados. Além disso, o nível de proteção usado para um pacote não é necessariamente estático, mas altera todo o ciclo de vida do pacote. Defina sempre um nível de proteção durante um desenvolvimento e outro assim que implantar o pacote.

ObservaçãoObservação

Além dos níveis de proteção descritos neste tópico, você pode usar funções em nível de banco de dados fixas para proteger pacotes que são salvos no servidor do Integration Services.

Definição de informações confidenciais

Em um pacote do Integration Services, as seguintes informações são definidas como confidenciais:

  • A parte da senha de uma cadeia de caracteres de conexão. No entanto, se você selecionar uma opção que criptografa tudo, a cadeia de caracteres de conexão inteira será considerada confidencial.

  • Os nós XML gerados por tarefa são marcados como confidenciais. A marcação dos nós XML é controlada pelo Integration Services e não pode ser alterada pelos usuários.

  • Qualquer variável marcada como confidencial. A marcação de variáveis é controlada pelo Integration Services.

Se o Integration Services considera uma propriedade como confidencial, dependerá do desenvolvedor do componente Integration Services, como um gerenciador de conexão ou tarefa, ter designado a propriedade como confidencial. Os usuários não podem adicionar propriedades à lista de propriedades, nem removê-las, porque são consideradas confidenciais.

Criptografia

A criptografia, conforme usada pelos níveis de proteção do pacote, é executada usando a DPAPI (Interface de programação de aplicativo de Proteção de Dados) da Microsoft, que faz parte da CryptoAPI (Interface de programação de aplicativo de criptografia).

Os níveis de proteção do pacote que criptografam pacotes usando senhas também exigem que você forneça uma senha. Se o nível de proteção for alterado, de um nível que não usa uma senha para um que usa, você será solicitado a fornecer uma senha.

Além disso, para os níveis de proteção que usam uma senha, o Integration Services usa o algoritmo de criptografia DES triplo com um comprimento de chave de 192 bits, disponível na FCL (Biblioteca de classes do (.NET Framework).

Níveis de proteção

A tabela a seguir descreve os níveis de proteção que o Integration Services oferece. Os valores entre parênteses são valores da enumeração do DTSProtectionLevel. Esses valores são exibidos na janela Propriedades usada para configurar as propriedades do pacote ao trabalhar com pacotes no SSDT (SQL Server Data Tools).

Nível de proteção

Descrição

Não salvar dados confidenciais (DontSaveSensitive)

Elimina os valores das propriedades confidenciais no pacote quando o pacote é salvo. Este nível de proteção não criptografa dados, em vez disso impede que as propriedades marcadas como confidenciais sejam salvas com o pacote e, consequentemente, tornam os dados confidenciais indisponíveis para os outros usuários. Se um usuário diferente abrir o pacote, as informações confidenciais serão substituídas por espaços em branco e o usuário precisará fornecer as informações confidenciais.

Quando usado com o utilitário dtutil (dtutil.exe), esse nível de proteção corresponde ao valor de 0.

Criptografar tudo com senha (EncryptAllWithPassword)

Usa uma senha para criptografar todo o pacote. O pacote é criptografado usando uma senha fornecida pelo usuário quando o pacote é criado ou exportado. Para abrir o pacote no SSIS Designer ou executá-lo com o utilitário de prompt de comando dtexec o usuário deve fornecer a senha do pacote. Sem a senha o usuário não pode acessar ou executar o pacote.

Quando usado com o utilitário dtutil, esse nível de proteção corresponde ao valor de 3.

Criptografar tudo com chave de usuário (EncryptAllWithUserKey)

Usa uma chave baseada no perfil do usuário atual para criptografar todo o pacote. Apenas o usuário que criou ou exportou o pacote pode abrir o pacote no SSIS Designer ou executá-lo com o utilitário de prompt de comando dtexec.

Quando usado com o utilitário dtutil, esse nível de proteção corresponde ao valor de 4.

ObservaçãoObservação

Para os níveis de proteção que usam uma chave de usuário, o Integration Services usa os padrões DPAPI. Para obter mais informações sobre DPAPI, consulte a Biblioteca MSDN em https://msdn.microsoft.com/library.

Criptografar dados confidenciais com senha (EncryptSensitiveWithPassword)

Usa uma senha para criptografar apenas os valores de propriedades confidenciais no pacote. O DPAPI é usado para esta criptografia. Os dados confidenciais são salvos como parte do pacote, mas esses dados são criptografados usando uma senha que o usuário atual fornece quando o pacote é criado ou exportado. Para abrir o pacote no Designer SSIS, o usuário precisa fornecer a senha do pacote. Se a senha não for fornecida, o pacote será aberto sem os dados confidenciais e o usuário atual deverá fornecer valores novos para os dados confidenciais. Se o usuário tentar executar o pacote sem fornecer a senha, a execução do pacote não terá êxito. Para obter mais informações sobre senhas e execução de linha de comandos, consulte Utilitário dtexec.

Quando usado com o utilitário dtutil, esse nível de proteção corresponde ao valor de 2.

Criptografar dados confidenciais com chave de usuário (EncryptSensitiveWithUserKey)

Usa uma chave baseada no perfil do usuário atual para criptografar apenas os valores das propriedades confidenciais do pacote. Apenas o mesmo usuário que usa o mesmo perfil pode carregar o pacote. Se um usuário diferente abrir o pacote, as informações confidenciais serão substituídas por espaços em branco e o usuário atual deverá fornecer novos valores para os dados confidenciais. Se o usuário tentar executar o pacote, a execução de pacote não terá êxito. O DPAPI é usado para essa criptografia.

Quando usado com o utilitário dtutil, esse nível de proteção corresponde ao valor de 1.

ObservaçãoObservação

Para os níveis de proteção que usam uma chave de usuário, o Integration Services usa os padrões DPAPI. Para obter mais informações sobre DPAPI, consulte a Biblioteca MSDN em https://msdn.microsoft.com/library.

Depender do armazenamento do servidor para criptografia (ServerStorage)

Protege o pacote inteiro usando funções do banco de dados SQL Server. Essa opção tem suporte quando um pacote é salvo no banco de dados msdb do SQL Server. Somado a isso, o catálogo SSISDB usa o nível de proteção ServerStorage.

Essa opção não tem suporte quando um pacote é salvo no sistema de arquivos no SSDT (SQL Server Data Tools).

Definição do nível de proteção e o catálogo SSISDB

O catálogo SSISDB usa o nível de proteção ServerStorage. Quando você implantar um projeto do Integration Services para o servidor do Integration Services, o catálogo criptografará automaticamente os dados do pacote e os valores confidenciais. O catálogo também descriptografa automaticamente os dados quando você recupera-os.

Se você exportar o projeto (arquivo .ispac) do servidor do Integration Services para o sistema de arquivos, o sistema automaticamente alterará o nível de proteção para EncryptSensitiveWithUserKey. Se você importar o projeto usando o Assistente de Importação de Projeto do Integration Services no SSDT (SQL Server Data Tools), a propriedade ProtectionLevel na janela Propriedades mostrará um valor EncryptSensitiveWithUserKey.

Configuração do nível de proteção com base no ciclo de vida do pacote

Você define o nível de proteção de um pacote SQL Server Integration Services quando o desenvolve primeiro no SSDT (SQL Server Data Tools). Posteriormente, quando o pacote for implantado, importado ou exportado do Integration Services no SQL Server Management Studio ou copiado do SSDT (SQL Server Data Tools) para o SQL Server, o Armazenamento de Pacotes do SSIS ou o sistema de arquivos, você poderá atualizar o nível de proteção do pacote. Por exemplo, se você criar e salvar pacotes no computador com uma das opções de nível de proteção de chave de usuário, provavelmente precisará alterar o nível de proteção ao fornecer o pacote a outros usuários; caso contrário eles não poderão abrir o pacote.

Em geral, você altera o nível de proteção conforme listado nas seguintes etapas:

  1. Durante o desenvolvimento, deixe o nível de proteção de pacotes definido como o valor padrão, EncryptSensitiveWithUserKey. Essa configuração ajuda a garantir que somente o desenvolvedor veja os valores confidenciais no pacote. Ou, você pode considerar o uso de EncryptAllWithUserKey ou de DontSaveSensitive.

  2. Na hora de implantar os pacotes, você precisa alterar o nível de proteção para um que não dependa da chave de usuário do desenvolvedor. Portanto, normalmente, você precisa selecionar EncryptSensitiveWithPassword ou EncryptAllWithPassword. Criptografe os pacotes atribuindo uma senha forte temporária que também seja conhecida pela equipe de operações no ambiente de produção.

  3. Após a implantação dos pacotes no ambiente de produção, a equipe de operações pode criptografar novamente os pacotes implantados atribuindo uma senha forte conhecida somente por eles. Ou, eles podem criptografar os pacotes implantados selecionando EncryptSensitiveWithUserKey ou EncryptAllWithUserKey e usando as credenciais locais da conta que executará os pacotes.

Tarefas relacionadas

Conteúdo relacionado

Ícone do Integration Services (pequeno) Mantenha-se atualizado com o Integration Services

Para obter os downloads, artigos, exemplos e vídeos mais recentes da Microsoft, bem como soluções selecionadas pela comunidade, visite a página do Integration Services no MSDN:


Para receber uma notificação automática dessas atualizações, assine os RSS feeds disponíveis na página.

Consulte também

Tarefas

Importar e exportar pacotes (serviço SSIS)

Conceitos

Pacotes do SSIS (Integration Services)

Visão geral de segurança (Integration Services)