Windows , IIS

객체구조 – 객체 보안

SungWookKang 2015. 7. 16. 19:10
반응형

객체구조 – 객체 보안

  • Windows Server 2008

 

파일을 오픈 할 때 읽기 용도인지 쓰기 용도인지 지정해야 한다. 읽기 접근 권한으로 오픈 된 파일에 쓰려고 하면 오류가 발생한다. 유사하게 익스큐티브에서 프로세스가 객체를 생성하거나 기존 객체에 대한 핸들을 오픈 할 때 프로세스는 요구 접근 권한의 집합을 지정해야 한다. 이 접근 권한은 모든 객체 유형에 적용되는 표준 접근 권한(읽기와 쓰기, 실행)이나 객체 유형마다 다른 특정 접근 권한을 요청한다.

 

프로세스가 객체에 대한 핸들을 오픈 할 때 객체 관리자는 프로세스의 요구 접근 권한을 전달하면서 보안 시스템의 커널 모드 부분인 보안 참조 모니터를 호출 한다. 보안 참조 모니터는 프로세스가 요청하는 접근 유형을 허용하는지 객체 보안 디스크립터가 검사한다. 허용한다면 보안 참조 모니터는 프로세스에게 승인된 접근 권한의 집합을 반환하고 객체 관리자는 자신이 생성하는 객체 핸들에 이를 저장한다.

 

아래 그림은 파일의 접근 권한 대화상자 이다. 설정 부분을 살펴보면 Everyone 그룹은 디렉터리 삭제 접근 권한이 없지만 SYSTEM 계정은 삭제 접근 권한이 있음을 알 수 있다. SYSTEM 특권을 가진 세션 0 서비스가 자신의 객체를 이 디렉터리에 저장하기 때문이다. Everyone은 객체 추가 특권을 갖더라도 세션 0 이외의 세션에서 실행할 때 디렉터리에 객체를 추가하려면 특별한 특권이 필요하다는 사실에 유의하자.

 

 

 

윈도우는 접근 마스크를 지정할 때 추가적인 인자를 줄 수 있는 Ex(확장)버전의API를 지원한다. 오픈 객체 API를 사용하면 오픈 호출 시의 실패를 처리할 때 내재된 레이스 컨디션을 초래할 수도 있다.

 

이런 종류의 많은 애플리케이션에서 실패가 발생하는 경우는 오픈 API가 생성 API보다 먼저 호출되는 경우다. 이러한 경우 생성동작을 단일 작업으로 할 수 있는 보장된 방법이 없다. 레이스 컨디션과 복잡성으로 인해 오픈 객체 API의 사용이 문제에 대한 해결책이 되지 못하므로 Ex API를 사용해야 한다.

 

 

[참고자료]

Windows Internals

 

 

강성욱 / http://sqlmvp.kr

 

반응형

'Windows , IIS' 카테고리의 다른 글

스핀락(SpinLock)  (0) 2015.07.16
객체구조 – 객체 유지  (0) 2015.07.16
객체구조 – 객체 핸들과 프로세스 핸들 테이블  (0) 2015.07.16
객체구조 – 객체 메소드  (0) 2015.07.16
객체구조 – 형식 객체  (0) 2015.07.16