|
|
2002-09-06 오후 10:55:07 / 번호: 9270 / 평점: (-)
|
|
|
Re:
i'm afriad that 한번 더 생각할 필요가 있는것 같쒸미...... |
손상현 /
alpastar
|
|
|
이건 다음 세미나에서 강의할때 중요한 이슈중의 하나이기 때문에 특별히^^ 간단하게 설명드리겟읍니다.
1. os 차원에서 처리
fox 테이블은 한개의 파일입니다. 본질적으로 워드,액셀 등의 파일과 다를바 없다 라고
생각하셔도 무방할 겁니다.(ISAM 파일입니다)
파일을 관리할때는 서버의 파일시스템을 NTFS 형식으로 해놓으면 데렉토리별로, 파일별로 권한을
설정할수가 있읍니다. 이 점을 착안하시면 어느정도 해결책이 나올수 있을것같읍니다.
(안될수도 있읍니다.^^...장담을 못하겟거든요...)
서버쪽에서 도메인을 설정하고 사용유저/그룹을 만든뒤 테이블과 테이블이 존재하는 디렉토리에 권한을
셋팅해둡니다(이거 설계하는게 쉬운 작업이 아닙니다)
클라이언트에서는 초기 부팅시 사용자이름과 패스워드를 치고 들어가서 윈도우즈의 도메인안으로 들어갑니다.
그러면 서버쪽의 자원을 이용하려고 할시 서버에 설정된 액세스콘트롤의 지배를 받읍니다.
따라서 접근제한및 선별이 가능할것으로 사려되오나(이 통제작업을 하는주체가 OS 임)
장담은 못하겠쒸미다.
자원을 이용할려고 덤비는 놈은 궁극적으로 폭스프로그램이고 유닉스처럼 이놈(프로세스)의 소유자라는
개념이 없기 때문에 윈도우즈에서는 어떻게 되는지 장담을 못하겠쒸미다.
일단 저질러 보시고 다시 생각을 정리해 보는게 좋을듯 합니다.(무식하면 용감하다.....)
2. DBMS 차원에서 관리 (통제작업을 하는주체가 DBMS 임)
가장 좋은게 이것입니다마는
2.1. 서버에 폭스DBMS 를 설치하여 사용하는 것이 아니다(또 이렇게 하여서도 아니되옵니다..)
2.2. 단지 os 만 설치되어 있다.
2.2 방식이기 때문에 소위말하는 파일서버 방식입니다. 필자가 늘 무식하다고 주장하는....^^
2.1 번 형식이라면 소위 말하는 클라이언트-서버 방식이 되겟지요.
클라이언트쪽의 폭스엔진이 서버쪽의 폭스엔진과 대화를 하는 형식의....
ms-sql 이나 mysql 등에는 권한 테이블이라는게 있읍니다.
os 차원에서의 사용자/패스워드와는 전혀 별도로, 자기들 나름대로의 사용자/비밀번호를 부여하여
각 데이타베이스/테이블 /칼럼(피일드) 별로 권한을 아주 세부적으로 설정할수가 있읍니다.
(revoke/grant 명령을 사용합니다)
다시말하여 설사 os차원에서의 그 막강한 root(윈도우에서는 administrator)라 할지라도 전혀 힘을 쓸수가
없는상황이 된다는 얘깁니다. 그거는 너거동네(os) 얘기/사정이고 데이타베이스에 관한한 모든 행위는
나의 통치를 따라라 라는 식이 된다는것이지요.
폭스는 바로 이 권한시스템이 없읍니다. 언제나 싱글사용자모드 입니다.(이게 한계중의 하나입니다)
따라서 (클라이언트)프로그램에서 조절을 할수 밖에 없읍니다.
다시 애기하지만 서버쪽 프로그램이 아니라 클라이언트쪽 프로그램이 액션을 취할수밖에 없읍니다.
모든 테이블을 사용자에게서 격리시키고 오직 프로그램에서만 그위치와 경로를 알게한뒤에 아이디와 패스워드를
물어서 허용될 경우만 프로그램이 진행을 해 나가게 만드는것입니다.
다시 말하지만 서버쪽 프로그램이 아이디나 패스워드를 묻는게 아니라 클라이언트쪽 프로그램이 아이디와 패스워드를
묻게됩니다. 당연히 일치여부(지금까지의 모든 과정을 "인증" 이라고 합니다.)도 클라이언트에서 파악해야 되구요.
잘 생각해 보십시요, 결코 쉬운작업이 아닙니다.
만일 서버쪽이 권한 시스템을 가지고 있다면
1. 접속시에 이미 아이디와 패스워드를 제공하여 인증과정을 거칩니다.
2. 인증절차에 합격되면 무조건 접근을 합니다. dbms가 접속시의 id를 가지고 일일이 액션별로 권한이 있는지
일일이 점검을 한뒤 필요한 액션을 취해 줍니다.
(select,insert,update,delete 뿐만아니라 테이블의 삭제, 수정등등 모든 행위별로.......)
따라서 클라이언트는 서버쪽에 권한시스템만 셋팅해두면 더이상 신경쓸 필요가 없지요.
지금 요구하시는 모든 필요가 간단히(?) 충족됩니다.
3. odbc 를 통하여 접근
폭스 테이블인 경우는 아이디와 패스워드가 없는것으로 알고 있읍니다.(맞나, 기억이 가물가물...)
또 설사 아이디와 패스워드인증을 한다하여도 접속만 통제할 뿐이지 더이상의 통제는 불가합니다.
( 꼭 할려고 한다면 상상력을 이용한 편법을 동원하여야 겟지요.여기에는 정답이 없음)
필자가 얘기하고자 하는바를 한마디로 표현하기 위해서 단적인 비교를 pseudo-code 로 작성해보면
다음과 같읍니다.
***** visual fox
sqlconnect( 사용자이름,패스워드) -> 결과로 링크 identifier 를 얻는다.
접속은 되었다.
각 자원(데이타베이스, 테이블/피일드)별로 권한셋팅이 불가능
각자원별로 각 액션별 권한 셋팅이 블가능
**** mysql/ms-sql
connect함수(호스트이름, 사용자 이름,비밀번호)
서버쪽에서 자원별, 액션별로 권한을 셋팅
예)
grant select 권한 on 데이타베이스 1 from 사용자1 (권한 부여)
grant insert,delete,update 권한 on 데이타베이스 1.테이블1 from 사용자2 (권한 부여)
revoke inser권한 on 데이타베이스 1.테이블1 from 사용자2 (권한 박탈)
권한및 인증시스템이 없다는것이 얼마나 불편한것인지 피부로 느낄수 있는 좋은 예제이기에
잠시 길게 적어보았읍니다. 폭스의 한계를 애기할수 있는 좋은 예제이구요
(그래도 폭스는 너무 귀여워^^)
ps: dbc 가 물리적으로는 서버쪽 하드디스크위에 있지만 논리적으로 보면 클라이언트의 하드디스크위에 있는셈입니다.
(논리적이 더 중요합니다.)
더더욱 중요한 점은 어느쪽 cpu가 작동하는것일까요.? 서버쪽 cpu?, 클라이언트쪽 cpu?
잘 생각해보시기 바랍니다. dbc 의 기능문제가 아닐것 같다는 우려가 듭니다.
많이 생각해보시기 바랍니다. 이런 부분에서 헤매고 불편을 절감해야 발전이 있읍니다.^^
|
|
|
이
글에 평점 주기:
0점
1점 ■
2점 ■■
3점 ■■■
4점 ■■■■
5점 ■■■■■
6점 ■■■■■■
7점 ■■■■■■■
8점 ■■■■■■■■
9점 ■■■■■■■■■
|
|
|
|
|
|
|
|
|
|
2002-09-06 오전 9:56:32 / 번호: 9267 / 평점: (-)
|
|
|
Re:
감사합니다. 7.0을 언제나 구할수 있으련지.. (냉무) |
이미경 /
water
|
|
|
. |
|