JDBC 드라이버에 대해 Always Encrypted API 참조
Always Encrypted를 사용하면 클라이언트가 클라이언트 애플리케이션의 중요한 데이터를 암호화하고 암호화 키를 서버에 표시하지 않을 수 있습니다. 클라이언트 컴퓨터에 설치된 Always Encrypted 지원 드라이버가 클라이언트 애플리케이션의 중요한 데이터를 자동으로 암호화하고 암호 해독하여 이 기능을 구현합니다.
드라이버는 데이터를 SQL 서버로 전달하기 전에 중요한 열의 데이터를 암호화하고 애플리케이션에 대한 의미 체계가 유지되도록 자동으로 쿼리를 다시 작성합니다. 마찬가지로, 드라이버는 암호화된 데이터베이스 열에 저장되고 쿼리 결과에 포함된 데이터베이스 열을 투명하게 암호 해독합니다. 자세한 내용은 Always Encrypted(데이터베이스 엔진) 및 JDBC Driver로 Always Encrypted 사용을 참조하세요.
참고 항목
Always Encrypted는 SQL Server용 Microsoft JDBC Driver 6.0 이상과 SQL Server 2016 이상을 함께 사용할 때 지원됩니다.
Always Encrypted API 참조
상시 암호화를 사용하는 클라이언트 애플리케이션에서 사용하기 위해 JDBC 드라이버 API에 몇 가지 새로운 기능이 추가되고 수정되었습니다.
SQLServerConnection 클래스
속성 | 설명 |
---|---|
새 연결 문자열 키워드: columnEncryptionSetting |
columnEncryptionSetting=Enabled로 설정하면 연결에 대해 상시 암호화 기능이 사용되고 columnEncryptionSetting=Disabled로 설정하면 상시 암호화 기능이 사용되지 않습니다. 허용되는 값은 사용/사용 안 함입니다. 기본값은 사용 안 함입니다. |
새 연결 문자열 키워드(keyword):(MS JDBC 7.4 이상) keyVaultProviderClientId keyVaultProviderClientKey |
keyVaultProviderClientId=<ClientID>;keyVaultProviderClientKey=<ClientKey> SQLServerColumnEncryptionAzureKeyVaultProvider를 등록하고 ClientID 및 ClientKey 값을 사용하여 Azure Key Vault에서 열 마스터 키를 검색합니다. |
새 메서드:public static void setColumnEncryptionTrustedMasterKeyPaths(Map<String, List\<String>> trustedKeyPaths) public static void updateColumnEncryptionTrustedMasterKeyPaths(String server, List\<String> trustedKeyPaths) public static void removeColumnEncryptionTrustedMasterKeyPaths(String server) |
데이터베이스 서버에 대해 신뢰할 수 있는 키 경로 목록을 설정/업데이트/제거할 수 있습니다. 애플리케이션 쿼리를 처리하는 동안 드라이버에서 목록에 없는 키 경로를 수신하면 쿼리가 실패합니다. 이 속성은 손상된 서버가 가짜 키 경로를 제공하여 키 저장소 자격 증명을 유출할 수 있는 보안 공격에 대해 강화된 보호를 제공합니다. |
새 메서드:public static Map<String, List\<String>> getColumnEncryptionTrustedMasterKeyPaths() |
데이터베이스 서버에 대한 신뢰할 수 있는 키 경로 목록을 반환합니다. |
새 메서드:public static void registerColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders) |
사용자 지정 키 저장소 공급자를 등록할 수 있습니다. 키 저장소 공급자 이름을 키 저장소 공급자 구현에 매핑하는 사전입니다. JVM 키 저장소를 사용하려면 JVM 키 저장소 자격 증명으로 SQLServerColumnEncryptionJVMKeyStoreProvider 개체를 인스턴스화하고 드라이버에 등록해야 합니다. 이 공급자의 이름은 'MSSQL_JVM_KEYSTORE'여야 합니다. Azure Key Vault 저장소를 사용하려면 SQLServerColumnEncryptionAzureKeyStoreProvider 개체를 인스턴스화하고 드라이버에 등록해야 합니다. 이 공급자의 이름은 'AZURE_KEY_VAULT'여야 합니다. |
새 메서드:public static void unregisterColumnEncryptionKeyStoreProviders (Map\<String, SQLServerColumnEncryptionKeyStoreProvider> clientKeyStoreProviders) |
키 저장소 공급자 이름을 키 저장소 공급자 구현에 매핑하는 사전을 지워 모든 사용자 지정 키 저장소 공급자의 등록을 취소할 수 있습니다. |
public final boolean getSendTimeAsDatetime() |
sendTimeAsDatetime 연결 속성의 설정을 반환합니다. |
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) |
sendTimeAsDatetime 연결 속성의 설정을 수정합니다. |
SQLServerConnectionPoolProxy 클래스
속성 | 설명 |
---|---|
public final boolean getSendTimeAsDatetime() |
sendTimeAsDatetime 연결 속성의 설정을 반환합니다. |
public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue) |
sendTimeAsDatetime 연결 속성의 설정을 수정합니다. |
SQLServerDataSource 클래스
속성 | 설명 |
---|---|
public void setColumnEncryptionSetting(String columnEncryptionSetting) |
데이터 원본 개체에 대해 상시 암호화 기능을 사용하거나 사용하지 않습니다. 기본값은 사용 안 함입니다. |
public String getColumnEncryptionSetting() |
데이터 원본 개체에 대한 상시 암호화 기능 설정을 가져옵니다. |
public void setKeyStoreAuthentication(String keyStoreAuthentication) |
키 저장소를 식별하는 이름을 설정합니다. 지원되는 값은 Java 키 저장소를 식별하기 위한 JavaKeyStorePassword 입니다. 기본값은 null입니다. |
public String getKeyStoreAuthentication() |
데이터 원본 개체에 대한 keyStoreAuthentication 설정의 값을 가져옵니다. |
public void setKeyStoreSecret(String keyStoreSecret) |
Java 키 저장소의 암호를 설정합니다. 키 저장소와 키 암호가 동일해야 합니다. keyStoreAuthentication은 JavaKeyStorePassword를 사용하여 설정해야 합니다. |
public void setKeyStoreLocation(String keyStoreLocation) |
Java 키 저장소의 파일 이름을 포함한 위치를 설정합니다. keyStoreAuthentication은 JavaKeyStorePassword를 사용하여 설정해야 합니다. |
public String getKeyStoreLocation() |
Java 키 저장소에 대한 keyStoreLocation을 검색합니다. |
SQLServerColumnEncryptionJavaKeyStoreProvider 클래스
Java 키 저장소에 대한 키 저장소 공급자 구현입니다. 이 클래스를 사용하면 Jave 키 저장소에 저장된 인증서를 열 마스터 키로 사용할 수 있습니다.
생성자:
속성 | 설명 |
---|---|
public SQLServerColumnEncryptionJavaKeyStoreProvider (String keyStoreLocation, char[] keyStoreSecret) |
Java 키 저장소의 키 저장소 공급자입니다. |
메서드:
속성 | 설명 |
---|---|
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) |
열 암호화 키의 지정된 암호화된 값의 암호를 해독합니다. 암호화된 값은 지정된 키 경로를 포함한 인증서와 지정된 알고리즘을 사용하여 암호화되어야 합니다. 키 경로는 다음 형식 중 하나여야 합니다. Thumbprint:<certificate_thumbprint> Alias:<certificate_alias> (다음을 재정의합니다. SQLServerColumnEncryptionKeyStoreProvider decryptColumnEncryptionKey(String, String, Byte[]).) |
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] plainTextColumnEncryptionKey) |
지정된 키 경로를 포함한 인증서와 지정된 알고리즘을 사용하여 열 암호화 키를 암호화합니다. 키 경로는 다음 형식 중 하나여야 합니다. Thumbprint:<certificate_thumbprint> Alias:<certificate_alias> (다음을 재정의합니다. SQLServerColumnEncryptionKeyStoreProvider encryptColumnEncryptionKey(String, String, Byte[]).) |
public boolean verifyColumnEncryptionKey (String masterKeyPath, boolean allowEnclaveComputations, byte[] signature) |
인증서를 사용하여 열 암호화 키의 서명을 확인합니다. 키 경로는 다음 형식 중 하나여야 합니다. Thumbprint:<certificate_thumbprint> Alias:<certificate_alias> (다음을 재정의합니다. SQLServerColumnEncryptionKeyStoreProvider verifyColumnEncryptionKey(String, boolean, Byte[]).) |
public void setName (String name) |
이 키 저장소 공급자의 이름을 설정합니다. |
public String getName () |
이 키 저장소 공급자의 이름을 가져옵니다. |
SQLServerColumnEncryptionAzureKeyVaultProvider class
Azure Key Vault에 대한 키 저장소 공급자의 구현입니다. 이 클래스를 사용하면 Azure Key Vault에 저장된 키를 열 마스터 키로 사용할 수 있습니다.
생성자:
속성 | 설명 |
---|---|
public SQLServerColumnEncryptionAzureKeyVaultProvider () |
Azure Key Vault를 인증하기 위한 SQLServerColumnEncryptionAzureKeyVaultProvider를 생성합니다. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId) |
토큰을 요청하는 클라이언트의 식별자를 사용하여 Azure Key Vault를 인증하기 위한 SQLServerColumnEncryptionAzureKeyVaultProvider를 생성합니다. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (String clientId, String clientKey) |
토큰을 요청하는 클라이언트의 식별자와 키를 사용하여 Azure Key Vault를 인증하기 위한 SQLServerColumnEncryptionAzureKeyVaultProvider를 생성합니다. |
public SQLServerColumnEncryptionAzureKeyVaultProvider (TokenCredential tokenCredential) |
제공된 TokenCredential을 사용하여 Azure Key Vault를 인증하기 위한 SQLServerColumnEncryptionAzureKeyVaultProvider를 생성합니다. |
메서드:
속성 | 설명 |
---|---|
public byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] encryptedColumnEncryptionKey) |
암호화된 CEK(열 암호화 키)를 암호 해독합니다. 이 암호 해독은 마스터 키 경로에 지정된 비대칭 키를 사용하는 RSA 암호화 알고리즘을 사용하여 수행됩니다. (다음을 재정의합니다. SQLServerColumnEncryptionKeyStoreProvider decryptColumnEncryptionKey(String, String, Byte[]).) |
public byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) |
지정된 열 마스터 키를 지정된 알고리즘에 부여해 열 암호화 키를 암호화합니다. (다음을 재정의합니다. SQLServerColumnEncryptionKeyStoreProvider encryptColumnEncryptionKey(String, String, Byte[]).) |
public void setName (String name) |
이 키 저장소 공급자의 이름을 설정합니다. |
public String getName () |
이 키 저장소 공급자의 이름을 가져옵니다. |
SQLServerKeyVaultAuthenticationCallback 인터페이스
이 인터페이스에는 사용자가 구현할 Azure Key Vault 인증에 대한 한 가지 방법이 포함되어 있습니다.
메서드:
속성 | 설명 |
---|---|
public String getAccessToken(String authority, String resource, String scope); |
메서드도 재정의해야 합니다. 이 메서드는 Azure Key Vault에 대한 액세스 토큰을 가져오는 데 사용됩니다. |
SQLServerColumnEncryptionKeyStoreProvider 클래스
사용자 지정 키 저장소 공급자를 구현하도록 이 클래스를 확장합니다.
속성 | 설명 |
---|---|
SQLServerColumnEncryptionKeyStoreProvider | 모든 키 저장소 공급자의 기본 클래스입니다. 사용자 지정 공급자는 이 클래스에서 파생되어야 하며, 해당 멤버 함수를 재정의한 후 SQLServerConnection을 사용하여 등록해야 합니다. registerColumnEncryptionKeyStoreProviders(). |
메서드:
속성 | 설명 |
---|---|
public abstract byte[] decryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte [] encryptedColumnEncryptionKey) |
열 암호화 키의 지정된 암호화된 값의 암호를 해독하는 기본 클래스 메서드입니다. 암호화된 값은 지정된 키 경로와 지정된 알고리즘이 있는 열 마스터 키를 사용하여 암호화해야 합니다. |
public abstract byte[] encryptColumnEncryptionKey (String masterKeyPath, String encryptionAlgorithm, byte[] columnEncryptionKey) |
지정된 키 경로를 포함한 열 마스터 키와 지정된 알고리즘을 사용하여 열 암호화 키를 암호화하는 기본 클래스 메서드입니다. |
public abstract void setName(String name) |
이 키 저장소 공급자의 이름을 설정합니다. |
public abstract String getName() |
이 키 저장소 공급자의 이름을 가져옵니다. |
SQLServerPreparedStatement 클래스의 새 메서드 또는 오버로드된 메서드
속성 | 설명 |
---|---|
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) |
이러한 메서드는 정밀도 또는 배율 인수 또는 둘 다로 오버로드되어 정밀도 및 크기 조정 정보가 필요한 특정 데이터 형식에 대해 Always Encrypted를 지원합니다. |
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) |
이러한 메서드는 money, smallmoney, uniqueidentifier, datetime 및 smalldatetime 데이터 형식에 Always Encrypted 지원을 추가합니다. 기존 setTimestamp() 메서드는 암호화된 datetime2 열에 매개 변수 값을 보내는 데 사용됩니다. 암호화된 datetime 및 smalldatetime 열에는 새로운 메서드인 setDateTime() 및 setSmallDateTime() 을 각각 사용합니다. |
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) |
명명된 매개 변수를 지정된 java 값으로 설정합니다. 부울 forceEncrypt 을(를) true로 설정하면 지정된 열이 암호화되고 연결 또는 문에서 Always Encrypted를 사용하도록 설정된 경우에만 쿼리 매개 변수가 설정됩니다.부울 forceEncrypt가 false로 설정된 경우 드라이버는 매개 변수에 대한 암호화를 강제로 적용하지 않습니다. |
SQLServerCallableStatement 클래스의 새 메서드 또는 오버로드된 메서드
속성 | 설명 |
---|---|
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) |
이러한 메서드는 정밀도 또는 배율 인수 또는 둘 다로 오버로드되어 정밀도 및 크기 조정 정보가 필요한 특정 데이터 형식에 대해 Always Encrypted를 지원합니다. |
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) |
이러한 메서드는 money, smallmoney, uniqueidentifier, datetime 및 smalldatetime 데이터 형식에 Always Encrypted 지원을 추가합니다. 기존 setTimestamp() 메서드는 암호화된 datetime2 열에 매개 변수 값을 보내는 데 사용됩니다. 암호화된 datetime 및 smalldatetime 열에는 새로운 메서드인 setDateTime() 및 setSmallDateTime() 을 각각 사용합니다. |
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) |
명명된 매개 변수를 지정된 java 값으로 설정합니다. 부울 forceEncrypt를 true로 설정하면 지정 열이 암호화되고 연결 또는 문에서 Always Encrypted를 사용하도록 설정된 경우에만 쿼리 매개 변수가 설정됩니다. 부울 forceEncrypt가 false로 설정된 경우 드라이버는 매개 변수에 대한 암호화를 강제로 적용하지 않습니다. |
SQLServerResultSet 클래스의 새 메서드 또는 오버로드된 메서드
속성 | 설명 |
---|---|
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) |
이러한 메서드는 money, smallmoney, uniqueidentifier, datetime 및 smalldatetime 데이터 형식에 대한 Always Encrypted를 지원하기 위해 추가되었습니다. 기존 updateTimestamp() 메서드는 암호화된 datetime2 열을 업데이트하는 데 사용됩니다. 암호화된 datetime 및 smalldatetime 열에는 새로운 메서드인 updateDateTime() 및 updateSmallDateTime() 을 각각 사용합니다. |
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) |
명명된 열을 지정된 java 값으로 업데이트합니다. 부울 forceEncrypt 을(를) true로 설정하면 열이 암호화되고 연결 또는 문에서 Always Encrypted를 사용하도록 설정된 경우에만 열이 설정됩니다.부울 forceEncrypt 이 false로 설정된 경우 드라이버는 매개 변수에 대한 암호화를 강제로 적용하지 않습니다. |
microsoft.sql.Types 클래스의 새 형식
속성 | 설명 |
---|---|
DATETIME, SMALLDATETIME, MONEY, SMALLMONEY, GUID | setObject()/updateObject() API 메서드를 사용하여 암호화된 datetime, smalldatetime, money, smallmoney, uniqueidentifier 열에 매개 변수 값을 보낼 때 이러한 형식을 대상 SQL 형식으로 사용합니다. |
SQLServerStatementColumnEncryptionSetting 열거형
암호화된 열을 읽고 쓸 때 데이터를 보내고 받는 방법을 지정합니다. 특정 쿼리에 따라 암호화되지 않은 열을 사용하는 경우에 Always Encrypted 드라이버의 처리를 무시하여 성능 영향을 줄일 수 있습니다. 이러한 설정을 사용하여 암호화를 우회하고 일반 텍스트 데이터에 액세스할 수는 없습니다.
구문:
Public enum SQLServerStatementColumnEncryptionSetting
멤버:
속성 | 설명 |
---|---|
UseConnectionSetting | 명령이 연결 문자열에서 Always Encrypted 설정 기본값이 되도록 지정합니다. |
사용 | 쿼리에 Always Encrypted를 사용하도록 설정합니다. |
ResultSetOnly | 명령의 결과만 드라이버의 Always Encrypted 루틴에서 처리되도록 지정합니다. 명령에 암호화가 필요한 매개 변수가 없는 경우 이 값을 사용합니다. |
사용 안 함 | 쿼리에 대해 Always Encrypted를 사용하지 않도록 설정합니다. |
AE에 대한 문 수준 설정은 SQLServerConnection 클래스 및 SQLServerConnectionPoolProxy 클래스에 추가됩니다. 이러한 클래스에서 다음 메서드는 새 설정으로 오버로드됩니다.
속성 | 설명 |
---|---|
public Statement createStatement(int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
지정된 형식, 동시 실행, 유지 기능 및 열 암호화 설정을 사용하여 ResultSet 개체를 생성하는 문 개체를 만듭니다. |
public CallableStatement prepareCall(String sql, int nType, int nConcur, int statementHoldability, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
지정된 형식, 동시 실행 및 유지 기능을 사용하여 ResultSet 개체를 생성하는 지정된 열 암호화 설정을 사용하여 CallableStatement 개체를 만듭니다. |
public PreparedStatement prepareStatement(String sql, int autogeneratedKeys, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
자동 생성된 키를 검색하는 기능이 있는 지정된 열 암호화 설정을 사용하여 PreparedStatement 개체를 만듭니다. |
public PreparedStatement prepareStatement(String sql, String[] columnNames, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
지정된 열 이름을 사용하여 ResultSet 개체를 생성하는 지정된 열 암호화 설정을 사용하여 PreparedStatement 개체를 만듭니다. |
public PreparedStatement prepareStatement(String sql, int[] columnIndexes, SQLServerStatementColumnEncryptionSetting stmtColEncSetting |
지정된 열 인덱스를 사용하여 ResultSet 개체를 생성하는 지정된 열 암호화 설정을 사용하여 PreparedStatement 개체를 만듭니다. |
public PreparedStatement prepareStatement(String sql, int nType, int nConcur, int nHold, SQLServerStatementColumnEncryptionSetting stmtColEncSetting) |
지정된 형식, 동시 실행 및 유지 기능을 사용하여 ResultSet 개체를 생성하는 지정된 열 암호화 설정을 사용하여 PreparedStatement 개체를 만듭니다. |
참고 항목
쿼리에 대해 Always Encrypted를 사용하지 않도록 설정하고 쿼리에 암호화해야 하는 매개 변수(암호화된 열에 해당하는 매개 변수)가 있는 경우 쿼리가 실패합니다.
쿼리에 대해 Always Encrypted를 사용할 수 없으며 쿼리가 암호화된 열의 결과를 반환하는 경우 쿼리는 암호화된 값을 반환합니다. 암호화된 값은 varbinary 데이터 형식입니다.