개발자로부터 내 데이터베이스 비밀번호를 보호하세요

개발자로부터 내 데이터베이스 비밀번호를 보호하세요

내 직장에서 데이터베이스를 사용하는 애플리케이션이 있습니다. 현재는 인증을 위해 사용자 이름 비밀번호를 사용하고 있습니다(신뢰할 수 있는 IP 연결을 사용할 수도 있음). 우리는 애플리케이션과 데이터베이스가 상주하는 특정 시스템에 대한 IP로 수행할 이동 때문에 신뢰를 사용하고 싶지 않습니다.

현재는 구성 파일에 설정된 사용자 이름/비밀번호를 애플리케이션에 적용하기 때문에 시스템 관리자인 내 상사와 그의 부하 직원 6명 외에도 개발자들이 비밀번호를 알고 있습니다(내가 최고임). 관리자는 교대로 애플리케이션을 유지 관리하고 배포합니다. 따라서 비밀번호를 안전하게 유지하는 데 따른 위험은 우리 모두에게 있습니다.

내가 뭘 한거지 최근 우리는 비밀번호를 더 자주 변경하기 시작했지만 이제는 이 비밀번호를 나만 알고 싶습니다. 상사의 지시에 따라 데이터베이스에 대해 직접 쿼리를 실행해야 하는 사람은 나뿐이다. 내 상사조차도 그것을 머리 속으로 알 필요가 없습니다(아마도 내가 부재 중이고 기록에 남아 있을 수도 있습니다). 나는 아래와 같이 생각했습니다.

  1. 애플리케이션에서만 읽을 수 있는 텍스트 파일을 서버에 생성합니다.
  2. 개발자가 일반 텍스트 비밀번호에 대해 이 파일을 참조하도록 애플리케이션을 코딩하도록 하십시오.
  3. 애플리케이션은 이를 사용하여 로그인합니다.

나는 개발자가 암호를 수행하는 코드를 응용 프로그램에 저장하면 개발자가 여전히 암호를 공개할 수 있을 것이라고 생각합니다(그들이 사악하다는 것이 아니라 우리는 집단적 위험을 집단적으로 합리화하려고 노력하고 있습니다).

질문 이 접근 방식을 완벽하게 하는 더 좋은 방법이 있습니까? 이 방법 외에 사용할 수 있는 다른 방법도 있습니까?

플랫폼: Linux(Ubuntu 서버), PostgreSQL, Java

답변1

오래된 유닉스/리눅스 방식은 다음과 같습니다:

vi /etc/my_app.conf
database_ip=192.168.123.123
database_instance=db1
database_user=my_app
database_password=secret_in_plaintext

이것이 문제를 즉시 해결하지는 않지만... 나중에는 정확히 동일한 애플리케이션 바이너리(war/jar)를 배포할 수 있습니다.다른애플리케이션 서버(프로덕션, 사전 프로덕션, 테스트, 개발) 이들은 모두 서로 다른 데이터베이스(prod, pre, test, dev)를 가질 수 있습니다. 이렇게 하면 결국 개발자는 프로덕션에 전혀 액세스할 필요가 없게 됩니다.

관련 정보