2009-01-30 3 views
9

방금 ​​asp.net을 둘러싼 보안 기반 질문에 대해 Redmond에서 인터뷰를했습니다. 그들이 질문 한 질문 중 하나는 제한된 위임을 사용하여 SQL Server에 액세스하기위한 보안 인트라넷 응용 프로그램을 구성하는 것이 었습니다. 이 시나리오에서는 AD 사용자 계정이 SQL Server에 대한 액세스 권한을 위임받습니다. 물론 모든 목적은 a) 웹 서버 (web.config)에 사용자 이름/비밀번호를 저장하지 않고 b) Active Directory에서 관리 할 수있는 추상화 된 보안 모델을 제공하는 것입니다.익명 액세스 (IIS) 및 SQL Server

이렇게하면 익명 액세스를 위해 내 사이트를 어떻게 구성했는지 생각하게되었습니다. 일반적으로 기본 익명 계정을 사용하여 IIS 웹 사이트를 실행하고 연결 문자열을 web.config에 저장합니다 (암호화 된, 때로는 일반 텍스트로 저장 됨). 물론 SQL Server가 혼합 모드에서 실행되어야합니다. 그래서 내 질문에 우리가 web.config에 연결 문자열을 전혀 저장하지 않고 방금 SQL Server 내에서 db_datareader 액세스 권한을 가진 특정 웹 사이트에 대한 고유 한 익명 도메인 계정을 만들면 어떻게 될까요? 이 일을하는 것이 나쁜 생각 인 이유가 있습니까?

나는 이것이 나쁜 생각이 될 수있는 모든 시나리오를 생각해 보았습니다. 내가 생각할 수있는 유일한 시나리오는 "해커"가 웹 서버의 코드를 손상시킨 다음 어떻게해서든지 SQL Server ... 그러나 이것은 어느 시나리오에서나 발생할 수 있습니다.

누구나 모범 사례를 알고 있습니까?

답변

1

내가 작동하는 곳에서는 특정 도메인 계정으로 실행되는 Windows 서비스가 있습니다. 이 계정은 SQL Server에 로그인으로 설정되며 액세스 할 필요가있는 DB에 일치하는 사용자가 있습니다. 우리는 이것에 대해 전혀 문제가 없었습니다.

나는 데이터베이스 사용자 (또는 역할)를 올바르게 구성하여 필요로하는 것만 액세스 할 수 있다고 생각합니다.

첫 번째 단락에서 설명하는 것과 비슷한 방식으로 AD를 사용하여 SQL 액세스를 관리하는 방법을 고려했습니다. (AD 그룹 -> SQL Server 로그인 -> DB 사용자 -> DB 개체) 지금까지 볼 수있는 유일한 단점은 사용자가 데이터베이스에 직접 연결하면 응용 프로그램에있는 모든 논리를 무시한다는 것입니다. 한 가지 이점은 도메인 사용자가 데이터베이스에 액세스하고 있음을 알 수 있습니다.

+0

첫 번째 단락에서 나는 제한된 위임을 언급합니다. 이렇게하면 도메인 계정을 사용하고 SQL Server에만 "제한"된 액세스 권한을 가진 사용자로 가장 할 수 있습니다. 이 시나리오에서 사용자는 응용 프로그램을 통해서만 SQL에 직접 액세스 할 수 있습니다. –

2

아마도 ODBC를 사용하여 SQL Server 연결을위한 DSN을 만들 수 있습니다. 그러면 web.config가 DSN을 알아야합니다. 따라서 System.Data.OleDb를 사용해야 할 수 있습니다. ASP.NET에서 DSN을 사용하는 것을 본 적이 없지만 Classic ASP에서는 꽤 표준 적이었습니다. 그리고 Active Directory를 사용하여 ODBC를 관리하는 방법에 대해 들어 본 적이 없습니다.