Sdílet prostřednictvím


Referenční informace k rozhraní API Always Encrypted pro ovladač JDBC

Stáhnout ovladač JDBC

Funkce Always Encrypted umožňuje klientům šifrovat citlivá data v klientských aplikacích a nikdy neodhalovat šifrovací klíče na server. Ovladač s povolenou funkcí Always Encrypted nainstalovaný v klientském počítači tuto funkci dosahuje automatickým šifrováním a dešifrováním citlivých dat v klientské aplikaci.

Ovladač před předáním dat sql Serveru zašifruje data v citlivých sloupcích a automaticky přepíše dotazy, aby se zachovala sémantika aplikace. Ovladač podobně transparentně dešifruje data uložená v šifrovaných databázových sloupcích, které jsou ve výsledcích dotazu. Další informace najdete v tématu Always Encrypted (databázový stroj) a použití funkce Always Encrypted s ovladačem JDBC.

Poznámka:

Funkce Always Encrypted je podporována pouze ovladačem Microsoft JDBC 6.0 nebo novějším pro SQL Server s Azure SQL Database a SQL Serverem 2016 a novějším.

Odkazy rozhraní API Always Encrypted

Existuje několik nových doplňků a úprav rozhraní API ovladače JDBC pro použití v klientských aplikacích, které používají funkci Always Encrypted.

SQLServerConnection třída

Název Description
Nové klíčové slovo připojovacího řetězce:

nastavení šifrování sloupců
columnEncryptionSetting=Enabled umožňuje funkci Always Encrypted pro připojení a columnEncryptionSetting=Disabled ji zakáže. Akceptované hodnoty jsou Povolené/Zakázané. Výchozí hodnota je Zakázáno.
Nové klíčové slovo připojovacího řetězce: (MS JDBC 7.4 a novější)

keyVaultProviderClientId

keyVaultProviderClientKey
keyVaultProviderClientId=<ClientID>; keyVaultProviderClientKey=<ClientKey>

Zaregistruje SQLServerColumnEncryptionAzureKeyVaultProvider a používá hodnoty ClientID a ClientKey k načtení hlavního klíče sloupce ze služby Azure Key Vault.
Nové metody:

public static void setColumnEncryptionTrustedMasterKeyPaths(Map<String, List\<String>> trustedKeyPaths)

public static void updateColumnEncryptionTrustedMasterKeyPaths(String server, List\<String> trustedKeyPaths)

public static void removeColumnEncryptionTrustedMasterKeyPaths(String server)
Umožňuje nastavit, aktualizovat nebo odebrat seznam důvěryhodných cest klíčů pro databázový server. Pokud při zpracování dotazu aplikace ovladač obdrží cestu ke klíči, která není v seznamu, dotaz se nezdaří. Tato vlastnost poskytuje dodatečnou ochranu před útoky na zabezpečení, které zahrnují ohrožený server odesílající falešné cesty klíčů, což může vést k úniku přihlašovacích údajů úložiště klíčů.
Nová metoda:

public static Map<String, List\<String>> getColumnEncryptionTrustedMasterKeyPaths()
Vrátí seznam důvěryhodných cest klíčů pro databázový server.
Nová metoda:

public static void registerColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders)
Umožňuje registrovat poskytovatele vlastních úložišť klíčů. Je to slovník, který mapuje názvy poskytovatelů úložiště klíčů na implementace poskytovatele úložiště klíčů.

Pokud chcete použít úložiště klíčů JVM, musíte vytvořit instanci objektu SQLServerColumnEncryptionJVMKeyStoreProvider s přihlašovacími údaji úložiště klíčů JVM a zaregistrovat ho v ovladači. Název tohoto poskytovatele musí být MSSQL_JVM_KEYSTORE.

Pokud chcete použít úložiště služby Azure Key Vault, musíte vytvořit instanci objektu SQLServerColumnEncryptionAzureKeyStoreProvider a zaregistrovat ho pomocí ovladače. Název tohoto poskytovatele musí být "AZURE_KEY_VAULT".
Nová metoda:

public static void unregisterColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders)
Umožňuje zrušit registraci všech vlastních poskytovatelů úložiště klíčů vymazáním slovníku, který mapuje názvy poskytovatelů úložiště klíčů na jejich implementace.
public final boolean getSendTimeAsDatetime() Vrátí nastavení vlastnosti připojení sendTimeAsDatetime.
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) Upraví nastavení vlastnosti připojení sendTimeAsDatetime.

třída SQLServerConnectionPoolProxy

