2010-08-03 5 views
0

실례합니다. 내 어이없는 어리 석음을 용서해주십시오. 이것이 가능할 지 모르겠습니다.MS Access 데이터베이스에 대한 안전한 ODBC 네트워크 연결

여기 상황이 있습니다.

원격 위치에서 SELECT, UPDATE 및 INSERT해야하는 MS Access "데이터베이스"(예, 알고 있습니다, 저도 압니다). 이 사실은이 일이 안전하게 발생해야한다는 것입니다.

필자는 MS Access 파일을 호스팅하는 원격 시스템을 완전히 제어 할 수 있으므로 필자는 드라이버와 소프트웨어를 넣을 수 있습니다. 서버는 Microsoft Windows Server 2003입니다.

내가 취하려고했던 접근법은 Apache 또는 IIS를 사용하는 HTTPS 서버에서 PHP 스크립트를 호스팅하고 PHP 스크립트를 XML로 보냅니다. 그런 다음 MS Access 데이터베이스에서 해당 작업을 수행하고 XML 결과를 다시 보냅니다. 그러나 시간 제한으로 인해 ODBC를 통해 안전한 방식으로 직접 연결할 수 있는지 그리고 MS Access 데이터베이스와 통신 할 수 있는지 파악하려고합니다.

ODBC는 보안을 위해 유명한 것은 아니지만 암호화 된 연결을 지원하는 ODBC 드라이버가 있거나 SSL을 통해 ODBC 연결을 터널링 할 수 있다는 것을 알고 있습니다. 그러나 지금까지 발견 한 모든 정보는 Microsoft SQL 데이터베이스에 의존합니다.

특히 기본 데이터베이스를 고려하지 않고 SSL 연결을 설정할 수있는 방법이 있으면 관심이 있습니다. 아마 유닉스 복제본에서 혼자서 알아낼 수는 있지만, 호스트는 Windows Server 2003으로, 어떻게 진행해야할지 모르겠다.

전혀 가능합니까? 모든 정보를 높이 평가!

+0

: http : //www.litwindow.com/Knowhow/HowTo/howto_create_secure_access_dat.html –

답변

1

여기서 문제는 ODBC 연결이 어떻게 작동하는지 이해하지 못한다는 것입니다. TC/IP 또는 socked 기반 연결에 대해서는 언급하지 않습니다.

JET에서 파일에 액세스하는 모든 연결 문자열을 보면 ODBC 연결에서 항상 항상 정규화 된 Windows 경로 이름을 포함한다는 것을 알 수 있습니다. 정규화 된 Windows 경로 이름을 말하면 하드 디스크에있는 파일에 대해 이야기하고 있습니다.

결국 우리는 일반 Jane Windows 파일을 여는 것에 대해 이야기합니다. 말은 말은 말이고 Windows 파일은 Windows 파일이며 Windows 파일입니다.

다른 말로하면 하드 디스크에 파일을 여는 것입니다. 따라서이 전체 과정은 엑셀 파일, 텍스트 파일, 파워 포인트 파일 또는이 경우에는 하드 디스크에 앉아있는 액세스 파일을 여는 것과 다르지 않습니다.

이 파일이 설정된 컴퓨터에는 반드시 서버 또는 특정 데이터베이스 소프트웨어가 설치되어 있어야합니다. 클라이언트 쪽에서 소프트웨어가 있어야하며 디스크 드라이브에서 데이터를 가져 오는 표준 Windows 파일 열기 명령을 실행해야합니다. 서버에 단어 파일을 놓고 열면 서버에 단어를 설치할 필요가 없으며 Windows 표준 파일을 여는 클라이언트 측이 액세스 파일을 열 때 JET에 똑같은 시나리오가 적용된다는 것을 기억하십시오 .

인터넷 연결을 통해이 파일을 여는 경우 인터넷을 통해 Windows 네트워킹을 확장해야합니다. HTTP 또는 심지어 FTP는 원격으로 Windows 파일 네트워킹 프로토콜에 가까운 것이 아닙니다.

