Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Always Encrypted permite que os clientes encriptem dados sensíveis dentro das aplicações clientes e nunca revelem as chaves de encriptação ao servidor. Um driver ativado com Always Encrypted instalado no computador cliente alcança esta funcionalidade ao encriptar e desencriptar automaticamente dados sensíveis na aplicação cliente.
O driver encripta os dados em colunas sensíveis antes de os passar para o SQL Server e reescreve automaticamente as consultas para preservar a semântica da aplicação. De forma semelhante, o driver desencripta de forma transparente os dados armazenados em colunas de base de dados encriptadas que estão nos resultados das consultas. Para mais informações, consulte Sempre Encriptado (Motor de Base de Dados) e Usar Sempre Encriptado com o Driver JDBC.
Observação
O Always Encrypted é suportado apenas pelo Microsoft JDBC Driver 6.0 ou superior para SQL Server com Azure SQL Database e SQL Server 2016 e versões superiores.
Referências de API sempre encriptadas
Existem várias adições e modificações novas à API do driver JDBC para utilização em aplicações cliente que utilizam o Always Encrypted.
Classe SQLServerConnection
| Nome | Description |
|---|---|
| Nova palavra-chave de string de ligação: configuraçãoDeEncriptaçãoDeColuna |
columnEncryptionSetting=Enabled ativa a funcionalidade Always Encrypted para a ligação e columnEncryptionSetting=Disabled desativa-a. Os valores aceites são Ativados/Desativados. A definição padrão é Desativada. |
| Nova palavra-chave de string de conexão: (MS JDBC 7.4 em diante) keyVaultProviderClientId keyVaultProviderClientKey |
keyVaultProviderClientId=<ClientID>;keyVaultProviderClientKey=<ClientKey> Regista o SQLServerColumnEncryptionAzureKeyVaultProvider e usa os valores ClientID e ClientKey para recuperar a Chave Mestra da Coluna do Azure Key Vault |
Novos métodos:public static void setColumnEncryptionTrustedMasterKeyPaths(Map<String, List\<String>> trustedKeyPaths)public static void updateColumnEncryptionTrustedMasterKeyPaths(String server, List\<String> trustedKeyPaths)public static void removeColumnEncryptionTrustedMasterKeyPaths(String server) |
Permite definir/atualizar/remover uma lista de caminhos de chaves de confiança para um servidor de base de dados. Se, durante o processamento de uma consulta de aplicação, o driver receber um caminho de chave que não está na lista, a consulta falhará. Esta propriedade oferece proteção extra contra ataques de segurança que envolvem um servidor comprometido a enviar caminhos de chave falsos, o que pode levar à fuga de credenciais do armazenamento de chaves. |
Novo método:public static Map<String, List\<String>> getColumnEncryptionTrustedMasterKeyPaths() |
Devolve uma lista de caminhos de chave de confiança para um servidor de base de dados. |
Novo método:public static void registerColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders) |
Permite registar fornecedores de lojas de chaves personalizadas. É um dicionário que mapeia nomes de fornecedores de armazenamento de chaves para implementações de fornecedores de armazenamento de chaves. Para usar o armazenamento de chaves JVM, precisa de instanciar um objeto SQLServerColumnEncryptionJVMKeyStoreProvider com credenciais de keystore JVM e registá-lo com o driver. O nome deste prestador deve ser 'MSSQL_JVM_KEYSTORE'. Para usar a loja Azure Key Vault, precisa de instanciar um objeto SQLServerColumnEncryptionAzureKeyStoreProvider e registá-lo com o driver. O nome deste prestador deve ser 'AZURE_KEY_VAULT'. |
Novo método:public static void unregisterColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders) |
Permite desregistar todos os fornecedores personalizados de repositório de chaves ao limpar o dicionário que mapeia os nomes dos fornecedores para as implementações de repositório de chaves. |
public final boolean getSendTimeAsDatetime() |
Devolve a definição da propriedade de ligação sendTimeAsDatetime. |
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) |
Modifica a definição da propriedade de ligação sendTimeAsDatetime. |
Classe SQLServerConnectionPoolProxy
| Nome | Description |
|---|---|
public final boolean getSendTimeAsDatetime() |
Devolve a definição da propriedade de ligação sendTimeAsDatetime. |
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) |
Modifica a definição da propriedade de ligação sendTimeAsDatetime. |
Classe SQLServerDataSource
| Nome | Description |
|---|---|
public void setColumnEncryptionSetting(String columnEncryptionSetting) |
Ativa/desativar a funcionalidade Always Encrypted para o objeto fonte de dados. A configuração padrão é Desativada. |
public String getColumnEncryptionSetting() |
Recupera a definição de funcionalidade Always Encrypted para o objeto fonte de dados. |
public void setKeyStoreAuthentication(String keyStoreAuthentication) |
Define o nome que identifica um armazenamento de chaves. O único valor suportado é o JavaKeyStorePassword para identificar o Java Key Store. O padrão é null. |
public String getKeyStoreAuthentication() |
Obtém o valor da definição keyStoreAuthentication para o objeto fonte de dados. |
public void setKeyStoreSecret(String keyStoreSecret) |
Define a palavra-passe da keystore do Java. A palavra-passe do keystore e da chave deve ser a mesma. keyStoreAuthentication deve ser definido com JavaKeyStorePassword. |
public void setKeyStoreLocation(String keyStoreLocation) |
Define a localização, incluindo o nome do ficheiro para a keystore Java. keyStoreAuthentication deve ser definido com JavaKeyStorePassword. |
public String getKeyStoreLocation() |
Recupera o keyStoreLocation para o Java Key Store. |
Classe SQLServerColumnEncryptionJavaKeyStoreProvider
A implementação do fornecedor do repositório de chaves para Java Key Store. Esta classe permite usar certificados armazenados na loja de chaves Java como chaves mestras de coluna.
Construtores:
| Nome | Description |
|---|---|
public SQLServerColumnEncryptionJavaKeyStoreProvider (String keyStoreLocation, char[] keyStoreSecret) |
Fornecedor de armazenador de chaves para o Java Key Store. |
Métodos:
| Nome | Description |
|---|---|
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) |
Descifra o valor encriptado especificado de uma chave de encriptação de coluna. Espera-se que o valor encriptado seja encriptado usando o certificado com o caminho de chave especificado e utilizando o algoritmo especificado. O caminho principal deve estar num dos seguintes formatos: Impressão digital:< certificate_thumbprint> Alias:<certificate_alias> (Substitui SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).) |
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] plainTextColumnEncryptionKey) |
Encripta uma chave de encriptação de coluna usando o certificado com o caminho da chave especificado e usando o algoritmo especificado. O caminho principal deve estar num dos seguintes formatos: Impressão digital:< certificate_thumbprint> Apelido:<certificate_alias> (Substitui SQLServerColumnEncryptionKeyStoreProvider. encryptColumnEncryptionKey(String, String, Byte[]).) |
public boolean verifyColumnEncryptionKey (String masterKeyPath, boolean allowEnclaveComputations, byte[] signature) |
Verifica a assinatura da chave de encriptação da coluna usando o certificado. O caminho principal deve estar num dos seguintes formatos: Impressão digital:< certificate_thumbprint> Alias:<certificate_alias> (Substitui SQLServerColumnEncryptionKeyStoreProvider. verifyColumnEncryptionKey(String, boolean, Byte[]).) |
public void setName (String name) |
Define o nome deste fornecedor de loja-chave. |
public String getName () |
Obtém o nome deste fornecedor da loja de chaves. |
SQLServerColumnEncryptionAzureKeyVaultProvider classe
A implementação do fornecedor de armazenamento de chaves para o Azure Key Vault. Esta classe permite usar chaves armazenadas no Azure Key Vault como chaves mestras de coluna.
Construtores:
| Nome | Description |
|---|---|
public SQLServerColumnEncryptionAzureKeyVaultProvider () |
Constrói um SQLServerColumnEncryptionAzureKeyVaultProvider para autenticar no Azure Key Vault. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId) |
Constrói um SQLServerColumnEncryptionAzureKeyVaultProvider para autenticar no Azure Key Vault usando o identificador do cliente que solicita o token. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId, String clientKey) |
Constrói um SQLServerColumnEncryptionAzureKeyVaultProvider para autenticar no Azure Key Vault usando o identificador e a chave do cliente que solicita o token. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (TokenCredential tokenCredential) |
Constrói um SQLServerColumnEncryptionAzureKeyVaultProvider para autenticar no Azure Key Vault usando o TokenCredential fornecido. |
Métodos:
| Nome | Description |
|---|---|
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) |
Descifra uma chave de encriptação de coluna encriptada (CEK). Esta desencriptação é realizada com um algoritmo de encriptação RSA que utiliza a chave assimétrica especificada pelo caminho da chave mestra. (Sobrescreve SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).) |
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) |
Encripta uma chave de encriptação de coluna, atribuindo a chave mestra de coluna especificada ao algoritmo especificado. (Substitui SQLServerColumnEncryptionKeyStoreProvider. encryptColumnEncryptionKey(String, String, Byte[]).) |
public void setName (String name) |
Define o nome deste fornecedor de loja-chave. |
public String getName () |
Obtém o nome deste fornecedor da loja de chaves. |
SQLServerKeyVaultAuthenticationCallback interface
Esta interface contém um método para autenticação Azure Key Vault, que deve ser implementado pelo utilizador.
Métodos:
| Nome | Description |
|---|---|
public String getAccessToken(String authority, String resource, String scope); |
O método tem de ser ultrapassado. O método é usado para obter um token de acesso ao Azure Key Vault. |
Classe SQLServerColumnEncryptionKeyStoreProvider
Estenda esta classe para implementar um fornecedor de armazenamento de chaves personalizado.
| Nome | Description |
|---|---|
| SQLServerColumnEncryptionKeyStoreProvider | Classe base para todos os fornecedores principais de loja. Um fornecedor personalizado deve derivar desta classe, substituir os seus métodos, e depois registá-lo usando o SQLServerConnection. registerColumnEncryptionKeyStoreProviders(). |
Métodos:
| Nome | Description |
|---|---|
public abstract byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte [] encryptedColumnEncryptionKey) |
Método da classe base para desencriptar o valor encriptado especificado de uma chave de encriptação de coluna. Espera-se que o valor cifrado seja encriptado com a chave mestra de coluna usando o caminho da chave especificado e o algoritmo especificado. |
public abstract byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) |
Método da classe base para encriptar uma chave de encriptação de coluna usando a chave mestra da coluna com o caminho da chave especificado e usando o algoritmo especificado. |
public abstract void setName(String name) |
Define o nome deste fornecedor de loja-chave. |
public abstract String getName() |
Obtém o nome deste fornecedor da loja de chaves. |
Métodos novos ou sobrecarregados na classe SQLServerPreparedStatement
| Nome | Description |
|---|---|
public void setBigDecimal(int parameterIndex, BigDecimal x, int precision, int scale)public void setObject(int parameterIndex, Object x, int targetSqlType, Integer precision, int scale)public void setObject(int parameterIndex, Object x, SQLType targetSqlType, Integer precision, Integer scale)public void setTime(int parameterIndex, java.sql.Time x, int scale)public void setTimestamp(int parameterIndex, java.sql.Timestamp x, int scale) public void setDateTimeOffset(int parameterIndex, microsoft.sql.DateTimeOffset x, int scale) |
Estes métodos são sobrecarregados com um argumento de precisão ou escala, ou ambos, para suportar o Always Encrypted para tipos de dados específicos que requerem precisão e informação de escala. |
public void setMoney(int parameterIndex, BigDecimal x)public void setSmallMoney(int parameterIndex, BigDecimal x)public void setUniqueIdentifier(int parameterIndex, String guid)public void setDateTime(int parameterIndex, java.sql.Timestamp x)public void setSmallDateTime(int parameterIndex, java.sql.Timestamp x) |
Estes métodos adicionam suporte para o Always Encrypted para os tipos de dados money, smallmoney, uniqueidentifier, datetime e smalldatetime. O método existente setTimestamp() é usado para enviar valores de parâmetros para a coluna datetime2 encriptada. Para colunas datetime e smalldatetime encriptadas, use os novos métodos setDateTime() e setSmallDateTime() respetivamente. |
public final void setBigDecimal(int parameterIndex, BigDecimal x, int precision, int scale, boolean forceEncrypt)public final void setMoney(int parameterIndex, BigDecimal x, boolean forceEncrypt)public final void setSmallMoney(int parameterIndex, BigDecimal x, boolean forceEncrypt)public final void setBoolean(int parameterIndex, boolean x, boolean forceEncrypt)public final void setByte(int parameterIndex, byte x, boolean forceEncrypt)public final void setBytes(int parameterIndex, byte x[], boolean forceEncrypt)public final void setUniqueIdentifier(int parameterIndex, String guid, boolean forceEncrypt)public final void setDouble(int parameterIndex, double x, boolean forceEncrypt)public final void setFloat(int parameterIndex, float x, boolean forceEncrypt)public final void setInt(int parameterIndex, int value, boolean forceEncrypt)public final void setLong(int parameterIndex, long x, boolean forceEncrypt)public final setObject(int parameterIndex, Object x, int targetSqlType, Integer precision, int scale, boolean forceEncrypt)public final void setObject(int parameterIndex, Object x, SQLType targetSqlType, Integer precision, Integer scale, boolean forceEncrypt)public final void setShort(int parameterIndex, short x, boolean forceEncrypt)public final void setString(int parameterIndex, String str, boolean forceEncrypt)public final void setNString(int parameterIndex, String value, boolean forceEncrypt)public final void setTime(int parameterIndex, java.sql.Time x, int scale, boolean forceEncrypt)public final void setTimestamp(int parameterIndex, java.sql.Timestamp x, int scale, boolean forceEncrypt)public final void setDateTimeOffset(int parameterIndex, microsoft.sql.DateTimeOffset x, int scale, boolean forceEncrypt)public final void setDateTime(int parameterIndex, java.sql.Timestamp x, boolean forceEncrypt)public final void setSmallDateTime(int parameterIndex, java.sql.Timestamp x, boolean forceEncrypt)public final void setDate(int parameterIndex, java.sql.Date x, java.util.Calendar cal, boolean forceEncrypt)public final void setTime(int parameterIndex, java.sql.Time x, java.util.Calendar cal, boolean forceEncrypt)public final void setTimestamp(int parameterIndex, java.sql.Timestamp x, java.util.Calendar cal, boolean forceEncrypt) |
Define o parâmetro nomeado para o valor java dado. Se o booleano forceEncrypt estiver definido como verdadeiro, o parâmetro de consulta só será definido se a coluna designada estiver encriptada e o modo Always Encrypted estiver ativado na ligação ou na instrução.Se o booleano forceEncrypt estiver definido como false, o driver não forçará a cifragem dos parâmetros. |
Métodos novos ou sobrecarregados na classe SQLServerCallableStatement
| Nome | Description |
|---|---|
public void registerOutParameter(int parameterIndex, int sqlType, int precision, int scale)public void registerOutParameter(int parameterIndex, SQLType sqlType, int precision, int scale)public void registerOutParameter(String parameterName, int sqlType, int precision, int scale)public void registerOutParameter(String parameterName, SQLType sqlType, int precision, int scale)public void setBigDecimal(String parameterName, BigDecimal bd, int precision, int scale)public void setTime(String parameterName, java.sql.Time t, int scale)public void setTimestamp(String parameterName, java.sql.Timestamp t, int scale)public void setDateTimeOffset(String parameterName, microsoft.sql.DateTimeOffset t, int scale)public final void setObject(String sCol, Object x, int targetSqlType, Integer precision, int scale) |
Estes métodos são sobrecarregados com um argumento de precisão ou escala, ou ambos, para suportar o Always Encrypted para tipos de dados específicos que requerem precisão e informação de escala. |
public void setDateTime(String parameterName, java.sql.Timestamp x)public void setSmallDateTime(String parameterName, java.sql.Timestamp x)public void setUniqueIdentifier(String parameterName, String guid)public void setMoney(String parameterName, BigDecimal bd)public void setSmallMoney(String parameterName, BigDecimal bd)public Timestamp getDateTime(int index)public Timestamp getDateTime(String sCol)public Timestamp getDateTime(int index, Calendar cal)public Timestamp getSmallDateTime(int index)public Timestamp getSmallDateTime(String sCol)public Timestamp getSmallDateTime(int index, Calendar cal)public Timestamp getSmallDateTime(String name, Calendar cal)public BigDecimal getMoney(int index)public BigDecimal getMoney(String sCol)public BigDecimal getSmallMoney(int index)public BigDecimal getSmallMoney(String sCol) |
Estes métodos adicionam suporte para o Always Encrypted para os tipos de dados money, smallmoney, uniqueidentifier, datetime e smalldatetime. O método existente setTimestamp() é usado para enviar valores de parâmetros para a coluna datetime2 encriptada. Para colunas data-hora e smalldatetime encriptadas, use os novos métodos setDateTime() e setSmallDateTime() respetivamente. |
public void setObject(String parameterName, Object o, int n, int m, boolean forceEncrypt)public void setObject(String parameterName, Object obj, SQLType jdbcType, int scale, boolean forceEncrypt)public void setDate(String parameterName, java.sql.Date x, Calendar c, boolean forceEncrypt)public void setTime(String parameterName, java.sql.Time t, int scale, boolean forceEncrypt)public void setTime(String parameterName, java.sql.Time x, Calendar c, boolean forceEncrypt)public void setDateTime(String parameterName, java.sql.Timestamp x, boolean forceEncrypt)public void setDateTimeOffset(String parameterName, microsoft.sql.DateTimeOffset t, int scale, boolean forceEncrypt)public void setSmallDateTime(String parameterName, java.sql.Timestamp x, boolean forceEncrypt)public void setTimestamp(String parameterName, java.sql.Timestamp t, int scale, boolean forceEncrypt)public void setTimestamp(String parameterName, java.sql.Timestamp x, boolean forceEncrypt)public void setUniqueIdentifier(String parameterName, String guid, boolean forceEncrypt)public void setBytes(String parameterName, byte[] b, boolean forceEncrypt)public void setByte(String parameterName, byte b, boolean forceEncrypt)public void setString(String parameterName, String s, boolean forceEncrypt)public final void setNString(String parameterName, String value, boolean forceEncrypt)<br /><br /> public void setMoney(String parameterName, BigDecimal bd, boolean forceEncrypt)public void setSmallMoney(String parameterName, BigDecimal bd, boolean forceEncrypt)public void setBigDecimal(String parameterName, BigDecimal bd, int precision, int scale, boolean forceEncrypt)public void setDouble(String parameterName, double d, boolean forceEncrypt)public void setFloat(String parameterName, float f, boolean forceEncrypt)public void setInt(String parameterName, int i, boolean forceEncrypt)public void setLong(String parameterName, long l, boolean forceEncrypt)public void setShort(String parameterName, short s, boolean forceEncrypt)public void setBoolean(String parameterNames, boolean b, boolean forceEncrypt)public void setTimeStamp(String sCol, java.sql.Timestamp x, Calendar c, Boolean forceEncrypt) |
Define o parâmetro nomeado para o valor java dado. Se o forceEncrypt booleano estiver definido como true, o parâmetro de consulta só será definido se a coluna designada estiver encriptada e Always Encrypted estiver ativado na ligação ou na instrução. Se o "forceEncrypt" booleano estiver definido como "false", o driver não forçará a encriptação nos parâmetros. |
Métodos novos ou sobrecarregados na classe SQLServerResultSet
| Nome | Description |
|---|---|
public String getUniqueIdentifier(int columnIndex)public String getUniqueIdentifier(String columnLabel)public java.sql.Timestamp getDateTime(int columnIndex) public java.sql.Timestamp getDateTime(String columnName) public java.sql.Timestamp getDateTime(int columnIndex, Calendar cal) public java.sql.Timestamp getDateTime(String colName, Calendar cal) public java.sql.Timestamp getSmallDateTime(int columnIndex) public java.sql.Timestamp getSmallDateTime(String columnName) public java.sql.Timestamp getSmallDateTime(int columnIndex, Calendar cal) public java.sql.Timestamp getSmallDateTime(String colName, Calendar cal) public BigDecimal getMoney(int columnIndex) public BigDecimal getMoney(String columnName) public BigDecimal getSmallMoney(int columnIndex) public BigDecimal getSmallMoney(String columnName) public void updateMoney(String columnName, BigDecimal x) public void updateSmallMoney(String columnName, BigDecimal x) public void updateDateTime(int index, java.sql.Timestamp x) public void updateSmallDateTime(int index, java.sql.Timestamp x) |
Estes métodos adicionam suporte para Always Encrypted para os tipos de dados money, smallmoney, uniqueidentifier, datetime e smalldatetime. O método existente updateTimestamp() é utilizado para atualizar colunas datetime2 encriptadas. Para colunas data-hora e smalldatetime encriptadas, use os novos métodos updateDateTime() e updateSmallDateTime() respetivamente. |
public void updateBoolean(int index, boolean x, boolean forceEncrypt) public void updateByte(int index, byte x, boolean forceEncrypt) public void updateShort(int index, short x, boolean forceEncrypt) public void updateInt(int index, int x, boolean forceEncrypt) public void updateLong(int index, long x, boolean forceEncrypt) public void updateFloat(int index, float x, boolean forceEncrypt) public void updateDouble(int index, double x, boolean forceEncrypt) public void updateMoney(int index, BigDecimal x, boolean forceEncrypt) public void updateMoney(String columnName, BigDecimal x, boolean forceEncrypt) public void updateSmallMoney(int index, BigDecimal x, boolean forceEncrypt) public void updateSmallMoney(String columnName, BigDecimal x, boolean forceEncrypt) public void updateBigDecimal(int index, BigDecimal x, Integer precision, Integer scale, boolean forceEncrypt) public void updateString(int columnIndex, String stringValue, boolean forceEncrypt) public void updateNString(int columnIndex, String nString, boolean forceEncrypt) public void updateNString(String columnLabel, String nString, boolean forceEncrypt) public void updateBytes(int index, byte x[], boolean forceEncrypt) <br/><br/> public void updateDate(int index, java.sql.Date x, boolean forceEncrypt) public void updateTime(int index, java.sql.Time x, Integer scale, boolean forceEncrypt) public void updateTimestamp(int index, java.sql.Timestamp x, int scale, boolean forceEncrypt) public void updateDateTime(int index, java.sql.Timestamp x, Integer scale, boolean forceEncrypt) public void updateSmallDateTime(int index, java.sql.Timestamp x, Integer scale, boolean forceEncrypt) public void updateDateTimeOffset(int index, microsoft.sql.DateTimeOffset x, Integer scale, boolean forceEncrypt) public void updateUniqueIdentifier(int index, String x, boolean forceEncrypt) public void updateObject(int index, Object x, int precision, int scale, boolean forceEncrypt) public void updateObject(int index, Object obj, SQLType targetSqlType, int scale, boolean forceEncrypt) public void updateBoolean(String columnName, boolean x, boolean forceEncrypt) public void updateByte(String columnName, byte x, boolean forceEncrypt) public void updateShort(String columnName, short x, boolean forceEncrypt) public void updateInt(String columnName, int x, boolean forceEncrypt) public void updateLong(String columnName, long x, boolean forceEncrypt) public void updateFloat(String columnName, float x, boolean forceEncrypt) public void updateDouble(String columnName, double x, boolean forceEncrypt) <br/><br/> public void updateBigDecimal(String columnName, BigDecimal x, boolean forceEncrypt) public void updateBigDecimal(String columnName, BigDecimal x, Integer precision, Integer scale, boolean forceEncrypt) public void updateString(String columnName, String x, boolean forceEncrypt) public void updateBytes(String columnName, byte x[], boolean forceEncrypt) public void updateDate(String columnName, java.sql.Date x, boolean forceEncrypt) public void updateTime(String columnName, java.sql.Time x, int scale, boolean forceEncrypt) public void updateTimestamp(String columnName, java.sql.Timestamp x, int scale, boolean forceEncrypt) public void updateDateTime(String columnName, java.sql.Timestamp x, int scale, boolean forceEncrypt) public void updateSmallDateTime(String columnName, java.sql.Timestamp x, int scale, boolean forceEncrypt) public void updateDateTimeOffset(String columnName, microsoft.sql.DateTimeOffset x, int scale, boolean forceEncrypt) public void updateUniqueIdentifier(String columnName, String x, boolean forceEncrypt)public void updateObject(String columnName, Object x, int precision, int scale, boolean forceEncrypt)public void updateObject(String columnName, Object obj, SQLType targetSqlType, int scale, boolean forceEncrypt) |
Atualiza a coluna especificada para o valor Java fornecido. Se o booleano forceEncrypt estiver definido como verdadeiro, a coluna só será definida se estiver encriptada e o modo Always Encrypted estiver ativado na ligação ou na instrução.Se o booleano forceEncrypt estiver definido como falso, o driver não forçará a encriptação dos parâmetros. |
Novos tipos na classe microsoft.sql.Tipos
| Nome | Description |
|---|---|
| DATAHORA, DATAHORA PEQUENA, MOEDA, MOEDA PEQUENA, GUID | Utilize esses tipos como tipos SQL de destino ao enviar valores de parâmetros para colunas encriptadas de data-hora, smalldatetime, money, smallmoney, uniqueidentifier, usando setObject()/updateObject() métodos API. |
SQLServerStatementColumnEncryptionSetting Enum
Especifica como os dados serão enviados e recebidos ao ler e escrever colunas encriptadas. Dependendo da sua consulta específica, o impacto no desempenho pode ser reduzido ao contornar o processamento do driver Always Encrypted quando colunas não encriptadas estão a ser usadas. Estas definições não podem ser usadas para contornar a encriptação e aceder a dados de texto simples.
Sintaxe:
Public enum SQLServerStatementColumnEncryptionSetting
Membros:
| Nome | Description |
|---|---|
| UsarConfiguraçãoDeConexão | Especifica que o comando deve usar, por defeito, a definição de Sempre Encriptado na cadeia de ligação. |
| Ativado(a) | Ativa o "Always Encrypted" para a consulta. |
| ResultSetOnly | Especifica que apenas os resultados do comando devem ser processados pela rotina Always Encrypted no driver. Use este valor quando o comando não tem parâmetros que exijam encriptação. |
| Disabled | Desativa sempre a encriptação para a consulta. |
A definição ao nível da instrução para AE é adicionada à classe SQLServerConnection e à classe SQLServerConnectionPoolProxy. Os métodos seguintes nestas classes são sobrecarregados com a nova configuração.
| Nome | Description |
|---|---|
public Statement createStatement(int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Cria um objeto Statement que irá gerar objetos ResultSet com o tipo, concorrência, segurabilidade e encriptação de colunas indicados. |
public CallableStatement prepareCall(String sql, int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Cria um objeto CallableStatement com a configuração de encriptação da coluna dada que irá gerar objetos ResultSet com o tipo, concorrência e capacidade de manutenção indicados. |
public PreparedStatement prepareStatement(String sql, int autogeneratedKeys, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Cria um objeto PreparedStatement com a configuração de encriptação da coluna dada que tem a capacidade de recuperar chaves geradas automaticamente. |
public PreparedStatement prepareStatement(String sql, String[] columnNames, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Cria um objeto PreparedStatement com a configuração de encriptação das colunas dada que irá gerar objetos ResultSet com os nomes das colunas indicados. |
public PreparedStatement prepareStatement(String sql, int[] columnIndexes, SQLServerStatementColumnEncryptionSetting stmtColEncSetting |
Cria um objeto PreparedStatement com a configuração de encriptação de coluna fornecida que gerará objetos ResultSet com os índices de coluna especificados. |
public PreparedStatement prepareStatement(String sql, int nType, int nConcur, int nHold, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Cria um objeto PreparedStatement com a definição de encriptação da coluna dada que gerará objetos ResultSet com o tipo, concorrência e capacidade de manutenção indicados. |
Observação
Se o Always Encrypted estiver desativado para uma consulta e a consulta tiver parâmetros que precisam de ser encriptados (parâmetros que correspondem a colunas encriptadas), a consulta falhará.
Se o Always Encrypted estiver desativado para uma consulta e a consulta devolver resultados de colunas encriptadas, a consulta devolverá valores encriptados. Os valores encriptados terão o tipo de dado varbinary.