Název Description
public final boolean getSendTimeAsDatetime() Vrátí nastavení vlastnosti připojení sendTimeAsDatetime.
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) Upraví nastavení vlastnosti připojení sendTimeAsDatetime.

SQLServerDataSource třída

Název Description
public void setColumnEncryptionSetting(String columnEncryptionSetting) Povolí nebo zakáže funkce Always Encrypted pro objekt zdroje dat.

Výchozí hodnota je Zakázáno.
public String getColumnEncryptionSetting() Načte nastavení funkce Always Encrypted pro objekt zdroje dat.
public void setKeyStoreAuthentication(String keyStoreAuthentication) Nastaví název, který identifikuje úložiště klíčů. Podporuje se pouze hodnota JavaKeyStorePassword pro identifikaci úložiště klíčů Java.

Výchozí hodnota je null.
public String getKeyStoreAuthentication() Získá hodnotu nastavení keyStoreAuthentication pro objekt zdroje dat.
public void setKeyStoreSecret(String keyStoreSecret) Nastaví heslo pro úložiště klíčů Java. Heslo pro úložiště klíčů a klíč musí být stejné. KeyStoreAuthentication musí být nastaveno pomocí JavaKeyStorePassword.
public void setKeyStoreLocation(String keyStoreLocation) Nastaví umístění včetně názvu souboru pro úložiště klíčů Java. KeyStoreAuthentication musí být nastaveno pomocí JavaKeyStorePassword.
public String getKeyStoreLocation() Načte hodnotu keyStoreLocation pro úložiště klíčů Java.

SQLServerColumnEncryptionJavaKeyStoreProvider – třída

Implementace zprostředkovatele úložiště klíčů pro úložiště klíčů Java. Tato třída umožňuje používat certifikáty uložené v úložišti klíčů Java jako hlavní klíče sloupců.

Konstruktory:

Název Description
public SQLServerColumnEncryptionJavaKeyStoreProvider (String keyStoreLocation, char[] keyStoreSecret) Zprostředkovatel úložiště klíčů pro úložiště klíčů Java.

Metody:

Název Description
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) Dešifruje zadanou zašifrovanou hodnotu šifrovacího klíče sloupce. Očekává se, že šifrovaná hodnota bude zašifrována pomocí certifikátu se zadanou cestou ke klíči a pomocí zadaného algoritmu.

Cesta ke klíči by měla být v jednom z následujících formátů:

Otisk prstu:<certificate_thumbprint>

Alias:<certificate_alias>

Přepisuje SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).)
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] plainTextColumnEncryptionKey) Zašifruje šifrovací klíč sloupce pomocí certifikátu se zadanou cestou ke klíči a pomocí zadaného algoritmu.

Cesta ke klíči by měla být v jednom z následujících formátů:

Otisk certifikátu:<certificate_thumbprint>

Alias:<certificate_alias>

(Přepíše SQLServerColumnEncryptionKeyStoreProvider.) encryptColumnEncryptionKey(String, String, Byte[]).)
public boolean verifyColumnEncryptionKey (String masterKeyPath, boolean allowEnclaveComputations, byte[] signature) Ověří podpis šifrovacího klíče sloupce pomocí certifikátu.

Cesta ke klíči by měla být v jednom z následujících formátů:

Kryptografický otisk:<certificate_thumbprint>

Alias:<certifikát_alias>

Toto přepíše SQLServerColumnEncryptionKeyStoreProvider. verifyColumnEncryptionKey(String, boolean, Byte[]).)
public void setName (String name) Nastaví název tohoto poskytovatele klíčového úložiště.
public String getName () Získá název tohoto zprostředkovatele úložiště klíčů.

SQLServerColumnEncryptionAzureKeyVaultProvider třída

Implementace zprostředkovatele úložiště klíčů pro Azure Key Vault. Tato třída umožňuje používat klíče uložené ve službě Azure Key Vault jako hlavní klíče sloupců.

Konstruktory:

Název Description
public SQLServerColumnEncryptionAzureKeyVaultProvider () Vytvoří SQLServerColumnEncryptionAzureKeyVaultProvider pro ověření ve službě Azure Key Vault.
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId) Vytvoří SQLServerColumnEncryptionAzureKeyVaultProvider pro ověření ve službě Azure Key Vault pomocí identifikátoru klienta, který požaduje token.
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId, String clientKey) Vytvoří SQLServerColumnEncryptionAzureKeyVaultProvider pro ověření ve službě Azure Key Vault pomocí identifikátoru a klíče klienta požadujícího token.
public SQLServerColumnEncryptionAzureKeyVaultProvider (TokenCredential tokenCredential) Vytvoří SQLServerColumnEncryptionAzureKeyVaultProvider pro autentizaci ke službě Azure Key Vault s využitím poskytnutého TokenCredential.

