
나는 시스템별 ODBC(시스템 DSN)와 사용자별 ODBC(사용자 DNS)에 대해 잘 알고 있습니다. 애플리케이션별로 ODBC를 갖고 싶습니다. 특정 응용 프로그램인 GP 2010에 사용할 수 있는 ODBC 연결을 제한하고 싶습니다. 터미널 서버에 여러 GP 응용 프로그램이 설치되어 있고(여러 Dynamics.exe 응용 프로그램을 저장하는 프로그램 파일 내의 여러 GP 디렉터리) 연결할 ODBC가 여러 개 있습니다. GP 2010부터.
특정 GP 2010 응용 프로그램(Dynamics.exe)만 특정 ODBC를 시작하고 연결할 수 있도록 하는 규칙을 적용하고 싶습니다. 즉, 다음 사이에 1:1 관계를 생성하는 규칙을 적용하고 싶습니다.
- GP 2010 애플리케이션(Dynamics.exe) 및
- ODBC(GP를 지원하는 SQL 인스턴스)
환경 정보:
- Windows Server 2012 Standard 64비트
- SQL 2008 R2 SP2
- GP 2010 SP3
지금까지 내가 시도/배운 것:
특정 GP 환경에서 그룹 정책을 사용하여 사용자 DSN을 통해 Windows 사용자가 사용할 수 있는 ODBC를 제한하려는 시도를 본 적이 있습니다. 그러나 Windows 사용자가 합법적으로 여러 GP 응용 프로그램에 액세스할 수 있는 경우 이러한 접근 방식은 도움이 되지 않습니다. GP 응용 프로그램을 시작할 때 Windows 사용자가 사용할 수 있는 ODBC를 선택할 수 있습니다.
GP 2010을 사용해 실험해봤습니다.로그인 매크로이 문제를 해결하려고 노력합니다. 그러나 이 방법은 안전하지 않으며 확장할 수 없습니다. 첫째, 사용자 이름과 비밀번호는 관리자에게 알려지고 일반적으로 변경되지 않는 것으로 가정합니다. 이 경우 자격 증명은 ODBC와 함께 로그인 매크로(어딘가에 일반 텍스트로 저장됨)에 포함될 수 있습니다. 그럼에도 불구하고 사용하려면 로그인 매크로를 사용자가 실행하는 GP 2010 바로가기에 전달해야 합니다. 각 GP 응용 프로그램에 대한 일반 대상 경로를 지정할 수 있으려면 각 사용자의 로그인 매크로를 사용자별 공통 위치(예: 사용자 데스크톱)에 저장해야 합니다. 이는 사용자별로 구성해야 하므로 이 관리 오버헤드로 인해 확장성이 제한됩니다.
답변1
나는 당신이 원하는 것을 얻을 행운이 별로 없을 것이라고 생각합니다. 왜냐하면 당신이 하려는 일은 Windows 보안 모델의 작동 방식과 맞지 않기 때문입니다.
ODBC DSN은 레지스트리(시스템 DSN의 경우 HKEY_LOCAL_MACHINE, 사용자 DSN의 경우 HKEY_CURRENT_USER)에 저장됩니다. 보안 주체(사용자 또는 그룹)를 참조하는 레지스트리에 권한을 설정할 수 있지만 해당 참조 응용 프로그램 소프트웨어는 설정할 수 없습니다(응용 프로그램 소프트웨어는 보안 주체가 아니기 때문에). 마찬가지로, 레지스트리에 액세스하는 데 사용되는 API에는 액세스를 수행하는 애플리케이션을 기반으로 권한을 구현하는 기능이 없습니다. 보안은 실행 중인 애플리케이션이 아니라 사용자와 해당 그룹 멤버십을 기반으로 합니다.
ODBC DSN에 대한 사용자 액세스를 제거해도 사용자가 액세스 권한이 있는 경우 백엔드 데이터베이스에 액세스하는 것이 실제로 중지되지는 않습니다. 실제로는 아무것도 보호하지 않고 DSN을 숨겨 액세스를 "숨기는" 것입니다. 모호함에 의한 보안은 실제로 보안이 아닙니다.
저는 Great Plains에 대한 경험이 없지만 백엔드 스토리지가 SQL Server 기반인 것으로 보이므로 백엔드 데이터베이스에 대한 사용자 액세스를 제한하는 Right Way TM가 SQL Server 보안이 될 것이라고 생각합니다. ODBC DSN에서 Windows 인증을 사용한다고 가정하고 Great Plains 데이터를 호스팅하는 SQL Server 인스턴스에 액세스하는 사용자는 Windows 사용자 컨텍스트를 통해 SQL Server에 "표시"됩니다. 사용자(또는 사용자가 구성원인 그룹)에 해당하는 SQL Server "로그인"을 만들고 기본 제공 SQL Server 기능을 사용하여 액세스를 제한할 수 있습니다. 이것은 다음과 같습니다많은특히 데이터베이스 자체가 액세스를 강제하므로 사용자 액세스를 제한하는 것이 더 좋습니다.
(이전에 Great Plains를 사용해 본 적이 없으며 소프트웨어가 SQL Server 기본 인증과 같은 추악한 기능을 사용하는 것이 가능하고 심지어 가능성이 높다는 점을 인정했습니다. 그렇다면 문제가 발생한 것입니다.)
답변2
아니요, 하지만 그렇게 큰 문제라면 Hyper-V의 자체 VM에서 각 애플리케이션을 실행하면 됩니다.