2011-09-23 4 views
1

나는 쉬운 대답이 있어야하는 것처럼 느껴지는 질문이 있지만, 한 가지 이유 또는 다른 이유로 나는 그 문제를 완전히 추론 할 수 없었다.SQL Server 사용자 및 역할을 인트라넷 웹 응용 프로그램의 권한 데이터베이스로 사용 하시겠습니까?

저는 ASP.NET MVC3 인트라넷 응용 프로그램 개발에 착수했습니다. 현재 인증 & 인증을 설계 중입니다. 우리는 우리 환경에서 기본 인증을 사용해야하며 Active Directory를 사용하므로 인증 부분은 일반적으로 처리됩니다. 안타깝게도 액티브 디렉토리에있는 우리의 역할/사용자 계층 구조는 응용 프로그램에서 필요한 역할을 반영하지 않습니다. 그래서 내 자신을 정의해야 할 것입니다.

저는 SQL Server를 사용하기 때문에 원래 모든 DML에 대해 저장 프로 시저를 사용하고 SQL Server에서 역할을 만들고 역할에 사용자를 추가 한 다음 해당 역할을 통해 저장 프로 시저에 대한 액세스를 제어 할 생각이었습니다. 또한 SQL Server 데이터베이스 수준 사용자 &의 역할을 쿼리하여 응용 프로그램 자체의 권한 부여 정보 원본으로 사용할 수 있다고 생각했습니다. 원래는 훌륭한 아이디어처럼 보였지만 인기있는 것 같지 않았습니다 (하나는 검색어가 길고 지저분한 것 같습니다). 또는 웹 응용 프로그램에서 서버에 대한 모든 쿼리에 대해 사용자를 가장 한 다음 내 자신의 스키마로 사용자/역할 데이터베이스를 구현하고 응용 프로그램 측면에서만 권한을 부여하는 것이 더 낫습니다.

원래 응용 프로그램과 데이터베이스 측면 모두에서 권한을 부여하는 것이 보안에 좋은 것으로 보였고 SQL Server 사용자/역할 개체를 사용하면 사용자와 역할 데이터를 두 위치에 저장할 필요가 없다는 것을 의미했습니다 .

나는 Best practice on users/roles on SQL Server for a web application에 잠재적으로 관련있는 토론을 보았지만 이것이 전반적으로 다른 질문이라고 생각합니다.

감사합니다.

+0

예기치 않게 조용한 응답입니다. 다시 생각해 볼 때, 나는 다른 방법을 찾기로 결심했다. 나는 그것이 효과가있을 수 있다고 생각하지만 실제로 보안 위험이 더 많아 질 수 있으며 DB 보안 객체를 변경하기위한 내장 된 모든 프로 시저를 사용하는 것이 고통스러워 보입니다. (사실 나는 모든 너무 깊은). DB와 애플리케이션 모두에서 적절한 보안을 제공하기는하지만 상황에 따라 주로 애플리케이션 보안에 중점을 두는 것이 좋습니다. 어쨌든 지상에서 내려야합니다. –

답변

1

웹 응용 프로그램이 SQL Server에 연결하는 데 사용할 SQL 로그인을 만드는 것이 좋습니다. 이렇게하면 삭제되거나 향후 비활성화 될 수있는 특정 AD 계정을 가장하거나 SQL Server에서 사용자를 제어 할 수 있습니다.

그런 다음 응용 프로그램에 역할 기반 인증을 구현하는 것이 좋습니다. 이렇게하면 응용 프로그램에 대한 사용자 지정 사용자 및 역할을 만든 다음 사용자를 사용자에게 할당 할 수 있습니다. 이렇게하면 사용자가 자신의 역할이 허용되지 않는 리소스에 액세스하려고하면 작업이 수행되지 않습니다. 다음은이 원칙을 기반으로하는 데모 앱입니다 http://www.codeproject.com/KB/web-security/rolesbasedauthentication.aspx.

+0

다음은 도움이 될만한 또 다른 예입니다. http://weblogs.asp.net/scottgu/archive/2006/07/23/Recipe_3A00_-Implementing-Role-Based-Security-with-ASP.NET-using-Windows-Authentication-and-SQL-Server.aspx – pilotgallo2

+0

이것은 거의 내가 끝내었던 것이다. –