Play2.5 + mariadb + Ebean으로 DB 암호화
9884 단어 EbeanPlayFramework자바mariadb
DB 암호화 유형
열별 암호화
Ebean에서는 이쪽 밖에 할 수 없는 모습
테이블당 암호화
이 기능은 mariadb에 표준으로 붙어 있지만, 아마 Play나 Ebean에서는 조작할 수 없다
! ?
모든 코드
사전 설정
conf/application.conf
일부 발췌
application.confdb {
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
# https://www.playframework.com/documentation/latest/Developing-with-the-H2-Database
default.driver = org.mariadb.jdbc.Driver
default.url = "jdbc:mariadb://localhost:3306/playdb"
default.username = play
default.password = "play"
# You can turn on SQL logging for any datasource
# https://www.playframework.com/documentation/latest/Highlights25#Logging-SQL-statements
#default.logSql=true
}
ebean {
default = ["models.entity.*"]
}
build.sbt
build.sbtname := """encryptdb"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
"org.mariadb.jdbc" % "mariadb-java-client" % "1.4.4"
)
project/plugins.sbt
다음을 추가
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "3.0.0")
conf/ebean.properties
새로 만들고 다음을 쓰고 아래에 설명 된 BasicEncryptKeyManager의 위치를 지정합니다.
encryptKeyManager = models.security.BasicEncryptKeyManager
encryptKeyManager = "models.security.BasicEncryptKeyManager"
그리고 더블 쿼트로 둘러싸면 움직이지 않으므로주의
암호화 준비
models.entity
@Encrypted이있는 열이 암호화됨
User.javapackage models.entity;
import com.avaje.ebean.annotation.Encrypted;
import javax.persistence.Entity;
/**
* ユーザー情報
*
* @author
*
*/
@Entity
public class User extends BaseEntity {
/* ユーザー名 */
@Encrypted
public String name;
/* メールアドレス */
@Encrypted
public String mail;
/* パスワード */
@Encrypted
public String password;
public static Finder<Long, User> finder = new Finder<Long, User>(User.class);
}
조류에서 ls. 키 크리티
BasicEncryptKeyManager
BasicEncryptKeyManagerpackage models.security;
import com.avaje.ebean.config.EncryptKey;
import com.avaje.ebean.config.EncryptKeyManager;
public class BasicEncryptKeyManager implements EncryptKeyManager {
@Override
public EncryptKey getEncryptKey(String tableName, String columnName) {
return new CustomEncryptKey(tableName, columnName);
}
@Override
public void initialise() {
// Do nothing (yet)
}
}
CustomEncryptKey
CustomEncryptKeypackage models.security;
import com.avaje.ebean.config.EncryptKey;
public class CustomEncryptKey implements EncryptKey {
private String tableName;
private String columnName;
public CustomEncryptKey(String tableName, String columnName) {
this.tableName = tableName;
this.columnName = columnName;
}
@Override
public String getStringValue() {
return play.Configuration.root().getString("application.secret") + "::" + this.tableName
+ "::" + this.columnName;
}
}
확인
상기까지 준비는 종료
mariadb에 붙어 온 HeidiSQL로 확인해 본다
HeidiSQL
보이지 않는다!
참고
htps //w w.ぁ yf 라메를 rk. 코m/도쿠멘 타치온/2.5. x / 그럼 에베안
htps : // 아 r ゔ ぇ - ゔ ぁ ぇ - rg. 기주 b. 이오 / 에베안 / 엔 크립 치온. HTML
h tp : / / s tac ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 15800453 / p ぁ y-f 라메 rk 2-1- ゔ ぁ 에베 앤 - cryp d
Reference
이 문제에 관하여(Play2.5 + mariadb + Ebean으로 DB 암호화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sink66/items/a508881d0a09374f94d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
conf/application.conf
일부 발췌
application.conf
db {
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
# https://www.playframework.com/documentation/latest/Developing-with-the-H2-Database
default.driver = org.mariadb.jdbc.Driver
default.url = "jdbc:mariadb://localhost:3306/playdb"
default.username = play
default.password = "play"
# You can turn on SQL logging for any datasource
# https://www.playframework.com/documentation/latest/Highlights25#Logging-SQL-statements
#default.logSql=true
}
ebean {
default = ["models.entity.*"]
}
build.sbt
build.sbt
name := """encryptdb"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
"org.mariadb.jdbc" % "mariadb-java-client" % "1.4.4"
)
project/plugins.sbt
다음을 추가
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "3.0.0")
conf/ebean.properties
새로 만들고 다음을 쓰고 아래에 설명 된 BasicEncryptKeyManager의 위치를 지정합니다.
encryptKeyManager = models.security.BasicEncryptKeyManager
encryptKeyManager = "models.security.BasicEncryptKeyManager"
그리고 더블 쿼트로 둘러싸면 움직이지 않으므로주의
암호화 준비
models.entity
@Encrypted이있는 열이 암호화됨
User.javapackage models.entity;
import com.avaje.ebean.annotation.Encrypted;
import javax.persistence.Entity;
/**
* ユーザー情報
*
* @author
*
*/
@Entity
public class User extends BaseEntity {
/* ユーザー名 */
@Encrypted
public String name;
/* メールアドレス */
@Encrypted
public String mail;
/* パスワード */
@Encrypted
public String password;
public static Finder<Long, User> finder = new Finder<Long, User>(User.class);
}
조류에서 ls. 키 크리티
BasicEncryptKeyManager
BasicEncryptKeyManagerpackage models.security;
import com.avaje.ebean.config.EncryptKey;
import com.avaje.ebean.config.EncryptKeyManager;
public class BasicEncryptKeyManager implements EncryptKeyManager {
@Override
public EncryptKey getEncryptKey(String tableName, String columnName) {
return new CustomEncryptKey(tableName, columnName);
}
@Override
public void initialise() {
// Do nothing (yet)
}
}
CustomEncryptKey
CustomEncryptKeypackage models.security;
import com.avaje.ebean.config.EncryptKey;
public class CustomEncryptKey implements EncryptKey {
private String tableName;
private String columnName;
public CustomEncryptKey(String tableName, String columnName) {
this.tableName = tableName;
this.columnName = columnName;
}
@Override
public String getStringValue() {
return play.Configuration.root().getString("application.secret") + "::" + this.tableName
+ "::" + this.columnName;
}
}
확인
상기까지 준비는 종료
mariadb에 붙어 온 HeidiSQL로 확인해 본다
HeidiSQL
보이지 않는다!
참고
htps //w w.ぁ yf 라메를 rk. 코m/도쿠멘 타치온/2.5. x / 그럼 에베안
htps : // 아 r ゔ ぇ - ゔ ぁ ぇ - rg. 기주 b. 이오 / 에베안 / 엔 크립 치온. HTML
h tp : / / s tac ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 15800453 / p ぁ y-f 라메 rk 2-1- ゔ ぁ 에베 앤 - cryp d
Reference
이 문제에 관하여(Play2.5 + mariadb + Ebean으로 DB 암호화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sink66/items/a508881d0a09374f94d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package models.entity;
import com.avaje.ebean.annotation.Encrypted;
import javax.persistence.Entity;
/**
* ユーザー情報
*
* @author
*
*/
@Entity
public class User extends BaseEntity {
/* ユーザー名 */
@Encrypted
public String name;
/* メールアドレス */
@Encrypted
public String mail;
/* パスワード */
@Encrypted
public String password;
public static Finder<Long, User> finder = new Finder<Long, User>(User.class);
}
package models.security;
import com.avaje.ebean.config.EncryptKey;
import com.avaje.ebean.config.EncryptKeyManager;
public class BasicEncryptKeyManager implements EncryptKeyManager {
@Override
public EncryptKey getEncryptKey(String tableName, String columnName) {
return new CustomEncryptKey(tableName, columnName);
}
@Override
public void initialise() {
// Do nothing (yet)
}
}
package models.security;
import com.avaje.ebean.config.EncryptKey;
public class CustomEncryptKey implements EncryptKey {
private String tableName;
private String columnName;
public CustomEncryptKey(String tableName, String columnName) {
this.tableName = tableName;
this.columnName = columnName;
}
@Override
public String getStringValue() {
return play.Configuration.root().getString("application.secret") + "::" + this.tableName
+ "::" + this.columnName;
}
}
상기까지 준비는 종료
mariadb에 붙어 온 HeidiSQL로 확인해 본다
HeidiSQL
보이지 않는다!
참고
htps //w w.ぁ yf 라메를 rk. 코m/도쿠멘 타치온/2.5. x / 그럼 에베안
htps : // 아 r ゔ ぇ - ゔ ぁ ぇ - rg. 기주 b. 이오 / 에베안 / 엔 크립 치온. HTML
h tp : / / s tac ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 15800453 / p ぁ y-f 라메 rk 2-1- ゔ ぁ 에베 앤 - cryp d
Reference
이 문제에 관하여(Play2.5 + mariadb + Ebean으로 DB 암호화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sink66/items/a508881d0a09374f94d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Play2.5 + mariadb + Ebean으로 DB 암호화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sink66/items/a508881d0a09374f94d0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)