2009-11-06 10 views
0

나는이 방법으로 액세스하려는 단일 저장 프로 시저 일 때 사용자의 사용 권한/역할을 만들지 않고도 특정 페이지에서만 사용할 수있는 저장 프로 시저를 만들 수 있기를 원합니다.SQL Server에서 저장 프로 시저에 대한 액세스를 제어하는 ​​방법?

예를 들어 CustomerID 매개 변수를 가져 와서 고객이 구입 한 품목 목록을 반환하는 proc_GetCustomerItems 저장 프로 시저를 갖고 싶습니다. 그러나 Customer Items 예를 들어 나열된 곳에서만 작동하기를 원합니다. 이 목록을 표시하지만 쿼리 분석기 등 다른 곳에서는 작동하지 않는 ASP 페이지
추가 보안 정보를 제공하기 위해 다른 매개 변수를 사용하면 기본 방법은 특정 메서드 및 페이지 액세스 만 허용하는 것입니다. 저장 프로 시저 (Stored Procedure)는 역할 또는 권한으로 수행 할 수 있습니까?

주요 문제는 저장 프로 시저에 대한 액세스 권한을 코드의 특정 메서드로 올바르게 설정하는 방법으로,이 저장 프로 시저의 사용을 강화하는 데 도움이되므로 GetCustomerItems 메서드를 ASP에서 명시 적으로 허용해야합니다. 예제) 액세스를 사용하여이 저장 프로 시저를 사용하십시오.

추측하고 있습니다. 역할 및 사용자 액세스가 제안 된 대안이 될 수 있지만 호출 된 곳에서 저장 프로 시저에 대한 액세스를 제한 할 수 있다면 흥미가 있습니다.

답변

0

적합하지 않은지 알기가 어렵고 대개 프로에 프로 시저가 있지만 프로 시저가 저장 프로 시저를 사용하지 않는 것이 좋습니다.

대신 해당 페이지의 parameterised sql을 사용하십시오. 이렇게하면 다른 곳에서 사용할 수있는 저장 프로 시저가 없습니다.

이렇게하면 사용중인 사용자 계정에 기본 테이블에 대한 직접 사용 권한이 필요하다는 것을 의미합니다.

3

아니요, 불가능합니다. 가장 가까운 것은 특정 저장 프로 시저에만 액세스 할 수있는 페이지가 나머지 페이지와 다른 자격 증명을 사용한다는 것입니다. 사용자가 쿼리 분석기를 사용하여 proc에 액세스하지 못하게하려면 표준 SQL Server 보안 기능을 사용할 수 있습니다.

+0

나는 이것이 가능하다고 생각했지만 어쨌든 내가 가능한 대안으로 알고 싶었던 것처럼 어쨌든 물어볼 것이라고 생각했다. 이것은 SQL 보안 기능이 페이지를 언급 ​​된대로 사용할 수있는 연결 기반에서 제공 할 수 있음을 보여주기 때문에 유용 할 수 있습니다. – RoguePlanetoid

0

, 당신은 APP_NAME(), HOST_NAME(), HOST_ID()의 값을 조회하여 저장 프로 시저의 시작 부분에 코드를 추가하는 것입니다 얻을 수있는 가장 가까운 CURRENT_USER 그리고 아마도 다른 사람 , 그리고 귀하의 응용 프로그램에 대한 관련 값과 일치하지 않는 경우 NULL 또는 빈 행을 반환합니다. 물론 이것은 페이지와 관련이 없으며 쿼리 분석기를 사용하여 저장 프로 시저 자체의 내용을 보는 사람을 막을 수 없습니다.

+0

이 질문에 대한 주된 목적은 허용 될 때 페이지가 저장 프로 시저를 사용할 수 있는지 아닌지를 확인하는 것이 었습니다. 저장 프로 시저의 컨텍스트가 페이지 여야 만하는 경우에이 옵션을 사용하면 유용 할 수 있습니다. – RoguePlanetoid

+0

글쎄, 그 페이지가 다른 곳의 다른 자격 증명으로 sp를 실행하도록 만들거나 해당 페이지의 연결 문자열에서 ApplicationName을 고유 한 것으로 수정하고 다른 모든 것을 '차단'할 수 있습니다. – MartW

관련 문제