2006/09/01

솔라리스에서 RBAC( roll based access control )의 의미 및 구성 방법

안녕하세요. 한국썬의 김봉환입니다.

아마도 useradd를 실행할 수 있었던 사용자는 Primary Administrator 권한을
위임받을 수 있는 profile을 가졌을 겁니다. 그 사용자에서 profiles -l 해보
세요. 이 권한으로 위임받은 사용자는 exec_attr에 추가되는 모든 명령어를
실행할 수 있습니다.

profile이라는 것은 권한(authorization)과 명령 실행(command)를 결합해 놓
은 환경입니다.
따라서, 특정 사용자에게 특정 profile을 할당해주게되면, 그 profile을 위임
받은 사용자는 이미 권한을 획득한 상태이기 때문에 exec_attr에 등록된 명령
어를 실행할 수 있는 것입니다.

특정 사용자에게 profile를 위임하지 않은 상태에서 권한을 구성하게 할 수도
있습니다만, 이렇게 사용하시려면 사용하기가 불편할 뿐 아니라, 관리하기가
까다롭기 때문입니다.

dtrace 와 같은 명령어는 대개 kernel probe를 위해서 root 권한을 가지고 있
는 사용자가 실행할 수 있는데, 이렇게 하기 위해서는 특정 사용자를 dtrace
수행 권한을 포함한 profile을 가지게 할 수 있고, 직접적으로 authorization
을 가지게 할 수도 있습니다.

user_attr(4), auth_attr(4) 를 참고하십시요.

RBAC의 바람직한 사용법은 profile을 구체적으로(촘촘하게) 구성하시고, 사용
자에 따라서 profile을 수여받도록 하는 것이 바람직합니다.

따라서, 사용자에게 특정 일만 하게 하시고 싶으시면 그 사용자에게 Primary
Administrator를 수여하지 마시고, 적절한 profile을 제공하십시요. 만약
prof_attr에 기 만들어진 profile이 존재하지 않는다면, 만드셔도 됩니다.

prof_attr에 new profile 추가
exec_attr에 새로 추가된 profile에 따라 실행이 필요한 명령어 추가
user_attr에 새로 만든 profile을 추가함에 따라서 쉽게 RBAC 을 사용하실 수
있습니다.

보다 섬세하게 RBAC을 사용하시고 싶으면 auth_attr에 나오는데로, 사용자에
게 auths를 할당할 수 있습니다만, 여러개의 authorization은 dependancy를
가지기 때문에 완벽하게 이해하셔야 사용하실 때 문제가 없읍니다.

예를 들면, 쓰기 권한을 주고, 읽기 권한을 막았다던가 하게 되면, 쓰기 권한
에도 문제가 생깁니다. 또한, 일반적인 프로세서가 open/read/write하는 모든
대상에 대해서 이해를 하고 있어야 합니다. 가령 웹서버가 소켓과 포트에 대
한 권한을 열어주고 화일 시스템에 대한 접근을 막아두면, 로그를 쌓는 기능
을 가진 웹서버는 에러로 동작하지 않을 수도 있습니다.


2006/08/30

초고속 컴파일 환경 구축 방안

고객이 사용하는 환경을 그대로 유지하고 싶은 채 컴파일 속도를
증가 시키고 싶으면, 몇가지가 있을 수 있습니다.

1) 현재 컴파일 서버 만을 업그레이드 하는 경우
현재 썬에서 제공하는 X4600을 사용하면 용량이 두배정도 증가하니,
IO를 충분하게 유지한다는 가정하에서 소요 시간이 절반으로 줄겠죠.

2) 컴파일을 대행해주는 접속 노드 환경 구축
고객 노트북 -> 컴파일 클러스터 노드 -> 소스 화일 서버

같은 아키텍쳐를 유지함으로써 각 노드부하별 사용자들이 컴파일 노드로
원격접속한후 소스 화일 서버에서 공유된 화일 시스템을 마운트한 후 각 노드별로
컴파일하는 방법이 있습니다. 이렇게 하기 위해서는 사용자들이 각 서버의
노드의 사용율이 얼마나 되는 지를 임의 배분하거나, 스스로 판단해서 접속한 후
실행해야 하며, 사용자간 컴파일 의존관계를 가지고 있지 않아야 합니다.

이런 구조로 구성하려면, 저가의 접속 서버를 확장 구축해서 접속 서버들이 각각 컴파일 하도록 합니다. 소스는 공유 소스 서버에서 가져와서 컴파일한 후 소스 서버에 저장하도록 합니다.

