2011-10-18 5 views
6

JBoss 및 Linux에서 실행되는 Java 웹 응용 프로그램이 있습니다. 프로덕션 환경 데이터베이스 연결 매개 변수는 프로덕션 환경의 응용 프로그램 서버에만있는 구성 파일에서 가져옵니다. 해당 설정 파일은 응용 프로그램을 실행하는 사용자 ID (해당 사용자 appuser에게 보냅니다)에서만 읽을 수 있으며 프로덕션 환경 서버에 로그인 할 수있는 사용자와 appuser에게 sudo는 운영 팀의 구성원입니다. 프로덕션 환경 자체는 다른 모든 환경에서 차단됩니다.프로덕션 환경에서 비밀번호 보호

더 안전하게 만들고 싶습니다. 특히 운영 팀이 데이터베이스 연결 암호 및 현재 구성 파일에있는 다른 키를 읽지 못하도록하고 싶습니다.

명심해야 할 또 다른 요소는 운영 팀이 응용 프로그램을 작성하고 배포해야한다는 것입니다.

옵션은 무엇입니까? 이 솔루션은 응용 프로그램을 수동으로 다시 시작할뿐만 아니라 OS가 재부팅되는 경우 응용 프로그램을 자동으로 시작하도록 지원해야합니다.

업데이트

솔루션 나는 (대략 1 단계로 변환 그의 제안에 대한 아담 스키에 팁) 지금 조사하고 있습니다 :

  1. 가 사용자에게 setuid을하는 래퍼 실행 파일을 쓰기 응용 프로그램을 시작/중지하고 구성 파일과 JBoss 디렉토리 트리의 모든 것을 소유합니다.

  2. 빌드 후 WAR에 서명하려면 jarsigner을 사용하십시오. WAR 구축은 개발을 통해 이루어질 것입니다. setuid 랩퍼는 WAR가 변경되지 않았 음을 확인하면서 서명을 검증합니다.

  3. 서명 된 WAR 만 배포하도록 배포 프로세스를 변경하십시오. setuid 래퍼는 WAR를 JBoss 배포 디렉토리의 특정 위치로 옮길 수도 있습니다.

    http://wiki.eclipse.org/Jetty/Howto/Secure_Passwords

    이 적어도 당신은 그냥 직접 암호를 읽을 수 있지만 몇 가지 심각한 노력이 필요 할 수 없도록 :

+0

참고 : 모든 서명은 실제 인증서를 사용하고 자체 서명 된 인증서를 사용하지 않는 경우에만 의미가 있습니다. 또한 JVM을 여전히 조작 할 수 있습니다. –

+0

맞습니다. JDK 설치는 특히'cacerts' 디렉토리에서만 잠글 필요가 있습니다. – sourcedelica

답변

3

운영 팀이 sudo를 할 두 번째 사용자를 만들지 마십시오. 응용 프로그램의 사용자 ID와 비교하여 파일 사용 권한의 하위 집합 만 있습니까?

코드를 변경할 필요가 없습니다. 좋고 간단합니다.

+0

그들은 어떻게 응용 프로그램을 시작합니까? 시작 스크립트를 setuid로 만드시겠습니까? – sourcedelica

+0

예, 그렇게 할 수 있습니다. – Adamski

+0

스크립트 자체를 setuid로 만들 수는 없지만 (이 제한 사항을 잊어 버렸습니다.) 스크립트를 실행하는 래퍼 실행 파일을 작성하고 래퍼 setuid를 만들 수 있습니다. – sourcedelica

3

당신은 흥미로운 부두의 사람들이이 문제를 접근 한 방식을 볼 수 찾을 수 있습니다 인간이 읽을 수있는 버전을 얻는 것.

부두 라이센스가 원하는대로 호환되면 코드를 들어 올리면됩니다.

+0

소스 제어에있는 암호 해독 코드와 암호 해독 코드에 액세스해야합니다. 흠 .. – sourcedelica

+0

당신이 찾은 것을 알려주세요. 컴퓨터가이를 사용할 수 있다면 해독 할 수 있다는 것을 기억하십시오. –

+0

제안 된 접근 방식으로 질문을 업데이트했습니다. – sourcedelica

0

쉬운 방법은 유닉스 권한을 사용하여이 파일을 읽을 수있는 사람을 제어하는 ​​것입니다. 그러나 암호와 같은 중요한 데이터는 절대로 저장해서는 안됩니다. 몇 가지 대안이 있습니다. 그들은 약간의 노력이 필요하지만 대부분의 상용 제품이 뒤 따르는 접근 방법입니다.

암호를 암호화하여 파일 시스템에 저장합니다. Java 암호화 또는 XML encryption을 사용하여이를 수행 할 수 있습니다.

또는

기타 구성 정보와 함께 데이터베이스에 암호와 같은 저장 민감한 정보 및 데이터베이스 도구를 사용하여 암호화합니다. 여전히 데이터베이스 암호를 파일 시스템 어딘가에 저장해야합니다. 오라클은 암호를 저장하는 지갑을 제공합니다. 데이터베이스 공급 업체가 제공하지 않는 타사 지갑도 있습니다.

관련 문제