Partilhar via


Controle de acesso para dados confidenciais em pacotes

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

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 do pacote. Além disso, você pode criptografar esses dados com uma senha ou uma chave de usuário, ou confiar no banco de dados para criptografar os dados. Além disso, o nível de proteção que você usa para um pacote não é necessariamente estático, mas muda ao longo do ciclo de vida do pacote. Muitas vezes, você define um nível de proteção durante o desenvolvimento e outro assim que implanta o pacote.

Observação

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

Definição de Informação Sensível

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

  • A parte de senha de uma cadeia de conexão. No entanto, se você selecionar uma opção que criptografa tudo, toda a cadeia de conexão será considerada sensível.

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

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

Se o Integration Services considera uma propriedade sensível depende se o desenvolvedor do componente Integration Services, como um gerenciador de conexões ou tarefa, designou a propriedade como confidencial. Os usuários não podem adicionar propriedades nem remover propriedades da lista de propriedades consideradas confidenciais.

Encriptação

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

Os níveis de proteção de pacotes que criptografam pacotes usando senhas exigem que você forneça uma senha também. Se alterar o nível de proteção de um nível que não utiliza uma palavra-passe para um nível que o utiliza, ser-lhe-á solicitada uma palavra-passe.

Além disso, para os níveis de proteção que usam uma senha, o Integration Services usa o algoritmo de cifra Triple DES 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 fornecidos pelo Integration Services. Os valores entre parênteses são valores da enumeração DTSProtectionLevel. Esses valores aparecem na janela Propriedades que você usa para configurar as propriedades do pacote quando trabalha com pacotes no SSDT (SQL Server Data Tools).

Nível de proteção Descrição
Não guardes informações sensíveis (DontSaveSensitive) Suprime os valores de propriedades confidenciais no pacote quando o pacote é salvo. Esse nível de proteção não criptografa, mas impede que propriedades marcadas como confidenciais sejam salvas com o pacote e, portanto, torna os dados confidenciais indisponíveis para 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 deverá fornecer as informações confidenciais.

Quando usado com o utilitário dtutil (dtutil.exe), este 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 que o usuário fornece quando o pacote é criado ou exportado. Para abrir o pacote no SSIS Designer ou executá-lo usando 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, este nível de proteção corresponde ao valor de 3.
Criptografar tudo com chave de usuário (EncryptAllWithUserKey) Usa uma chave baseada no perfil de usuário atual para criptografar todo o pacote. Somente o usuário que criou ou exportou o pacote pode abri-lo no SSIS Designer ou executá-lo usando o utilitário de prompt de comando dtexec.

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

Nota: Para níveis de proteção que usam uma chave de usuário, o Integration Services usa padrões DPAPI. Para obter mais informações sobre DPAPI, consulte a Biblioteca MSDN em https://msdn.microsoft.com/library.
Criptografar informações sensíveis com uma senha (EncryptSensitiveWithPassword) Usa uma senha para criptografar apenas os valores de propriedades confidenciais no pacote. O DPAPI é usado para essa 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 SSIS Designer, o usuário deve 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 novos valores para dados confidenciais. Se o usuário tentar executar o pacote sem fornecer a senha, a execução do pacote falhará. Para obter mais informações sobre senhas e execução de linha de comando, consulte dtexec Utility.

Quando usado com o utilitário dtutil, este nível de proteção corresponde ao valor de 2.
Encriptar conteúdo confidencial com a chave do utilizador (EncryptSensitiveWithUserKey) Usa uma chave baseada no perfil de usuário atual para criptografar apenas os valores de propriedades confidenciais no pacote. Somente 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 do pacote falhará. O DPAPI é usado para essa criptografia.

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

Nota: Para níveis de proteção que usam uma chave de usuário, o Integration Services usa padrões DPAPI. Para obter mais informações sobre DPAPI, consulte a Biblioteca MSDN em https://msdn.microsoft.com/library.
Confie no armazenamento do servidor para criptografia (ServerStorage) Protege todo o pacote usando funções de banco de dados do SQL Server. Essa opção é suportada quando um pacote é salvo no banco de dados msdb do SQL Server. Além disso, o catálogo SSISDB usa o nível de proteção ServerStorage

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

Configuraçã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ê implanta um projeto do Integration Services no servidor do Integration Services, o catálogo criptografa automaticamente os dados do pacote e os valores confidenciais. O catálogo também descriptografa automaticamente os dados quando você os recupera.

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

Definição do nível de proteção com base no ciclo de vida da embalagem

Você define o nível de proteção de um pacote do SQL Server Integration Services quando o desenvolve pela primeira vez no SSDT (SQL Server Data Tools). Mais tarde, 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 Repositório de Pacotes 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 em seu computador com uma das opções de nível de proteção de chave de usuário, provavelmente desejará alterar o nível de proteção quando fornecer o pacote a outros usuários; caso contrário, não poderão abrir a embalagem.

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

  1. Durante o desenvolvimento, deixe o nível de proteção dos pacotes definido como o valor padrão, EncryptSensitiveWithUserKey. Essa configuração ajuda a garantir que apenas o desenvolvedor veja valores confidenciais no pacote. Pode também considerar o uso de EncryptAllWithUserKeyou 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 EncryptSensitiveWithPasswordou EncryptAllWithPassword. Criptografe os pacotes atribuindo uma senha forte temporária que também é conhecida pela equipe de operações no ambiente de produção.

  3. Depois que os pacotes forem implantados no ambiente de produção, a equipe de operações poderá criptografar novamente os pacotes implantados atribuindo uma senha forte que seja conhecida apenas por eles. Ou, eles podem criptografar os pacotes implantados selecionando EncryptSensitiveWithUserKey ou EncryptAllWithUserKeye usando as credenciais locais da conta que executará os pacotes.