그러나 인터넷을 통해 Windows 네트워킹 시스템을 확장 할 수 있으며 이는 일반적으로 VPN (가상 사설망)이라고합니다. 즉, VPN을 설정해야합니다. 이렇게하면 네트워크 환경을 통해 다른 컴퓨터를보고 서버의 해당 폴더에있는 파일을 찾아보고 열 수 있습니다. 다시 표준 윈도우 파일을 열면 SQL 서버와 같이 연결할 수있는 서버에서 실행중인 일부 서비스 유형이 없습니다.

http://www.members.shaw.ca/AlbertKallal//Wan/Wans.html

: 윈도우 네트워킹과 JET (액세스) 단순히 신뢰할 수있는 방식으로 작동하지 않습니다 파일을 인터넷을 통해 VPN을 실행하는 이유

당신은 광산의 다음 문서를 읽을 수 있습니다 내가 설명 따라서 JET ODBC 연결 문자열을 살펴 본다면 절대로 IP 기반이 아니라는 것을 알게 될 것입니다. 그러나 완전한 정규 Windows 파일 이름이어야합니다. 나는 우리가 열려고하는 표준 Windows 파일 이름과 위치에 대해 이야기하는 것을 다시 강조하고 반복 할 수 없습니다.

단어 또는 엑셀이나 파워 포인트를 여는 것과 다르지 않습니다. ODBC 드라이버는 드라이버가 클라이언트 측에만 설치되고 설정되어야하기 때문에이 문제를 혼란스럽게합니다. 표준 일반 Jane 윈도우 파일을 여는 데 필요한 기능을 제외하고는 서버 측에서 두 가지를 연결할 수 없습니다.

VPN을 통해 가능한 한 궁금한 내용이 있지만 실용적이지는 않습니다. 위의 기사를 읽을 수 있으며 왜 이것이 제대로 작동하고 작동하지 않는지 자세히 설명합니다.

SQL 서버의 여러 가지 무료 에디션과 그 밖의 많은 선택 항목의 출현으로 위의 제한 사항이 문제가되지 않을 수 있습니다. 이러한 다른 서버 데이터베이스 시스템은 파일 기반이 아니므로 연결 문자열은 절대로 일부 파일 이름으로 해석되지 않습니다. 따라서 이러한 데이터베이스 서버는 Windows 네트워킹 프로토콜 호출을 사용하여 해당 파일을 열지 않아도되므로 Windows 네트워킹이 설치되어 있지 않은 Linux 등을 실행하는 서버에 연결할 수도 있습니다. 제트 연결의 경우 Windows 네트워킹을 사용하여 파일을 직접 열어야합니다.

+0

간단히 말해, ODBC는 Jet/ACE에서 원격으로 안전하게 사용할 수 없으므로 데이터를 보호하기 위해 중간 계층 (예 : PHP)이 있어야합니다. –

+0

좋아, 나는 너를 믿는다. 그러나 나는 이것을 이해하기를 원한다. 그리고 나는 그것을 얻는다라고 꽤 확신하지 않는다. 첫째, ODBC는 TCP/IP가 아닌 Access 데이터베이스를 파일로만 여는 것으로 완전히 이해합니다. 나는 ODBC에서 Access에 연결하는 것에 관심이 없다. 그들은 같은 호스트에 있습니다. 내가 관심을 갖는 것은 내 프로그램에서 ODBC 로의 연결입니다. ODBC가 원격으로 연결될 수 있고 기본 데이터 소스가 관련성이 없다는 인상을 받았습니다. ODBC에 연결할 때 파일 이름을 지정할 필요가 없으며 단순히 ODBC 데이터 원본 이름 만 지정합니다. – Teekin

+0

내가이 문제를 명확하게 이해하지 못하는 것 같아요. 클라이언트 ("ODBC에 연결"이 잘못된 용어 일 것입니다)에 액세스 파일 자체에 대한 액세스가 필요한 경우 ... 왜 ODBC를 사용하려고합니까? MS Access 파일에 연결하기 위해? 왜 처음에는 MS Access 용 ODBC 드라이버가 있습니까? 응답 주셔서 감사합니다, 앨버트! – Teekin

1

일반적으로 클라이언트와 데이터베이스간에 중개자를 배치합니다. 중개자는 인증, 권한 부여, 보안 데이터 전송 등을 처리합니다. 데이터베이스가 안전한 영역에서 방화벽 내부에 있다고 가정합니다. 방화벽 외부에있는 클라이언트의 보안을 강화하기 위해 추가하려는 모든 사항은 중개자가 처리합니다.

