Definindo o nível de proteção de pacotes

Para proteger os dados em um pacote do Integration Services, você pode definir um nível de proteção que ajuda 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, os pacote salvos no banco de dados msdb também podem ser protegidos usando as funções fixas no nível de banco de dados. O Integration Services inclui três funções fixas no nível de banco de dados para atribuir permissões aos pacotes: db_ssisadmin, db_ssisltduser e db_ssisoperator. Para obter mais informações, consulte Usando funções do Integration Services.

Definindo 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.

Usando 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).

Compreendendo os 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 Business Intelligence Development Studio.

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 Designer SSIS ou executá-lo usando o utilitário do 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. Somente o usuário que criou ou exportou o pacote pode abrir o pacote no Designer SSIS ou executá-lo usando o utilitário do 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 (ferramenta SSIS).

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. A DPAPI é usada para esta 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. Há suporte para essa opção somente quando um pacote é salvo no SQL Serverbanco de dados msdb. Não há suporte para essa opção quando um pacote é salvo no sistema de arquivos no Business Intelligence Development Studio.

Alterando o nível de proteção baseado 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 Business Intelligence Development Studio. Posteriormente, quando o pacote for implantado, importado ou exportado do Integration Services no SQL Server Management Studio ou copiado do Business Intelligence Development Studio 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.

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

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

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