Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
O módulo SqlServer PowerShell fornece cmdlets para configurar Always Encrypted no Banco de Dados SQL do Azure ou no SQL Server.
Considerações de segurança ao usar o PowerShell para configurar o Always Encrypted
Como o objetivo principal do Always Encrypted é garantir que os dados confidenciais criptografados estejam seguros, mesmo que o sistema de banco de dados seja comprometido, a execução de um script do PowerShell que processa chaves ou dados confidenciais no computador do SQL Server pode reduzir ou anular os benefícios do recurso. Para obter mais recomendações relacionadas à segurança, consulte Considerações de segurança para gerenciamento de chaves.
Você pode usar o PowerShell para gerenciar chaves Always Encrypted com e sem separação de funções, fornecendo controle sobre quem tem acesso às chaves de criptografia reais no armazenamento de chaves e quem tem acesso ao banco de dados.
Para obter mais recomendações, consulte Considerações de segurança para gerenciamento de chaves.
Pré-requisitos
Instale o módulo SqlServer PowerShell versão 22.0.50 ou posterior em um computador seguro que NÃO seja um computador que hospeda sua instância do SQL Server. O módulo pode ser instalado diretamente da galeria do PowerShell. Consulte as instruções de download para obter mais detalhes.
Importando o módulo SqlServer
Para carregar o módulo SqlServer:
- Use o cmdlet Set-ExecutionPolicy para definir a política de execução de script apropriada.
- Use o cmdlet Import-Module para importar o módulo SqlServer.
Este exemplo carrega o módulo SqlServer.
# Import the SQL Server Module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
Conectando-se a um banco de dados
Alguns dos cmdlets Always Encrypted trabalham com dados ou metadados no banco de dados e exigem que você se conecte primeiro ao banco de dados. Há dois métodos recomendados de conexão a um banco de dados ao configurar o Always Encrypted usando o módulo SqlServer:
- Conecte-se usando o Get-SqlDatabase cmdlet.
- Conecte-se usando o SQL Server PowerShell Provider.
Usando Get-SqlDatabase
O cmdlet Get-SqlDatabase permite que você se conecte a um banco de dados no SQL Server ou no Banco de Dados SQL do Azure. Ele retorna um objeto de banco de dados, que você pode passar usando o parâmetro InputObject de um cmdlet que se conecta ao banco de dados.
Usando o SQL Server PowerShell
# Import the SqlServer module
Import-Module "SqlServer" -MinimumVersion 22.0.50
# Connect to your database
# Set the valid server name, database name and authentication keywords in the connection string
$serverName = "<Azure SQL server name>.database.windows.net"
$databaseName = "<database name>"
$connStr = "Server = " + $serverName + "; Database = " + $databaseName + "; Authentication = Active Directory Integrated"
$database = Get-SqlDatabase -ConnectionString $connStr
# List column master keys for the specified database.
Get-SqlColumnMasterKey -InputObject $database
Alternativamente, você pode usar tubulações:
$database | Get-SqlColumnMasterKey
Usando o provedor do SQL Server PowerShell
O SQL Server PowerShell Provider expõe a hierarquia de objetos do SQL Server em caminhos semelhantes aos caminhos do sistema de arquivos. Com o SQL Server PowerShell, você pode navegar pelos caminhos usando aliases do Windows PowerShell semelhantes aos comandos que você normalmente usa para navegar pelos caminhos do sistema de arquivos. Depois de navegar até a instância de destino e o banco de dados, os cmdlets subsequentes visam esse banco de dados, conforme mostrado no exemplo a seguir.
Observação
Esse método de conexão a um banco de dados funciona apenas para o SQL Server (não há suporte no Banco de Dados SQL do Azure).
# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# Navigate to the database in the remote instance.
cd SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase
# List column master keys in the above database.
Get-SqlColumnMasterKey
Como alternativa, você pode especificar um caminho de banco de dados usando o parâmetro genérico Path, em vez de navegar até o banco de dados.
# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# List column master keys for the specified database.
Get-SqlColumnMasterKey -Path SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase
Tarefas sempre criptografadas usando o PowerShell
- provisionar chaves sempre criptografadas usando o PowerShell
- Rodar Chaves Sempre Criptografadas utilizando o PowerShell
- Encriptar, re-encriptar ou desencriptar colunas com Always Encrypted usando o PowerShell
Referência de cmdlet sempre criptografado
Os seguintes cmdlets do PowerShell estão disponíveis para Always Encrypted:
CMDLET | Descrição |
---|---|
Add-SqlAzureAuthenticationContext | Executa a autenticação no Azure e adquire um token de autenticação. |
Add-SqlColumnEncryptionKeyValue | Adiciona um novo valor criptografado para um objeto de chave de criptografia de coluna existente no banco de dados. |
Complete-SqlColumnMasterKeyRotation | Completa a rotação de uma chave-mestra de coluna |
Get-SqlColumnEncryptionKey | Retorna todos os objetos de chave de criptografia de coluna definidos no banco de dados ou retorna um objeto de chave de criptografia de coluna com o nome especificado. |
Get-SqlColumnMasterKey | Retorna os objetos de chave mestra de coluna definidos no banco de dados ou retorna um objeto de chave mestra de coluna com o nome especificado. |
Comando Invoke-SqlColumnMasterKeyRotation para rotação da chave mestre da coluna SQL | Inicia a rotação de uma chave mestra de coluna. |
New-SqlAzureKeyVaultColumnMasterKeySettings | Cria um objeto SqlColumnMasterKeySettings descrevendo uma chave assimétrica armazenada no Cofre de Chaves do Azure. |
New-SqlCngColumnMasterKeySettings | Cria um objeto SqlColumnMasterKeySettings descrevendo uma chave assimétrica armazenada em um armazenamento de chaves que suporta a API CNG (Cryptography Next Generation). |
New-SqlColumnEncryptionKey | Cria um objeto de chave de criptografia de coluna no banco de dados. |
New-SqlColumnEncryptionKeyEncryptedValue | Produz um valor criptografado de uma chave de criptografia de coluna. |
New-SqlColumnEncryptionSettings | Cria um objeto SqlColumnEncryptionSettings que encapsula informações sobre a criptografia de uma única coluna, incluindo CEK e tipo de criptografia. |
New-SqlColumnMasterKey | Cria um objeto de chave mestra de coluna na base de dados. |
New-SqlColumnMasterKeySettings | Cria um objeto SqlColumnMasterKeySettings para uma chave mestra de coluna com o provedor especificado e o caminho da chave. |
New-SqlCspColumnMasterKeySettings | Cria um objeto SqlColumnMasterKeySettings descrevendo uma chave assimétrica armazenada em um armazenamento de chaves com um provedor de serviços de criptografia (CSP) que suporta a API de criptografia (CAPI). |
Remove-SqlColumnEncryptionKey | Remove o objeto de chave de criptografia de coluna do banco de dados. |
Remove-SqlColumnEncryptionKeyValue | Remove um valor criptografado de um objeto de chave de criptografia de coluna existente no banco de dados. |
Remove-SqlColumnMasterKey | Remove o objeto de chave mestra de coluna do banco de dados. |
Set-SqlColumnEncryption | Criptografa, descriptografa ou criptografa novamente colunas especificadas no banco de dados. |