2012-02-10 2 views
0

많은 데이터를 보유하고있는 SQL Server가 있습니다. 다른 여러 클라이언트에서 실행되는 응용 프로그램은 모두이 서버에 액세스하여 처리 할 다양한 데이터를 가져옵니다. 이 프로그램의 이전 버전은 데이터베이스에있는 모든 데이터에 대해 프로그램을 가진 사람에게 거의 무제한 액세스 권한을 부여했습니다. 이제이 응용 프로그램의 새 버전을 만들고 사용자 이름으로 로그인하고 사용자 수준이 다르다는 점을 고려하여 사용자가 액세스/변경할 수있는 내용을 제한하는 등의 멋진 작업을 구현하려고합니다.사용자별로 데이터베이스 액세스를 제한하려면 데이터베이스에서 처리하도록하거나 더 이상 별도의 프로그램을 만들어서 더 나은 액세스를 허용 하시겠습니까?

MS SQL 서버에 대한 지식은 제한적이지만 성장하고 있지만 데이터베이스 자체에서 누가 무엇에 액세스 할 수 있는지 제한하기 위해 여러 가지 일을 할 수 있다는 것을 알고 있습니다. 또 다른 옵션은 나가는 연결에서 데이터베이스를 닫고 소켓을 통해 들어오는 연결을 처리하고 사용자의 유효성을 검사하고 실제로 액세스 할 수 있는지 확인하는 로컬 DB 서버에서 응용 프로그램을 실행하는 것입니다. 나에게 이것은 더 간단한 생각처럼 보인다. 데이터베이스 사용자 한 명에 대해서만 걱정할 필요가 있으며, 다른 수준의 사용자가 액세스 할 수있는 테이블 (및 필요한 경우 열)을 엄격하게 제어 할 수 있습니다. 비록 내가 말했듯이, SQL 서버는 나의 전문 지식이 아니며, 데이터베이스 내부에서 수행하기가 매우 쉬운 일을 복잡하게 만들었는지, 아니면 생각지 않을만한 다른 문제를 스스로 열어 놓고 있는지 알고 싶다. ? 사용자가 많지 않습니다. 지금은 10 개 미만이며 성장할 것으로 예상되지 않으므로이 별개의 앱에서 실행되는 소켓이나 스레드가 너무 많아 걱정할 필요가 없습니다.

가장 큰 관심사는 데이터베이스에 사람들에 대한 중요한 개인 정보가 있다는 것입니다. 이것은 어떤 의미에서든 큰 회사는 아니지만 동시에 누군가가이 데이터를 보유하고 있다면 매우 나쁠 것입니다 (예 :이 데이터는 암호화 됨). 이전 응용 프로그램에서는 올바른 연결 문자열을 사용하여 원하는대로 가져올 수 있습니다. 그런 일이 발생하지는 않았지만 필요한 후에 더 강력한 보안을 구현 한 프로그래머 중 하나가되고 싶지 않습니다.

+0

실수로 내 의견을 삭제 한 것 같습니다. 몇 가지 이유로 Windows 인증을 사용할 수 없습니다. – cost

답변

0

자신을 빌드하려고하면 실패 할 수밖에 없습니다. SqlServer에는 이미 수 많은 보안 기능이 내장되어 있습니다.

귀하의 문제에 대한 최적의 해결책은 통합 보안 (즉, 사용자는 실제 Windows 자격 증명으로 로그인)을 사용하는 것입니다. 이렇게하면 모든 연결 문자열이 동일하게됩니다. 그런 다음 액세스 권한이있는 사람들에게만 테이블/스키마에 대한 액세스 권한을 부여 할 수 있습니다.

+0

불행히도 Windows 자격 증명을 사용할 수 없습니다. 주로, 나는 그것에 대한 통제권이 없다. 암호 나 불분명 한 longins가없는 컴퓨터에서 응용 프로그램을 실행할 수 있습니다. 그들은 또한 노트북을 가져 와서 그것을 실행할 수도 있습니다. 나는 컴퓨터가 실행되는 응용 프로그램 자체를 신뢰할 수 없으며, 그렇다고해도 IT 부서에 속하는 수많은 보안 문제가 발생합니다. – cost

관련 문제