Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja Always Encrypted umożliwia klientom szyfrowanie poufnych danych wewnątrz aplikacji klienckich i nigdy nie ujawnia kluczy szyfrowania na serwerze. Sterownik z włączoną funkcją Always Encrypted zainstalowany na komputerze klienckim umożliwia automatyczne szyfrowanie i odszyfrowywanie poufnych danych w aplikacji klienckiej.
Sterownik szyfruje dane w kolumnach poufnych przed przekazaniem danych do programu SQL Server i automatycznie ponownie zapisuje zapytania w celu zachowania semantyki aplikacji. Podobnie sterownik w sposób przezroczysty odszyfrowuje dane przechowywane w zaszyfrowanych kolumnach bazy danych, które są w wynikach zapytania. Aby uzyskać więcej informacji, zobacz Always Encrypted (aparat bazy danych) i Using Always Encrypted with the JDBC Driver (Używanie funkcji Always Encrypted ze sterownikiem JDBC).
Uwaga / Notatka
Funkcja Always Encrypted jest obsługiwana tylko przez sterownik JDBC firmy Microsoft 6.0 lub nowszy dla programu SQL Server z usługami Azure SQL Database i SQL Server 2016 i nowszymi.
Dokumentacja interfejsu API Always Encrypted
Istnieje kilka nowych dodatków i modyfikacji interfejsu API sterownika JDBC do użycia w aplikacjach klienckich korzystających z funkcji Always Encrypted.
Klasa SQLServerConnection
| Name | Description |
|---|---|
| Nowe słowo kluczowe łańcucha połączenia: ustawienie szyfrowania kolumny |
columnEncryptionSetting=Enabled włącza funkcjonalność Always Encrypted dla połączenia i columnEncryptionSetting=Disabled ją wyłącza. Zaakceptowane wartości to Włączone/Wyłączone. Wartość domyślna to Wyłączone. |
| Nowe słowo kluczowe parametrów połączenia:(MS JDBC 7.4) keyVaultProviderClientId keyVaultProviderClientKey |
keyVaultProviderClientId=<ClientID>; keyVaultProviderClientKey=<ClientKey> Rejestruje SQLServerColumnEncryptionAzureKeyVaultProvider i używa wartości ClientID i ClientKey, aby pobrać Klucz Główny Kolumny z usługi Azure Key Vault |
Nowe 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żliwia ustawienie/zaktualizowanie/usunięcie listy zaufanych ścieżek kluczy dla serwera bazy danych. Jeśli podczas przetwarzania zapytania aplikacji sterownik odbiera ścieżkę klucza, która nie znajduje się na liście, zapytanie zakończy się niepowodzeniem. Ta właściwość zapewnia dodatkową ochronę przed atakami zabezpieczeń, które obejmują serwer, który wysyła fałszywe ścieżki kluczy, co może prowadzić do wycieku poświadczeń magazynu kluczy. |
Nowa metoda:public static Map<String, List\<String>> getColumnEncryptionTrustedMasterKeyPaths() |
Zwraca listę zaufanych ścieżek kluczy dla serwera bazy danych. |
Nowa metoda:public static void registerColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders) |
Umożliwia zarejestrowanie niestandardowych dostawców zarządzania kluczami. Jest to słownik mapujący nazwy dostawców przechowywania kluczy na ich implementacje. Aby użyć magazynu kluczy JVM, należy zainicjalizować obiekt SQLServerColumnEncryptionJVMKeyStoreProvider przy użyciu poświadczeń magazynu kluczy JVM i zarejestrować go przy użyciu sterownika. Nazwa tego dostawcy musi mieć wartość "MSSQL_JVM_KEYSTORE". Aby użyć magazynu usługi Azure Key Vault, należy utworzyć wystąpienie obiektu SQLServerColumnEncryptionAzureKeyStoreProvider i zarejestrować go za pomocą sterownika. Nazwa tego dostawcy musi być "AZURE_KEY_VAULT". |
Nowa metoda:public static void unregisterColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders) |
Umożliwia wyrejestrowanie wszystkich niestandardowych dostawców magazynu kluczy przez wyczyszczenie słownika mapowania nazw dostawców magazynu kluczy na implementacje dostawcy magazynu kluczy. |
public final boolean getSendTimeAsDatetime() |
Zwraca ustawienie właściwości połączenia sendTimeAsDatetime. |
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) |
Modyfikuje ustawienie właściwości połączenia sendTimeAsDatetime. |
Klasa SQLServerConnectionPoolProxy
| Name | Description |
|---|---|
public final boolean getSendTimeAsDatetime() |
Zwraca ustawienie właściwości połączenia sendTimeAsDatetime. |
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) |
Modyfikuje ustawienie właściwości połączenia sendTimeAsDatetime. |
klasa SQLServerDataSource
| Name | Description |
|---|---|
public void setColumnEncryptionSetting(String columnEncryptionSetting) |
Włącza/wyłącza funkcję Always Encrypted dla obiektu źródła danych. Wartość domyślna to Wyłączone. |
public String getColumnEncryptionSetting() |
Pobiera ustawienie funkcji Always Encrypted dla obiektu źródła danych. |
public void setKeyStoreAuthentication(String keyStoreAuthentication) |
Ustawia nazwę identyfikującą magazyn kluczy. Obsługiwana jest tylko wartość JavaKeyStorePassword do identyfikowania magazynu kluczy Java. Wartość domyślna to null. |
public String getKeyStoreAuthentication() |
Pobiera wartość ustawienia keyStoreAuthentication dla obiektu źródła danych. |
public void setKeyStoreSecret(String keyStoreSecret) |
Ustawia hasło dla keystore Java. Hasło magazynu kluczy i klucza muszą być takie same. Parametr keyStoreAuthentication musi być ustawiony przy użyciu elementu JavaKeyStorePassword. |
public void setKeyStoreLocation(String keyStoreLocation) |
Ustawia lokalizację, w tym nazwę pliku dla magazynu kluczy Java. Parametr keyStoreAuthentication musi być ustawiony przy użyciu elementu JavaKeyStorePassword. |
public String getKeyStoreLocation() |
Pobiera keyStoreLocation dla magazynu kluczy Java. |
Klasa SQLServerColumnEncryptionJavaKeyStoreProvider
Implementacja dostawcy dla magazynu kluczy Java Key Store. Ta klasa umożliwia używanie certyfikatów przechowywanych w magazynie kluczy Java jako kluczy głównych kolumn.
Konstruktorów:
| Name | Description |
|---|---|
public SQLServerColumnEncryptionJavaKeyStoreProvider (String keyStoreLocation, char[] keyStoreSecret) |
Dostawca magazynu kluczy dla Java Key Store. |
Metody:
| Name | Description |
|---|---|
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) |
Odszyfrowuje określoną zaszyfrowaną wartość klucza szyfrowania kolumny. Oczekuje się, że zaszyfrowana wartość będzie szyfrowana przy użyciu certyfikatu z określoną ścieżką klucza i przy użyciu określonego algorytmu. Ścieżka klucza powinna mieć jeden z następujących formatów: Odcisk palca:<certificate_thumbprint> Alias:<certificate_alias> (Zastępuje SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).) |
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] plainTextColumnEncryptionKey) |
Szyfruje klucz szyfrowania kolumny przy użyciu certyfikatu z określoną ścieżką klucza i przy użyciu określonego algorytmu. Ścieżka klucza powinna mieć jeden z następujących formatów: Odcisk palca:<certificate_thumbprint> Alias:<alias certyfikatu> (Zastępuje SQLServerColumnEncryptionKeyStoreProvider. encryptColumnEncryptionKey(String, String, Byte[]).) |
public boolean verifyColumnEncryptionKey (String masterKeyPath, boolean allowEnclaveComputations, byte[] signature) |
Weryfikuje podpis klucza szyfrowania kolumny przy użyciu certyfikatu. Ścieżka klucza powinna mieć jeden z następujących formatów: Odcisk palca:<certificate_thumbprint> Alias:<certificate_alias> (Zastępuje SQLServerColumnEncryptionKeyStoreProvider. verifyColumnEncryptionKey(String, boolean, Byte[]).) |
public void setName (String name) |
Ustawia nazwę tego dostawcy magazynu kluczy. |
public String getName () |
Pobiera nazwę tego dostawcy magazynu kluczy. |
SQLServerColumnEncryptionAzureKeyVaultProvider klasa
Implementacja dostawcy magazynu kluczy dla usługi Azure Key Vault. Ta klasa umożliwia używanie kluczy przechowywanych w usłudze Azure Key Vault jako kluczy głównych kolumn.
Konstruktorów:
| Name | Description |
|---|---|
public SQLServerColumnEncryptionAzureKeyVaultProvider () |
Tworzy element SQLServerColumnEncryptionAzureKeyVaultProvider w celu uwierzytelniania w usłudze Azure Key Vault. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId) |
Tworzy obiekt SQLServerColumnEncryptionAzureKeyVaultProvider do uwierzytelniania w Azure Key Vault przy użyciu identyfikatora klienta żądającego tokenu. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId, String clientKey) |
Tworzy element SQLServerColumnEncryptionAzureKeyVaultProvider w celu uwierzytelnienia w Azure Key Vault przy użyciu identyfikatora i klucza klienta, który żąda tokenu. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (TokenCredential tokenCredential) |
Tworzy element SQLServerColumnEncryptionAzureKeyVaultProvider w celu uwierzytelniania w usłudze Azure Key Vault przy użyciu podanego tokenuCredential. |
Metody:
| Name | Description |
|---|---|
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) |
Odszyfrowuje zaszyfrowany klucz szyfrowania kolumny (CEK). To odszyfrowywanie odbywa się za pomocą algorytmu szyfrowania RSA, który używa klucza asymetrycznego określonego przez ścieżkę klucza głównego. (Zastępuje SQLServerColumnEncryptionKeyStoreProvider. decryptColumnEncryptionKey(String, String, Byte[]).) |
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) |
Szyfruje klucz szyfrowania kolumny, podając określony klucz główny kolumny do określonego algorytmu. (Zastępuje SQLServerColumnEncryptionKeyStoreProvider. encryptColumnEncryptionKey(String, String, Byte[]).) |
public void setName (String name) |
Ustawia nazwę tego dostawcy magazynu kluczy. |
public String getName () |
Pobiera nazwę tego dostawcy magazynu kluczy. |
Interfejs SQLServerKeyVaultAuthenticationCallback
Ten interfejs zawiera jedną metodę uwierzytelniania usługi Azure Key Vault, która ma zostać zaimplementowana przez użytkownika.
Metody:
| Name | Description |
|---|---|
public String getAccessToken(String authority, String resource, String scope); |
Metoda musi zostać zastąpiona. Metoda służy do uzyskiwania tokenu dostępu do usługi Azure Key Vault. |
Klasa SQLServerColumnEncryptionKeyStoreProvider
Aby zaimplementować niestandardowego dostawcę magazynu kluczy, rozszerz tę klasę.
| Name | Description |
|---|---|
| SQLServerColumnEncryptionKeyStoreProvider | Klasa podstawowa dla wszystkich dostawców magazynu kluczy. Dostawca niestandardowy musi pochodzić z tej klasy i zastąpić jego funkcje członkowskie, a następnie zarejestrować go przy użyciu programu SQLServerConnection. registerColumnEncryptionKeyStoreProviders(). |
Metody:
| Name | Description |
|---|---|
public abstract byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte [] encryptedColumnEncryptionKey) |
Metoda klasy bazowej do odszyfrowywania określonej zaszyfrowanej wartości klucza szyfrowania kolumny. Oczekuje się, że zaszyfrowana wartość będzie szyfrowana przy użyciu klucza głównego kolumny z określoną ścieżką klucza i określonym algorytmem. |
public abstract byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) |
Metoda klasy bazowej do szyfrowania klucza szyfrowania kolumny za pomocą klucza głównego dla kolumny, korzystając z określonej ścieżki klucza i wskazanego algorytmu. |
public abstract void setName(String name) |
Ustawia nazwę tego dostawcy magazynu kluczy. |
public abstract String getName() |
Pobiera nazwę tego dostawcy magazynu kluczy. |
Nowe lub przeciążone metody w klasie SQLServerPreparedStatement
| Name | 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) |
Te metody są przeciążane argumentem precyzji, skalowania lub obiema wartościami, aby wspierać funkcję Always Encrypted dla konkretnych typów danych, które wymagają informacji dotyczących precyzji i skali. |
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) |
Te metody dodają obsługę funkcji Always Encrypted dla typów danych money, smallmoney, uniqueidentifier, datetime i smalldatetime. Istniejąca setTimestamp() metoda służy do wysyłania wartości parametrów do zaszyfrowanej kolumny datetime2. W przypadku zaszyfrowanych kolumn datetime i smalldatetime użyj nowych metod setDateTime() i setSmallDateTime() odpowiednio. |
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) |
Ustawia nazwany parametr na daną wartość typu java. Jeśli wartość logiczna forceEncrypt jest ustawiona na true, parametr zapytania zostanie ustawiony tylko wtedy, gdy wyznaczona kolumna jest zaszyfrowana, a funkcja Always Encrypted jest włączona w połączeniu lub w instrukcji .Jeśli wartość logiczna forceEncrypt jest ustawiona na wartość false, sterownik nie wymusi szyfrowania parametrów. |
Nowe lub przeciążone metody w klasie SQLServerCallableStatement
| Name | 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) |
Te metody są przeciążone przez argumenty precyzji i/lub skali, aby obsługiwać mechanizm Always Encrypted dla określonych typów danych wymagających tych informacji. |
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) |
Te metody dodają obsługę funkcji Always Encrypted dla typów danych money, smallmoney, uniqueidentifier, datetime i smalldatetime. Istniejąca setTimestamp() metoda służy do wysyłania wartości parametrów do zaszyfrowanej kolumny datetime2. W przypadku zaszyfrowanych kolumn datetime i smalldatetime użyj nowych metod setDateTime() i setSmallDateTime() odpowiednio. |
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) |
Ustawia nazwany parametr na daną wartość Java. Jeśli wartość logiczna forceEncrypt jest ustawiona na wartość true, parametr zapytania zostanie ustawiony tylko wtedy, gdy wyznaczona kolumna jest zaszyfrowana, a funkcja Always Encrypted jest włączona w połączeniu lub w instrukcji . Jeśli wartość logiczna forceEncrypt jest ustawiona na wartość false, sterownik nie wymusi szyfrowania parametrów. |
Nowe lub przeciążone metody w klasie SQLServerResultSet
| Name | 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) |
Te metody dodają obsługę funkcji Always Encrypted dla typów danych money, smallmoney, uniqueidentifier, datetime i smalldatetime. Istniejąca updateTimestamp() metoda jest używana do aktualizowania zaszyfrowanych kolumn datetime2. W przypadku zaszyfrowanych kolumn datetime i smalldatetime użyj nowych metod updateDateTime() i updateSmallDateTime() odpowiednio. |
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 nazwaną kolumnę do podanej wartości języka Java. Jeśli liczba logiczna forceEncrypt jest ustawiona na true, kolumna będzie ustawiona tylko wtedy, gdy jest zaszyfrowana, a funkcja Always Encrypted jest włączona na połączeniu lub poleceniu.Jeśli wartość logiczna forceEncrypt jest ustawiona na wartość false, sterownik nie wymusi szyfrowania parametrów. |
Nowe typy w klasie microsoft.sql.Types
| Name | Description |
|---|---|
| DATETIME, SMALLDATETIME, MONEY, SMALLMONEY, GUID | Użyj tych typów jako docelowych typów SQL podczas wysyłania wartości parametrów do zaszyfrowanych kolumn datetime, smalldatetime, money, smallmoney, uniqueidentifier przy użyciu metod interfejsu API. |
SQLServerStatementColumnEncryptionSetting (wyliczenie Enum)
Określa sposób wysyłania i odbierania danych podczas odczytywania i zapisywania zaszyfrowanych kolumn. W zależności od konkretnego zapytania wpływ na wydajność może zostać zmniejszony, pomijając przetwarzanie sterownika Always Encrypted, gdy są używane nieszyfrowane kolumny. Tych ustawień nie można używać do pomijania szyfrowania i uzyskiwania dostępu do danych w postaci zwykłego tekstu.
Składnia:
Public enum SQLServerStatementColumnEncryptionSetting
Członków:
| Name | Description |
|---|---|
| UżyjUstawieniaPołączenia | Określa, że polecenie powinno być domyślne dla ustawienia Always Encrypted w parametrach połączenia. |
| Włączona | Włącza funkcję Always Encrypted dla zapytania. |
| TylkoZestawWyników | Określa, że tylko wyniki polecenia powinny być przetwarzane przez procedurę Always Encrypted w sterowniku. Użyj tej wartości, gdy polecenie nie ma parametrów, które wymagają szyfrowania. |
| Disabled | Wyłącza funkcję Always Encrypted dla zapytania. |
Dodano ustawienie poziomu instrukcji dla AE do klasy SQLServerConnection i klasy SQLServerConnectionPoolProxy. Następujące metody w tych klasach są przeciążone nowym ustawieniem.
| Name | Description |
|---|---|
public Statement createStatement(int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Tworzy obiekt Statement, który generuje obiekty ResultSet z konkretnym typem, współbieżnością, utrzymywaniem i ustawieniem szyfrowania kolumn. |
public CallableStatement prepareCall(String sql, int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Tworzy obiekt CallableStatement z danym ustawieniem szyfrowania kolumny, które spowoduje wygenerowanie obiektów ResultSet z danym typem, współbieżnością i możliwością przechowywania. |
public PreparedStatement prepareStatement(String sql, int autogeneratedKeys, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Tworzy obiekt PreparedStatement z danym ustawieniem szyfrowania kolumny, które ma możliwość pobierania automatycznie wygenerowanych kluczy. |
public PreparedStatement prepareStatement(String sql, String[] columnNames, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Tworzy obiekt PreparedStatement z danym ustawieniem szyfrowania kolumny, które spowoduje wygenerowanie obiektów ResultSet z podanymi nazwami kolumn. |
public PreparedStatement prepareStatement(String sql, int[] columnIndexes, SQLServerStatementColumnEncryptionSetting stmtColEncSetting |
Tworzy obiekt PreparedStatement z danym ustawieniem szyfrowania kolumny, które spowoduje wygenerowanie obiektów ResultSet z podanymi indeksami kolumn. |
public PreparedStatement prepareStatement(String sql, int nType, int nConcur, int nHold, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
Tworzy obiekt PreparedStatement z danym ustawieniem szyfrowania kolumny, które spowoduje wygenerowanie obiektów ResultSet o danym typie, współbieżności i możliwości przechowywania. |
Uwaga / Notatka
Jeśli funkcja Always Encrypted jest wyłączona dla zapytania, a zapytanie ma parametry, które muszą być zaszyfrowane (parametry odpowiadające zaszyfrowanym kolumnom), zapytanie zakończy się niepowodzeniem.
Jeśli funkcja Always Encrypted jest wyłączona dla zapytania, a zapytanie zwraca wyniki z zaszyfrowanych kolumn, zapytanie zwróci zaszyfrowane wartości. Zaszyfrowane wartości będą miały typ danych varbinary.