윈도우즈 컴파일러가 분산 컴파일러(멀티 cpu에서 컴파일되는 것을 지원하는 컴파일러)
가 아니라면 노트북에서 컴파일이 3시간이라고 했으니, 서버가 비슷한 구조면
혁신적으로 빨라지기는 어렵습니다만(CPU를 하나만 죽어라 쓸테니) 접속 서버로
Dual core 1cpu server를 사용자의 1/4 정도 구축하고, 뒤에 X4600같은 화일 서버를 소스 서버로 구축하고, 기가비트로 서버간 접속을 구성하고, X4600은 스위치까지 4G trunking을 사용하길 추천합니다. 소스 화일 서버로 윈도우즈를 고집하지 않는 다면, Thumper에 삼바를 올리는 것도 아주 훌륭함.

장점은 구축하기 쉽다. 쓰기 편하다. 비용 적게 든다.
하지만, 컴파일 속도 개선은 컴파일 서버 노드의 CPU 성능을 벗어나지 못한다.


3) 컴파일을 대신해주는 컴퓨팅 노드 구축(Grid)

현재 사용하는 고객 환경과는 거리가 있는 것으로 보입니다. 이런 환경으로 구축하려면 Grid 환경과 그리드를 지원하는 소프트웨어(컴파일러)등을 사용해야 하는데, 윈도우즈 기반의 그리드는 제 소관 밖이어서 드릴 말이 별로 없습니다만 구성은 가능합니다.

현재 컴파일 속도를 배가하는게 가장 좋은 기술입니다만, 사용 환경과 컴파일러등에 영향을 많이 받습니다. 장기적으로는 이 환경을 구축하는 것이 바람직합니다만, 아직 windows 기반의 HPC 기술은 매우 초기 단계로 취약합니다. 그래도 관심이 있어할 수 있으므로 사이트 자료를 참고해서 제안하세요. 그리고, 우리가 제안하기엔 아주 취약합니다.
( http://www.microsoft.com/hpc ; microsoft 기술 자료임)
http://cmssrv.tc.cornell.edu/ctc/winhpc/ ; 코넬대학 자료임

4) Code Versioning System 사용
각 사용자들이 소스 서버의 소스를 각 사용자의 시스템으로 다운로드한 후 컴파일한 후 서버로 재 업로드하는 방법으로 적정 소스 관리 툴을 사용해야 합니다. 오픈 소스계열에서는 CVS가 가장 많이 사용됩니다. software 이름으로는 rcs 이고.. 커머셜 제품도 꽤 많이 있습니다.

이런 경우의 단점은 소스코드의 유출이 있을 수 있으며, 컴파일 속도가 노트북 성능을 넘어서 나올 수 없습니다. 노트북보다 빨라야 한다고 했으니, 이 방법은 바람직하지 않을 것으로 보임.



2006/08/29

CDE의 기본 screensaver를 xscreensaver로 변경하는 법

begin:vcard
fn:Bonghwan Kim
n:Kim;Bonghwan
email;internet:bonghwan.kim@sun.com
tel;work:82-2-2193-5225
tel;cell:82-16-325-9068
x-mozilla-html:FALSE
version:2.1
end:vcard

CDE에서 screen saver를 xscreensaver로 변경하려면

일단,

1) XScreenSaver.dt, Lock.fp 를 작성한다. (man xscreensaver 참조)
2) /usr/dt/appconfig/types/C
/usr/dt/appconfig/types/ko
/usr/dt/appconfig/types/ko_KR.UTF-8
에 위에서 만든 화일을 저장한다.

3) 위 디렉토리에 있는 sys.resources 화일에서
dtsession*saverList: StartDtscreenBlank
라인을 찾아서
dtsession*saverList: XScreenSaver
로 변경한다.

4) 로그아웃 했다가, 다시 로그인한 후 Lock 버튼을 클릭해본다.
5) 한참(아마 30분) 을 기다려 본다. ^^

6) xscreensaver가 정상적으로 시동이 되면,
/usr/openwin/lib/xscreensaver/hacks 디렉토리에 실행하고자하는 실행 퍼미
션을 가진 쉘스트립트를 만든다.

7) /usr/openwin/lib/app-defaults/XScreenSaver
화일에 default-n:에 실행할 스크립트를 지정한다.

내가 테스트 해보지는 않았습니다. 테스트 해보고, 잘안되는 것 있으면 구체
적으로 물어봐주세요. ^^;

김봉환/