データベース接続暗号化(SpringBoot+jasypt暗号化)
9427 ワード
SpringBootプロジェクトでは、接続データベースのパスワードをプロファイルに明示的に配置することがよくあります.セキュリティは低く、特にセキュリティに対する要求が高い企業もあるので、パスワードを暗号化する方法を考えています.
jasyptは、Spring Bootプロジェクトに迅速に統合され、自動構成が提供され、非常に簡単に使用できる簡単な復号化Javaライブラリです.
手順は次のとおりです.1)maven依存導入 2)再プロファイルアプリケーション.yml 3)試験例で暗号化されたスプーンを生成 4)上記で生成したスプーンをアプリケーション.yml構成に追加します.ここでは主にデータベースパスワードの暗号文をENCで識別します 5)データベースに接続できるプログラムを実行します.コンフィギュレーション・ファイルには、特定の接続情報が表示されず、比較的安全です.
補足:APIインタフェースによるデータ暗号化は、インタフェースによって伝達されるデータを暗号化することもできます.バックエンドはデータを転送するインタフェースを暗号化し、対応する復号インタフェースを提供し、フロントエンドはデータを転送するインタフェースを呼び出すと同時に、復号インタフェースを呼び出すことで、データの暗号復号を実現する.このような利点は、フロントエンドが見たいデータだけを見ることができ、データが比較的安全であることです.
jasyptは、Spring Bootプロジェクトに迅速に統合され、自動構成が提供され、非常に簡単に使用できる簡単な復号化Javaライブラリです.
手順は次のとおりです.
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.17</version>
</dependency>
jasypt:
encryptor:
password: 123456 # jasypt
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.junit.jupiter.api.Test;
public class TestEncryptorTest {
@Test
public void test() {
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword("123456");//yml key
String url = encryptor.encrypt("jdbc:mysql://localhost:3306/test?createDatabaseIfNotExist=true");
String name = encryptor.encrypt("root");
String password = encryptor.encrypt("root");
String url1 = encryptor.decrypt(url);
String name1 = encryptor.decrypt(name);
String password1 = encryptor.decrypt(password);
System.out.println("url :"+url);
System.out.println("url :"+url1);
System.out.println("username :"+name);
System.out.println("username :"+name1);
System.out.println("password :"+password);
System.out.println("password :"+password1);
}
}
/* :
url :1L+DJGp6GKaSjXWQDGafQdjPrxEvOebftER88SsTAux/zJsaWSHs4K61s7QNyBwdKd0UEYVmnNaFtVMXHkj7nFh8UlvpmvgmtPSscC+Qeww=
url :jdbc:mysql://localhost:3306/test?createDatabaseIfNotExist=true
username :TeRrFJqzQGcsuIsQ20ANsg==
username :root
password :2HhGPhzjfTCdPiLGBZuY53DIHAMNTNRe
password :root
*/
spring:
datasource:
url: ENC(1L+DJGp6GKaSjXWQDGafQdjPrxEvOebftER88SsTAux/zJsaWSHs4K61s7QNyBwdKd0UEYVmnNaFtVMXHkj7nFh8UlvpmvgmtPSscC+Qeww=)
username: ENC(TeRrFJqzQGcsuIsQ20ANsg==)
password: ENC(2HhGPhzjfTCdPiLGBZuY53DIHAMNTNRe)
補足:APIインタフェースによるデータ暗号化は、インタフェースによって伝達されるデータを暗号化することもできます.バックエンドはデータを転送するインタフェースを暗号化し、対応する復号インタフェースを提供し、フロントエンドはデータを転送するインタフェースを呼び出すと同時に、復号インタフェースを呼び出すことで、データの暗号復号を実現する.このような利点は、フロントエンドが見たいデータだけを見ることができ、データが比較的安全であることです.