Definir ou alterar o nível de proteção dos pacotes

Para controlar o acesso ao conteúdo dos pacotes e aos valores confidenciais que eles contêm, como senhas, defina o valor da propriedade ProtectionLevel. Os pacotes contidos em um projeto precisam ter o mesmo nível de proteção que o projeto, para construir o projeto. Se você alterar a configuração da propriedade ProtectionLevel no projeto, precisará atualizar manualmente a configuração da propriedade para os pacotes.

Para obter uma visão geral dos recursos de segurança no Integration Services, consulte Visão geral da segurança (Integration Services).

Os procedimentos neste tópico descrevem como usar o SSDT (SQL Server Data Tools) ou o utilitário de prompt de comando dtutil para alterar a propriedade ProtectionLevel.

Observação

Além dos procedimentos neste tópico, você normalmente pode definir ou alterar a propriedade ProtectionLevel de um pacote ao importar ou exportar o pacote. Você também pode alterar a propriedade ProtectionLevel de um pacote ao usar o Assistente de Importação e Exportação do SQL Server para salvar um pacote.

Para definir ou alterar o nível de proteção de um pacote no SQL Server Data Tools

  1. Analise os valores disponíveis para a propriedade ProtectionLevel na seção Níveis de Proteçãoe determine o valor apropriado para seu pacote.

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

  3. Abra o pacote no designer SSIS.

  4. Se a janela Propriedades não mostrar as propriedades do pacote, clique na superfície de design.

  5. Na janela Propriedades, no grupo Segurança, selecione o valor apropriado para a propriedade ProtectionLevel.

    Se selecionar um nível de proteção que exija uma senha, digite a senha como valor da propriedade PackagePassword.

  6. No menu Arquivo, selecione Salvar itens selecionados para salvar o pacote modificado.

Para definir ou alterar o nível de proteção dos pacotes no prompt de comando

  1. Analise os valores disponíveis para a propriedade ProtectionLevel na seção Níveis de Proteçãoe determine o valor apropriado para seu pacote.

  2. Revise os mapeamentos para a opção Encrypt no tópico dtutil Utilitye determine o inteiro apropriado a ser utilizado como valor da propriedade ProtectionLevel selecionada.

  3. Abra uma janela do Prompt de Comando.

  4. No prompt de comando, navegue até a pasta que contém o pacote ou pacotes para os quais você deseja definir a propriedade ProtectionLevel.

    Os exemplos de sintaxe mostrados na etapa a seguir assumem que essa pasta é a pasta atual.

  5. Defina ou altere o nível de proteção do(s) pacote(s) usando um comando semelhante ao exemplo a seguir:

    • O comando a seguir define a propriedade ProtectionLevel de um pacote individual no sistema de arquivos para o nível 2, "Encriptar dados sensíveis com palavra-passe", com a palavra-passe, "strongpassword":

      dtutil.exe /file "C:\Package.dtsx" /encrypt file;"C:\Package.dtsx";2;strongpassword

    • O comando a seguir define a propriedade ProtectionLevel de todos os pacotes em uma pasta específica no sistema de arquivos para o nível 2, "Encrypt sensitive with password", utilizando a senha, "strongpassword":

      for %f in (*.dtsx) do dtutil.exe /file %f /encrypt file;%f;2;strongpassword

      Se utilizar um comando semelhante num ficheiro em lotes, digite o marcador de posição do ficheiro, "%f", como "%%f" no ficheiro em lotes.

Caixa de diálogo de Nível de Proteção de Projeto do Pacote

Use a caixa de diálogo Nível de Proteção do Pacote para atualizar o nível de proteção de um pacote. O nível de proteção determina o método de proteção, a senha ou chave de usuário e o escopo da proteção do pacote. A proteção pode incluir apenas todos os dados ou dados sensíveis.

Para entender os requisitos e as opções de segurança de pacotes, talvez seja útil consultar Visão geral da segurança (Integration Services).

Opções

Nível de proteção da embalagem
Selecione um nível de proteção na lista.

Palavra-passe
Se estiver a usar o nível de proteção Criptografar dados confidenciais com senha ou Criptografar todos os dados com senha, digite uma senha.

Digite novamente a senha
Digite a senha novamente.

Caixa de diálogo Senha para pacote

Use a caixa de diálogo Senha do Pacote para fornecer a senha do pacote para um pacote criptografado com uma senha. Você deve fornecer uma senha se o pacote usar o nível de proteção Encriptar dados sensíveis com senha ou Encriptar tudo com senha.

Opções

Palavra-passe
Introduza a palavra-passe.

Ver também

Pacotes de Serviços de Integração (SSIS)
Visão geral da segurança (Integration Services)
dtutil Utilitário