XPLATFORM은 SandBox개념에 준하여 보안정책을 지원합니다.
보안이란 해커로부터 개인 PC의 자원(폴더/파일)을 PC소유자의 동의 없이 도용, 파괴하는 행위로부터 보호하는 것을 의미합니다. 이번장은 XPLATFORM에서 제공하는 SandBox관련 보안 정책 및 그 적용방법에 대한 내용입니다.
아래 내용은 이번장에서 사용된 용어입니다.
SandBox
보호된 영역 내에서 프로그램을 동작시키는 것으로, 외부 요인에 의해 악영향이 미치는 것을 방지하는 보안 모델. ‘아이를 모래밭(샌드 박스)의 밖에서 놀리지 않는다’라고 하는 말이 어원이라고 알려져 있다. 이 모델에서는 외부로부터 받은 프로그램을 보호된 영역, 즉 ‘상자’ 안에 가두고 나서 동작시킨다. ‘상자’는 다른 파일이나 프로세스로부터는 격리되어 내부에서 외부를 조작하는 것은 금지되고 있다.)
Personal 폴더
OS Login User를 위한 개인 폴더로,
MS Windows의 경우 “My Documents”,
Linux의 경우사용자 home폴더를 의미합니다.
Domain
예를 들어 www.tobesoft.com/xplatform/a.xml URL 의 경우
Domain은 www.tobesoft.com을 의미합니다.
Domain지정 Url
www.tobesoft.com/xplatform/a.xml 형태의 Domain을 이용한 URL을 의미합니다.
IP지정 Url
127.0.0.1/xplatform/a.xml 형태의 IP Address를 이용한 URL을 의미합니다.
D Class
Domain지정 URL의 경우 예를 들어 www.tobesoft.com 의 경우 “*.tobesoft.com”에 해당하는 Domain을 의미합니다.
IP 지정 URL의 경우 예를 들어 “127.0..0.1”의 경우 “127.0.0.*”에 해당하는 IP를 의미합니다.
보안정책
보안에 대한 모든 권한은 사용자(PC소유자)에게 있습니다. 따라서, 보안 적용 대상에 해당하는 개인 PC의 자원(폴더/파일)접근 시 XPLATFORM이 “사용자 확인 창”을 띄워 사용자의 허락을 득하는 것을 원칙으로 합니다. ”사용자확인 창”은 안전하지 않은 파일에 접근한다는 것을 사용자에게 알리고 해당폴더내의 파일 및 하위폴더내의 파일에 대해 접근을 허용할 것인지 여부를 선택 할 수 있도록 하는 창입니다.
보안 적용 대상
개인 PC의 Personal폴더를 제외한 폴더(예:C:\) 및 파일
( Personal폴더는 보안과 관계없이( “사용자 확인 창”이 뜨지 않음) Project에서 자유롭게 접근가능 합니다.)
Socket통신처리시의 URL
Engine Update 관련 URL(ADL의 engineurl, TypeDefinition의 update url )
(단, 개인 PC 자원접근과 무관한 service url, form url등 일반적인 폴더나 URL은 사용자가 확인가능 하므로 보안 적용 대상에서 제외됩니다.)
보안 관리 방법
Project 관리자는 XPLATFORM에서 제공하는 SandBox Option (보안 Level 및 관련 기능)을 설정하여 보안을 관리합니다.
단, SandBox Option을 변경해도 Project 개발에는 영향을 미치지 않도록 하는것을 원칙으로 합니다.
보안 Level설정 권한
보안 Level설정에 대한 권한은 Project Manager에게만 부여됩니다.
따라서, Project Manager만 보안 Level을 설정할 수 있고 개발자가 임의로 보안 Level을 조정하지 못하도록 하십시오.
보안 Level설정 단위
보안 Level설정 단위는 ADL입니다. 즉, ADL에서만 보안 Level을 설정할 수 있습니다.
보안 Level의 종류 및 역할
XPLATFORM에서는 “Private”, “All” 두 종류의 보안 Level을 제공합니다.
Private
제한된 자원만을 접근할 수 있습니다.
Personal폴더 이외의 폴더는 접근 자체가 불가합니다.
URL은 ADL URL의 D Class에 해당하는 URL만 접근할 수 있습니다.
All
모든 자원을 접근할 수 있습니다.
단, XPLATFORM이 “사용자 확인창”을 띄우고 사용자가 확인 한 후 모든 자원에 접근할 수 있습니다.
위 내용을 정리하면 아래표와 같습니다.
보안 Level | 보안 적용 대상 | 사용자확인창 | 접근가능여부 | |
---|---|---|---|---|
Private | 폴더 | Personal 폴더 | X | 접근가능 |
이외의 폴더 | X | 접근불가 | ||
URL | D Class URL | X | 접근가능 | |
이외의 URL | X | 접근불가 | ||
All | 폴더 | Personal폴더 | X | 접근가능 |
이외의 폴더 | O | 접근가능 | ||
URL | D Class URL | X | 접근가능 | |
이외의 URL | O | 접근가능 |
XPLATFORM HTML5버전과 호환성을 유지해야 하므로 보안기능 관련된 경로지정 방식은 Web의 처리방식과 동일함을 원칙으로 합니다.
보안 세부정책
Project Manager가 ADL의 filesecurelevel 또는 networksecurelevelt Property를 “private” 또는 “all”로 설정합니다. (default는 “private”입니다.)
단, Application Object는 Property를 제공하되 개발자가 Script에서 임의로 변경할 수 없도록 ReadOnly로 제공합니다. 즉, ADL이 Load될 때 Property값이 설정되면 프로그램이 실행되는 동안에는 이 값을 변경할 수 없습니다.
”private”의 경우 보안 적용대상 폴더나 URL을 접근하면 “사용자확인 창”도 뜨지 않고 접근 자체가 되지 않습니다.“all”의 경우 보안 적용대상에 해당하는 폴더나 URL을 접근하면 XPLATFORM이 “사용자확인 창”을 띄우고 사용자가 허락을 하면 그 경우에 한하여 접근할 수 있습니다.
”사용자확인 창”이 뜨기 전 화면처리(예:Blur등) 작업을 할 수 있도록 ADL에서 onBeforeUserConfirm Event를 제공합니다.
“errordefine.xml”의 내용을 변경하여 ”사용자확인 창”에 출력되는 메시지를 바꿀 수도 있습니다.
URL에서의 ”/”가 XML의 경로를 지칭할 경우에는 domain이 root이므로, 웹브라우저의 기능과 동일한 domain경로를 의미합니다.
PC에서의 “/”는 Window system 폴더가 존재하는 drive의 root를 의미합니다. (linux의 경우 “/”는 root를 의미합니다.)
“./”는 현재경로를 의미합니다. 단, PC의 경로(VirtualFile Component를 사용할 경우등)상에서의 “./”는 “Personal폴더” 입니다.
위에 언급되지 않은 사항은 웹의 정책을 준수하는 것을 원칙으로 합니다.
보안 적용 방법
XPLATFORM에서 개인 PC의 자원을 도용, 파괴 할 수 있는 구체적인 경우는 FileDialog,VirtualFile 컴포넌트를 이용하여 개인 PC의 자원을 직접 접근하거나 TCPClientSocket컴포넌트를 이용하여 개인 PC의 자원을 도용하는 경우입니다.
FileDialog 컴포넌트 이용시
FileDialog는 사용자에 의해 폴더 및 파일이 선택되고 개발자 임의로 변경 할 수 없기 때문에 보안의 위험은 없습니다. 따라서, FileDialog를 사용하면 보안 Level에 관계없이 모든 폴더/파일을 접근 할 수 있습니다.
VirtualFile 컴포넌트 이용시
Project Manager가 ADL의 filesecurelevel Property를 “private” 또는 “all”로 설정합니다. (default는 “private”입니다.)
Personal폴더 이외의 폴더는 ”private”의 경우 접근 자체가 되지 않으며“all”의 경우 XPLATFORM이 “사용자확인 창”을 띄웁니다.
단, application. filesecurelevel 은 ReadOnly이므로 ADL이 Load된 후 에는 이 값을 변경할 수 없습니다.
”사용자확인 창”에 출력될 메시지는 “errordefine.xml”에서 변경할 수 있습니다.이 창이 뜨기 전 화면처리 등이 필요하면 ADL의 onBeforeUserConfirm Event에 처리할 내용을 코딩 하면 됩니다.
TCPClientSocket컴포넌트 이용시
Project Manager가 ADL의 networksecurelevel Property를 “private” 또는 “all”로 설정합니다. (default는 “private”입니다.)
ADL URL의 D Class에 해당하는 URL은 ”private”의 경우 접근이 안되며 “all”의 경우 XPLATFORM이 “사용자확인 창”을 띄웁니다.
단, application. filesecurelevel 은 ReadOnly입니다. 즉, ADL이 Load된 후 에는 이 값을 변경할 수 없습니다.
”사용자 확인 창”의 메시지 변경 및 창이 뜨기 전 화면처리는 VritualFile 컴포넌트 이용시와 동일합니다.
기타
XPLATFORM Engine을 다른 프로그램으로 바꾸어 설치 하는 경우를 방지하기 위하여 XPLATFORM update와 관련한 URL, 즉 engineurl, updateurl은 보안 Level에 관계없이 ADL Domain과 동일한 경우에만 허용됩니다.