문제

ASP.NET 응용 프로그램에서 통합 보안을 사용하고 있고 IIS 및 SQL Server는 Windows Server 2008 R2를 실행하는 동일한 서버 시스템에서 호스팅됩니다.

는 사용자가 네트워크에서 응용 프로그램에 액세스하고 사용자가 기록 할 수 있지만 사용자가 직접 또는 SQL Server Management Studio를 통해 데이터베이스에 액세스 할 수 없도록 허용 할 수 있습니까?

응용 프로그램이 클라이언트의 구내에서 클라이언트의 서버에 배포 될 것이기 때문에 데이터베이스 액세스를 보호하려고합니다.

여기에서 내가 현재 사용하고있는 내 연결 문자열이 를 사용하고 있습니다.

<add connectionString="Server=.\sqlexpress;Database=DB89akwA;Integrated Security=true" name="LocalSqlServer" providerName="System.Data.SqlClient" />

<add connectionString="Server=.\sqlexpress;Database=DB89akwA;Integrated Security=true" name="MainAppConnectionString" providerName="System.Data.SqlClient" />
.

현재 사용중인 두 개의 연결 문자열이며, 하나는 ASP.NET 인증을위한 것이며 두 번째는 내 응용 프로그램에서 사용됩니다.이 두 문자열은 동일하며 동일한 데이터베이스입니다.

모든 제안?

도움이 되었습니까?

해결책

클라이언트의 구내에서 실행되는 데이터베이스를 '보안'할 수 없습니다.클라이언트의 직원은 ASP.NET 연결 문자열에서 암호를 가져올 수 있습니다.도메인 관리자는 항상 데이터베이스에 액세스 할 수 있습니다 ( 시스템 관리자가 잠겨있는 경우 SQL Server에 연결 ).

데이터베이스가 느끼는 지위 속성을 숨기려면 클라이언트 전제에 데이터베이스를 배포하지 않아도됩니다 (예 : 예를 들어 SQL Azure와 같은 호스트 된 데이터베이스 사용).

클라이언트가 데이터베이스를 방해하지 않도록하기 만하면 계약서에서 그렇게 규정 할 수 있습니다.간섭을 감사하고 감지하는 은 가능합니다. 가능합니다.

다른 팁

예, 완전히 가능합니다.통합 보안을 사용하여 ASP.NET에 로그인 한 사람은 동일한 자격 증명을 사용하여 SQL Server에 로그인 할 수 없습니다.둘 다 완전히 연결이 끊어졌습니다.SQL Server가 액세스를 허용하도록 설정된 경우에만 가능합니다.

내 조언은 SQL 로그인 및 사용자를 만드는 것이며 SQL Server에만 액세스 할 수 있습니다.응용 프로그램에서 연결 문자열을 만들 때 통합 보안을 true로 설정하지 않고 사용자가 자신의 SQL 사용자 이름과 암호를 입력하여 데이터베이스에 액세스하도록하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top