2013-05-03 1 views
1

C# 다중 사용자 클라이언트 - 서버 응용 프로그램과 SQL Server 2008 Express가 데이터베이스로 있다고 가정 해 보겠습니다. 회사의 모든 사람들이 액세스 할 수있는 즉, .mdf 파일에 대한 물리적 액세스가 무료 인 고객의 PC에 설치해야하는 응용 프로그램이므로 .mdf 파일을 자신의 컴퓨터에 쉽게 복사 할 수 있습니다. 그것을 첨부하고 내가 개발 한 모든 DB 구조와 저장 프로 시저의 코드를 봅니다.EFS로 암호화 된 데이터베이스 파일에 로컬 관리자가 액세스하는 것을 방지하려면 어떻게합니까?

나는이 문제와 관련하여 많은 정보를 읽으면서 무료 Windows의 EFS (파일 시스템 암호화)를 사용하도록 지시했습니다. 결과적으로 필자는 .mdf 파일을이 파일을 위해 특별히 만든 특정 Windows 사용자 계정으로 암호화하여 아무도 내 사용자로 로그온하지 않고 파일의 암호를 해독 할 수 없도록 암호를 설정했습니다. 모든 것이 좋았지 만, 고객이 로그온하는 사용자가 거의 항상 Local Admin 그룹에있을 것이라는 딜레마에 직면했기 때문에 내 사용자의 비밀번호를 쉽게 재설정하고 사용자가 파일을 해독 할 수 있도록 로그온 할 수 있습니다. 관리자 그룹에서 사용자를 제외 할 수 없습니다.

누구든지이 문제를 해결할 수 있도록 도와 주시겠습니까? 또는 추가 사용자를 만들지 않고도 파일을 해독하여 .mdf 파일을 해독 할 수 없습니까?

정말 도움이됩니다.

+1

일반적으로 누군가 다른 사람이 시스템을 실제로 제어하는 ​​경우이를 방지 할 수 없습니다 어떻게 든 데이터에 액세스 할 수 있습니다. 아마도 당신은 그것을 어렵게 만들 수 있지만 궁극적으로 당신이 충분히 열심히 노력한다면 그들을 막을 수는 없습니다. 나는 당신이 보호하려고 노력하고있는 것과 당신에게 가치있는 것을 열심히 생각할 것입니다. [이 질문에 대한 내 대답을 참조하십시오 (http://stackoverflow.com/questions/5645097/protect-stored-procedure-by-deny-view-definition); 기술적 솔루션보다 계약을 통해이를 처리하는 것이 더 나을 수도 있습니다. – Pondlife

+1

그래서 모든 사람들이 데이터베이스를 자유롭게 복사하여 로컬에 첨부하고 사용하기로되어 있습니다 ... 그러나 그것도 할 수 없습니까? – Andy

+0

@Pondlife 당연히 나는 누군가가 .mdf에 액세스하려고한다면 그/그녀는 이것을 달성 할 수 있지만, 내가 원하는 것은이 직업을 가능한 한 어렵게 만드는 것임을 이해한다. –

답변

2

EFS는 임의의 파일 암호화 키 (FEK)로 파일을 암호화하고 사용자가 속한 RSA 키로 해당 키를 암호화합니다.이 RSA 키는 DPAPI로 보호됩니다 ... 시스템이 키 복구로 설정되어있는 경우 또한 FEK는 키 복구 에이전트의 RSA 키 (로컬 관리자 일 수도 있지만 키 복구 에이전트가 없어도 변경 가능)에 대해 암호화됩니다.

로컬 관리자가 사용자의 비밀번호를 변경하는 경우 , DPAPI 마스터 키는 그대로 유지되며 이전 사용자 암호로 보호됩니다 ... 암호를 변경해도 DPAPI 마스터 키에 액세스 할 수 없으므로 사용자 개인 RSA 키에 액세스 할 수 없습니다. .

스테이션이 도메인의 구성원이면 도메인 컨트롤러에 DPAPI 마스터 키의 암호 해독을 허용하는 암호 해독 키가 있습니다.

+0

@ DarkSquirrek42 답할 수없는 답변을 해주셔서 감사합니다! 아마 또 다른 질문 일 수도 있지만 호기심에서 벗어나 Windows에 로그온 할 때 암호화가 수행 된 사용자를 숨길 수있는 방법이 있습니까? 왜냐하면 나는 고객이 매번 자신을 선택할 때 약간의 불편 함을 느끼기 때문입니다. –

+0

파일은 FEK가 암호화 된 키를 항상 "알 것"이며 따라서 사용자를 알 수 있습니다 ... EFS는이를 숨길 수 없습니다 ... 창을 숨길 수는 없지만 ... 계정을 삭제하더라도. .. 파일은 여전히 ​​보안 식별자를 알 수 있습니다 ... 그러나 다른 사용자로 서비스를 실행할 수는 있지만 자격 증명은 어딘가에 저장됩니다 (또는 서비스 별이 입력 될 때마다 입력됩니다). 자격 증명이 알려져 있고, 보안이 깨졌습니다. – DarkSquirrel42

1

데이터 저장소를 클라우드로 이동하고 응용 프로그램에 웹 서비스를 사용하는 것보다는 많은 부분을 수행 할 수 있다고 생각하지 않습니다. 나는 당신이 데이터베이스에있는 일부 IP를 보호하려고한다는 가정을하고 있습니다. 논리를 응용 프로그램의 클라이언트 또는 서버 부분으로 가져올 수 있다면 응용 프로그램을 난독화할 수 있고이 문제에 대해 그렇게 걱정할 필요가 없습니다. 내가 추정하는 데이터는 어쨌든 사용자가 소유하고 있으며, 데이터베이스 암호화를 통해 내 데이터를 제 위치에서 잠그고 자하는 회사에서 매우 화가 났을 것입니다.

내가 생각하는 유일하고 진정한 해결책은 비록 고객이 소프트웨어를 디 컴파일해도 소프트웨어로 할 수있는 일을 제한하는 판매 계약을 통해이를 해결하는 것입니다.

관련 문제