Metody:

Název Description
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) Dešifruje šifrovaný klíč pro šifrování sloupce (CEK). Toto dešifrování se provádí pomocí šifrovacího algoritmu RSA, který používá asymetrický klíč určený cestou hlavního klíče.
Přepisuje SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).)
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) Zašifruje klíč pro šifrování sloupce tím, že zadaný hlavní klíč sloupce se použije v zadaném algoritmu.
(Přepisuje SQLServerColumnEncryptionKeyStoreProvider. encryptColumnEncryptionKey(String, String, Byte[]).)
public void setName (String name) Nastaví název tohoto poskytovatele klíčového úložiště.
public String getName () Získá název tohoto zprostředkovatele úložiště klíčů.

ROZHRANÍ SQLServerKeyVaultAuthenticationCallback

Toto rozhraní obsahuje jednu metodu pro ověřování azure Key Vault, kterou má implementovat uživatel.

Metody:

Název Description
public String getAccessToken(String authority, String resource, String scope); Metoda musí být přepsána. Metoda se používá k získání přístupového tokenu ke službě Azure Key Vault.

SQLServerColumnEncryptionKeyStoreProvider – třída

Rozšiřte tuto třídu tak, aby implementovala vlastního poskytovatele úložiště klíčů.

Název Description
SQLServerColumnEncryptionKeyStoreProvider Základní třída pro všechny zprostředkovatele úložiště klíčů Vlastní zprostředkovatel musí odvodit z této třídy a přepsat jeho členské funkce a pak ho zaregistrovat pomocí SQLServerConnection. registerColumnEncryptionKeyStoreProviders()

Metody:

Název Description
public abstract byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte [] encryptedColumnEncryptionKey) Metoda základní třídy pro dešifrování zadané šifrované hodnoty šifrovacího klíče sloupce Očekává se, že šifrovaná hodnota bude šifrovaná pomocí hlavního klíče sloupce se zadanou cestou ke klíči a zadaným algoritmem.
public abstract byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) Metoda základní třídy pro šifrování šifrovacího klíče sloupce pomocí hlavního klíče sloupce se zadanou cestou klíče a pomocí zadaného algoritmu.
public abstract void setName(String name) Nastaví název tohoto poskytovatele klíčového úložiště.
public abstract String getName() Získá název tohoto zprostředkovatele úložiště klíčů.

Nové nebo přetížené metody v třídě SQLServerPreparedStatement

Název 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)
Tyto metody jsou přetížené s argumentem pro přesnost, měřítko nebo obojí pro podporu Always Encrypted pro konkrétní datové typy, které vyžadují údaje o přesnosti a měřítku.
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)
Tyto metody přidávají podporu funkce Always Encrypted pro datové typy money, smallmoney, uniqueidentifier, datetime a smalldatetime.

Existující setTimestamp() metoda se používá k odesílání hodnot parametrů do šifrovaného sloupce datetime2. Pro šifrované sloupce datetime a smalldatetime použijte nové metody setDateTime() a setSmallDateTime() v uvedeném pořadí.
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)
Nastaví pojmenovaný parametr na danou hodnotu Java.

Pokud je logická hodnota forceEncrypt nastavená na hodnotu true, parametr dotazu se nastaví pouze v případě, že je určený sloupec zašifrovaný a funkce Always Encrypted je povolená pro připojení nebo příkaz.

Pokud je logická hodnota forceEncrypt nastavená na false, ovladač nebude vynucovat šifrování parametrů.

Nové nebo přetížené metody ve třídě SQLServerCallableStatement

Název 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)
Tyto metody jsou přetížené s argumentem přesnosti, argumentem škálování nebo obojím pro podporu Always Encrypted u konkrétních datových typů, které vyžadují informace o přesnosti a škálování.
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)
Tyto metody přidávají podporu pro Always Encrypted pro datové typy money, smallmoney, uniqueidentifier, datetime a smalldatetime.

Existující setTimestamp() metoda se používá k odesílání hodnot parametrů do šifrovaného sloupce datetime2. Pro šifrované sloupce datetime a smalldatetime použijte nové metody setDateTime() a setSmallDateTime() v uvedeném pořadí.
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)
Nastaví pojmenovaný parametr na danou hodnotu Java.

Pokud je logická hodnota forceEncrypt nastavena na hodnotu true, parametr dotazu se nastaví pouze v případě, že je určený sloupec zašifrovaný a funkce Always Encrypted je povolena pro připojení nebo příkaz.

