database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 8829 게시물 읽기
No. 8829
특정 컬럼 암호화
작성자
찬(redstorm)
작성일
2011-06-13 16:35
조회수
9,799

사용자 계정 관련 DB가 있습니다.

이 DB에 접속할 수 있는 사용자면 모든 계정의 정보.. 곧 비밀번호도 노출이 되는데요

노출되지 않도록 설정하는 방법이 있나요?

******* 와 같이 하는 방법이라거나... 테이블을 열었을 때 해당 컬럼만 보이지 않게 하는 방법이 있다면 가르쳐 주시면 감사하겠습니다.

이 글에 대한 댓글이 총 1건 있습니다.

PostgreSQL에서는 칼럼 속성으로 '이 칼럼은 암호화된 칼럼이다' 이런 것이 없습니다. 

그래서, 자료를 입력할 때, 이미 응용프로그램 차원에서 자료를 암호화 해서 입력합니다. 

물론 암호화 관련 함수들을 제공해서, 쿼리문으로 암호화된 자료를 입력할 수도 있겠죠.

 

대표적인 함수들로는 소스 contrib 디렉토리 안에 있는 pgcrypto 모듈을 이용하는 함수들인데, 

여느 암호화/복호화 사용법과 크게 틀리지 않습니다. 

그것을 이용하는 것이 제일 안전한 방법 같아 보이고요. 

즉, 이미 테이블 내에 그 자료는 암호화 되어있다는 뜻입니다. pg_dump를 해도 복호화 방식이 데이터베이스내에 없다면, 응용 프로그램의 복호화 처리를 살펴보지 않는 이상, 원래 자료 내용은 누구도 알 수 없다는 뜻이죠. 

 

실무로 돌아가서 비밀번호나 주민등록번호의 경우, 완벽하게 개인의 인증용으로 사용되는 경우라면, 

DB 입력 시, 이미 그 자료는 어떤 특정 방식에 의해서 자료를 변조시켜버립니다. 그리고는 그 변조된 자료는 원래값을 알지 못하는 이상 절대로 원래값을 알 수 없겠끔(복호화가 불가능하겠끔) 만듭니다. 

대표적인 방식이 md5 겠죠.

물론 md5 값을 만들때는 유니크한 값을 먼저 만들어야합니다.

예를 들면, (회원번호(PK) + 회원이 입력한 비밀번호 + 가입시간) 라는 유니크한 값을 가지고 md5 값으로 바꾸고 그것을 비밀번호 칼럼에 저장해 둡니다. 

그리고는 비밀번호 체크할 때는 똑 같은 방식으로 다시 md5 값을 구해서 DB에 저장된 값과 같은가?를 체크합니다. 

주민등록번호도 마찬가지 방식을 택합니다. 

그러면, DB 전체 자료가 누출된다 하더라도, 일단 심각한 피해를 막을 수 있습니다. 

(정말 깔끔한 방법은 pgcrypto 모듈의 함수로, 키 인증 방식을 사용하는 것이 제일 낫겠죠)

 

----------------

이런 방식이 아니고, 

좀 다른 방식으로 접근 하는 것은, 

DB 접근 사용자를 분리하고, 

해당 테이블의 뷰를 만들고, 

관리자 권한은 해당 테이블을 조작할 수 있고, 

일반 사용자는 해당 뷰만 볼 수 있고, 

이런식으로 막기도 합니다. 

 

제가 추천하는 방식은 당연히 전자입니다.

사용자 비밀번호는 그 누구도 몰라야한다!

DB 관리자가 초기화는 할 수 있어도 그 사용자의 비밀번호를 알아내는 일은 없어야한다!

그래야, 훗날 이 부분 때문에 빚어지는 온갖 문제에서 안전할 수 있습니다.

 

 

김상기(ioseph)님이 2011-06-15 01:50에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
8832질의에 대한 처리과정에 대한 질문입니다. [1]
청학
2011-07-20
7756
8831윈도우에서 데이터 복구시에 오류메세지 입니다. [1]
안민호
2011-07-19
8554
8830Vacuum analyze시 out of memory 문제 해결(4411번)
이기정
2011-06-24
8300
8829특정 컬럼 암호화 [1]
2011-06-13
9799
8828형 변환자 목록 [1]
이기정
2011-06-10
9238
8827vacuum 궁금사항입니다. [3]
이창로
2011-06-09
10116
8826postgre 에서 원격의 mysql 서버에 DBlink 걸수 있나요?
나종현
2011-06-08
8923
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.026초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다