2012-09-05 3 views

답변

2

Logon trigger을 사용해야하며이 트리거에서 APP_NAME()과 응용 프로그램 이름이 들어있는 상수를 비교해야합니다. 서로 다르면 ROLLBACK을 수행하십시오.

+0

어떻게 APP_NAME을 SQL 서버에 전달합니까? – kobik

+0

[APP] (http://msdn.microsoft.com/en-us/library/ms130822.aspx) 연결 매개 변수를 참조하십시오. –

+1

감사합니다. +1. 그게 내가 생각한거야. 나는 여전히 연결 문자열이 있으면 다른 응용 프로그램에서 사용할 수 있기 때문에 이것은 다소 의미가 없다고 생각한다. – kobik

0

Application Role SQL Server를 사용할 수 있습니다.

Logon Trigger로 전체 SQL Server를 잠그는 것은 의미가 없습니다. 다른 데이터베이스가있을 수 있으며 또한 예를 들어 무료 여야합니다. SQL 에이전트 또는 Management Studio 또는 업데이트 프로그램 용 ...

데이터베이스에 대한 액세스를 제어하려면 사용자 및 응용 프로그램 역할을 사용하십시오. 앱 별 역할은 컴파일 된 코드에서 하나의 저장 프로 시저를 호출해야하며 수행 할 수있는 모든 작업이 응용 프로그램 역할에 의해 정의됩니다. 다른 역할 및 사용자에 대한 액세스를 비활성화하면 아무도 사용자의 데이터베이스에 액세스 할 수 없습니다. 다른 사용자/역할에 권한을 부여하지 않도록 다른 데이터베이스를 구성 할 수도 있습니다.

연결 문자열에는 문제가없고 다른 작업에는 유연합니다.

영어로 죄송합니다. 제 모국어가 아닙니다.

3

문제는 SQL Server에 연결하는 모든 것이 ConnectionString에 의해 수행된다는 것입니다.

정말로 원하는 경우,이를 가로 채서 다른 응용 프로그램으로 위장 할 수 있습니다.

응용 프로그램이 어떤 방식 으로든 디지털 서명을 사용하여 연결할 수 없으면 원하는 것을 시행 할 방법이 없습니다.

+1

본 요약서에 동의합니다. 누군가가 연결 문자열을 생성하고 유효한 인증 자격 증명을 전달할 수있는 한 모든 응용 프로그램은 SQL Server 데이터베이스에 액세스 할 수있을뿐 아니라 제공된 사용자 ID가 일반적으로 얻게되는 모든 역할과 부여 된 사용 권한을 얻을 수 있습니다. – EastOfJupiter

관련 문제