Pokud je logická hodnota forceEncrypt nastavená na false, ovladač nebude vynucovat šifrování parametrů.

Nové nebo přetížené metody ve třídě SQLServerResultSet

Název 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)
Tyto metody přidávají podporu funkce "Always Encrypted" pro datové typy money, smallmoney, uniqueidentifier, datetime a smalldatetime.

updateTimestamp() Existující metoda slouží k aktualizaci šifrovaných sloupců datetime2. Pro šifrované sloupce datetime a smalldatetime použijte nové metody updateDateTime() a updateSmallDateTime() v uvedeném pořadí.
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)
Aktualizuje pojmenovaný sloupec na danou hodnotu Java.

Pokud je logická hodnota forceEncrypt nastavená na hodnotu true, sloupec se nastaví jenom v případě, že je zašifrovaný a funkce Always Encrypted je povolená pro připojení nebo příkaz.

Pokud je logická hodnota forceEncrypt nastavena na false, ovladač nevynutí šifrování parametrů.

Nové typy ve třídě microsoft.sql.Types

Název Description
DATETIME, SMALLDATETIME, MONEY, SMALLMONEY, GUID Tyto typy použijte jako cílové typy SQL při odesílání hodnot parametrů do sloupců s typem encrypted datetime, smalldatetime, money, smallmoney, uniqueidentifier pomocí metod setObject()/updateObject() rozhraní API.

SQLServerStatementColumnEncryptionSetting – výčet

Určuje, jak se budou data odesílat a přijímat při čtení a zápisu šifrovaných sloupců. V závislosti na konkrétním dotazu může být dopad na výkon snížen vynecháním zpracování ovladače Always Encrypted při použití nešifrovaných sloupců. Tato nastavení se nedají použít k obejití šifrování a získání přístupu k datům prostého textu.

Syntaxe:

Public enum  SQLServerStatementColumnEncryptionSetting

Členové:

Název Description
Použít nastavení připojení Určuje, že příkaz by měl v připojovacím řetězci výchozí nastavení Always Encrypted.
Enabled Povolí funkci Always Encrypted pro dotaz.
ResultSetOnly Určuje, že rutina Always Encrypted v ovladači by měla zpracovávat pouze výsledky příkazu. Tuto hodnotu použijte, pokud příkaz nemá žádné parametry, které vyžadují šifrování.
Disabled Zakáže funkci Always Encrypted pro dotaz.

Nastavení úrovně příkazu pro AE se přidá do třídy SQLServerConnection a do třídy SQLServerConnectionPoolProxy. Následující metody v těchto třídách jsou přetíženy novým nastavením.

Název Description
public Statement createStatement(int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Vytvoří objekt příkazu, který vygeneruje objekty ResultSet s daným typem, souběžností, uchováním a nastavením šifrování sloupce.
public CallableStatement prepareCall(String sql, int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Vytvoří CallableStatement objekt s daným nastavením šifrování sloupce, který vygeneruje objekty ResultSet s daným typem, souběžností a možností uchování.
public PreparedStatement prepareStatement(String sql, int autogeneratedKeys, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Vytvoří objekt PreparedStatement s daným nastavením šifrování sloupce, které má schopnost načíst automaticky generované klíče.
public PreparedStatement prepareStatement(String sql, String[] columnNames, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Vytvoří objekt PreparedStatement s daným nastavením šifrování sloupce, který vygeneruje objekty ResultSet s danými názvy sloupců.
public PreparedStatement prepareStatement(String sql, int[] columnIndexes, SQLServerStatementColumnEncryptionSetting stmtColEncSetting Vytvoří objekt PreparedStatement s daným nastavením šifrování sloupce, který vygeneruje objekty ResultSet s danými indexy sloupců.
public PreparedStatement prepareStatement(String sql, int nType, int nConcur, int nHold, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) Vytvoří objekt PreparedStatement s daným nastavením šifrování sloupce, který vygeneruje objekty ResultSet s daným typem, souběžností a uchováním.

Poznámka:

Pokud je funkce Always Encrypted pro dotaz zakázaná a dotaz má parametry, které je potřeba zašifrovat (parametry odpovídající šifrovaným sloupcům), dotaz selže.

Pokud je funkce Always Encrypted pro dotaz zakázaná a dotaz vrátí výsledky ze šifrovaných sloupců, vrátí dotaz šifrované hodnoty. Šifrované hodnoty budou mít varbinární datový typ.

Viz také

Použití funkce Always Encrypted s ovladačem JDBC