문제

우리는 일부 회사 인트라넷 사용자가 Winforms 앱을 사용하여 SQL Server가있는 시스템에서 작동합니다. 통합 보안이 설정되어 모든 사용자가 응용 프로그램 보안이 테이블 업데이트가 수행되는 방법과 위치를 제한하는 권한을 업데이트하고 삭제할 수 있습니다.

그러나 일부 사용자는 SQL 쿼리 도구를 사용하는 전원 사용자이며 보고서 작성을 위해 DB에 직접 액세스합니다. 그러나 통합 보안을 사용하면 응용 프로그램이 업데이트에 규칙을 적용하기 때문에 테이블에 대한 기본 업데이트 권한이 있습니다.

이것이 중앙 SQL 인증 된 로그인으로 앱을 제공하는 것이 더 적절한 위치의 예입니까? 사용자는 통합 보안에 대한 읽기 전용 권한을 얻습니다.

도움이 되었습니까?

해결책

Jon이 언급 한 바와 같이 저장된 절차는 직접 테이블 수정에 대한 보호 기능을 제공합니다. 다른 옵션도 있습니다. SQL Server의 "응용 프로그램 역할"(SP_SetApprole Proc)을 사용할 수 있습니다. 이를 통해 모든 사람에게 별도의 ID를 계속 사용할 수 있지만 (프론트 엔드를 통해) 응용 프로그램 연결 시간에만 사용자의 권한이 높아질 수 있습니다.

공유 ID를 사용하는 주요 단점은 서버에 SQL을 서버에 제출하는 사람을 추적하는 것입니다.

그래도 다른 것이 있습니다. 마치 사용자가 데이터베이스에 연결하고 마음대로 쿼리를 실행할 수있는 것처럼 들립니다. 직접 연결된 SQL 세션의 사용자 동작으로 인해 응용 프로그램에서 다운 타임의 큰 위험을 감수합니다. 당신이 그것을 뽑을 수 있다면, 당신은 당신의 비즈니스가 매일 견딜 수있는 간격으로 업데이트되는보고 데이터베이스를 작성하려고 시도 할 수 있습니다. HTH

다른 팁

나는 당신이 당신의 앱이 SQL 문을 직접 실행한다는 질문을했던 방식으로 추정합니다. 저장 프로 시저를 실행하도록 리팩터링 할 수 있다면 절차에 대한 실행 권한을 부여하고 테이블의 직접 업데이트를 거부 할 수 있습니다. 그래도 앱이하는 일에 따라 불가능할 수 있습니다.

SQL 인증은 하나의 옵션입니다. 저장된 절차는 또 다른 절차입니다. 그러나 적절한 사용자 유형에만 적절한 권한 만 할당하기위한 더 세분화 된 역할을 구축하는 것은 실제로보아야 할 곳입니다.

또한, 나는이 사용자들에게 DB에 직접 액세스 할 수 있도록하는 것을 피할 것입니다. 보안상의 이유를 제외하고, SQL에 능숙하지 않은 사용자는 실수로 데이터베이스 서버를 늪에 휩쓸고 효과적인 서비스 거부를 생성하는 쿼리를 실수하는 데 많은 시간이 걸리지 않습니다. 전문가조차도 때때로 실수로 이것을 할 수 있습니다.

대신보고 서비스 또는 분석 서비스 유형 솔루션에 액세스하거나 복제를 사용하여 데이터 클론에 액세스 할 수 있도록합니다. 이렇게하면 생산 시스템이 보호됩니다.

개인적으로 저장된 절차를 통해 모든 응용 프로그램 데이터 액세스를 수행합니다. 사용자가 SP를 실행할 수 있도록 통합 보안을 설정하고 데이터를 직접 조작하지 않도록했습니다.

DB 관리자에게 고급 액세스를 제공하여 필요할 때 데이터를 직접 조작 할 수 있습니다.

그룹 기반 권한은 통합 보안으로이를 제어 할 때 액세스 권한에 대한 유연성과 관리 부담이 줄어 듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top