자바 사용자이므로 웹 클라이언트가 하나 이상의 서블릿과 통신하고 있다고 자동으로 생각합니다. 서블릿이 인증과 권한을 처리하게하십시오. HTTP는 방화벽 걱정을 의미하지 않습니다. HTTPS도 사용할 수 있습니다.

제 생각에는 그걸 넣기가 더 쉽다고 생각합니다. 게다가 SSL 기반의 ODBC 연결조차도 데이터베이스를 더 넓은 인터넷에 노출시킵니다. 그런 저장소에 내 데이터를 원하지 않습니다. 너?

+0

글쎄요, 그건 PHP 방법에 대한 중개자의 아이디어였습니다. 그게 우리가 할 수있는 일이지만, 만약 우리가 ODBC 연결 만 할 수 있다면 충분할 것입니다. 특정 IP 만 연결할 수있는 방화벽을 갖게되며, SSL을 통해 원격 서버의 신원이 보호되고 암호화되므로 우리에게 충분합니다. 그러나 중개 단계는 이것이 불가능하거나 비현실적으로 판명되면 우리가 할 일입니다. 의견을 보내 주셔서 감사합니다. – Teekin

+0

+1! 중간 계층이 없으면 클라이언트는 액세스 제어 파일에 대한 파일 시스템 액세스 권한을 가져야합니다. 중간 계층은 파일을 직접 사용자가 변조하는 것을 방지합니다. – kbrimington

0

MS-Access (실제로 MS-Jet) 데이터베이스에 파일이 하나 뿐인 이유는 무엇입니까?
사진을 찍을 수 없습니다. 그것이 ODBC 데이터베이스가 아니라면, 나는 그것을 그림화 할 수있다. 대부분의 MS-Jet ODBC 데이터베이스에는 100 개의 * .MDB 파일이 있습니다. 각 MDB 파일은 단일 테이블, 테이블 그룹 또는 논리적으로 물리적으로 분산 된 부분 테이블로 작동합니다 (분할되지 않고 MDB 파일의 수십 또는 100에 걸쳐 연결 없음). MDB 파일 자체는 데이터베이스로 간주되지 않습니다. 이것은 MS-Access 드라이버와 MS-Jet Engine을 사용하여 ODBC 데이터베이스를 구축 한 방법입니다. 대부분의 ODBC MS-Jet/MS-Access 드라이버 데이터베이스는 약 50 억 개의 행과 1 테라 바이트 크기입니다.

+0

이것은 내 기억이 흐려서 몇 년 전이었습니다. 내가 정확하게 기억한다면, 클라이언트는 MS Access를 사용하여 모든 종류의 양식과 물건을 MS Access 파일에 사용하고 있습니다. 그는 자신의 로컬 "데이터베이스"(파일)에서이 정보를 웹 사이트에 복사하거나 다른 곳으로 보내는 등의 정보를 원했습니다. 세부 사항을 기억할 수는 없지만, 기술적 디자인을 제어하지 않고 다른 사람이 수행 한 프로젝트였습니다. 저는 결코 이런 식으로 프로세스를 설계하지 않았을뿐만 아니라 사실 그 기술을 처음부터 선택하지 않았습니다. 그러나 고객은 클라이언트가 모든 것을 통제한다는 것을 알고 있습니다. 나는 그 디자인을 변호하지 않을 것이다. – Teekin

+0

MS-Access는 하나의 MDB에 모든 것을 갖출 수 있습니다. MDB에 여러 테이블을 연결해야하는 경우 최선의 선택이 아니기 때문에 MDB에서 모든 것을 완벽하게 처리 할 수 ​​있습니다. 모든 mdb는 여러 개의 데이터베이스를 가질 수있는 실제 MS-SQL 서버와 마찬가지로 하나의 데이터베이스입니다 (그리고 그 아래에 데이터베이스 당 하나의 파일).따라서 하나의 MDB 파일은 데이터베이스로 간주 될뿐만 아니라 실제로 하나의 데이터베이스입니다. – SuperDre

관련 문제