データベース接続暗号化(SpringBoot+jasypt暗号化)


SpringBootプロジェクトでは、接続データベースのパスワードをプロファイルに明示的に配置することがよくあります.セキュリティは低く、特にセキュリティに対する要求が高い企業もあるので、パスワードを暗号化する方法を考えています.
 jasyptは、Spring Bootプロジェクトに迅速に統合され、自動構成が提供され、非常に簡単に使用できる簡単な復号化Javaライブラリです.
手順は次のとおりです.
  • 1)maven依存導入
  • <dependency>
      <groupId>com.github.ulisesbocchio</groupId>
      <artifactId>jasypt-spring-boot-starter</artifactId>
      <version>1.17</version>
    </dependency>
    
  • 2)再プロファイルアプリケーション.yml
  • jasypt:
      encryptor:
        password: 123456       # jasypt     
    
  • 3)試験例で暗号化されたスプーンを生成
  • 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
     */
    
  • 4)上記で生成したスプーンをアプリケーション.yml構成に追加します.ここでは主にデータベースパスワードの暗号文をENCで識別します
  • spring:
      datasource:
        url: ENC(1L+DJGp6GKaSjXWQDGafQdjPrxEvOebftER88SsTAux/zJsaWSHs4K61s7QNyBwdKd0UEYVmnNaFtVMXHkj7nFh8UlvpmvgmtPSscC+Qeww=)
        username: ENC(TeRrFJqzQGcsuIsQ20ANsg==)
        password: ENC(2HhGPhzjfTCdPiLGBZuY53DIHAMNTNRe)
    
  • 5)データベースに接続できるプログラムを実行します.コンフィギュレーション・ファイルには、特定の接続情報が表示されず、比較的安全です.

  • 補足:APIインタフェースによるデータ暗号化は、インタフェースによって伝達されるデータを暗号化することもできます.バックエンドはデータを転送するインタフェースを暗号化し、対応する復号インタフェースを提供し、フロントエンドはデータを転送するインタフェースを呼び出すと同時に、復号インタフェースを呼び出すことで、データの暗号復号を実現する.このような利点は、フロントエンドが見たいデータだけを見ることができ、データが比較的安全であることです.