메커니즘과 정책의 분리
Separation of mechanism and policy메커니즘과 정책의[1] 분리는 컴퓨터 과학에서 설계 원리다.그것은 메커니즘(운영의 인가 및 자원 배분을 제어하는 시스템 구현의 부분들)이 어떤 결정을 인가하고 어떤 자원을 할당해야 하는지에 따라 정책을 지시하거나 지나치게 제한해서는 안 된다고 명시하고 있다.
보안 메커니즘(인증과 권한 부여)의 맥락에서 가장 일반적으로 논의되지만, 메커니즘과 정책의 분리는 소프트웨어 추상화의 설계뿐만 아니라 다양한 리소스 할당 문제(예: CPU 스케줄링, 메모리 할당, 서비스 품질)에 적용된다.[citation needed]
Per Brinch Hansen은 RC 4000 멀티프로그래밍 시스템의 운영 체제에서 정책과 메커니즘의 분리 개념을 도입했다.[2]Artsy와 Livny는 1987년 논문에서 "메커니즘과 정책의 극한 분리"[3][4]를 갖는 운영 체제 설계에 대한 접근법을 논의했다.2000년 기사에서 체르베낙 등은 메커니즘 중립성과 정책 중립성의 원리를 설명했다.[5]
근거 및 시사점
메커니즘과 정책의 분리는 단일화와 구별되는 마이크로커널의 근본적인 접근법이다.마이크로커널에서는, 운영 체제 서비스의 대다수가 사용자 레벨 서버 프로세스에 의해 제공된다.[6]운영체제가 실제 세계에서 가장 광범위한 보안 정책을 지원하기 위한 적절한 메커니즘을 제공하는 유연성을 갖는 것이 중요하다.[7]
제품의 수명 동안 다른 유형의 사용자가 시스템을 사용할 수 있는 모든 다른 방법을 상상하는 것은 거의 불가능하다.이는 하드 코딩된 모든 정책이 일부(또는 아마도 대부분의) 잠재 사용자에게는 부적절하거나 부적절할 가능성이 높다는 것을 의미한다.메커니즘 구현을 정책 사양에서 분리하면 서로 다른 애플리케이션에서 서로 다른 정책과 동일한 메커니즘 구현을 사용할 수 있다.이것은 그러한 메커니즘이 더 긴 시간 동안 더 넓은 범위의 사용자의 요구를 더 잘 충족시킬 가능성이 있다는 것을 의미한다.
실행 메커니즘을 바꾸지 않고 새로운 정책을 가능하게 하는 것이 가능하다면, 그러한 정책 변화의 비용과 위험은 크게 감소될 수 있다.첫째로, 이것은 단지 메커니즘과 그들의 정책을 구별되는 모듈로 분리함으로써 이루어질 수 있다: 이 정책을 실행하는 모듈(예: 스케줄링 메커니즘)을 변경하지 않고 정책을 지시하는 모듈(예: CPU 스케줄링 정책)을 교체함으로써, 우리는 시스템의 동작을 변경할 수 있다.또한, 응용 프로그램의 요구에 따라 광범위하거나 가변적인 범위의 정책이 예상되는 경우, 정책을 특정하기 위한 비코드 수단을 만드는 것이 타당하다. 즉, 정책이 실행 가능한 코드로 하드코딩되지 않고 독립적인 설명으로 지정될 수 있다.예를 들어, 파일 보호 정책(예: Unix의 사용자/그룹/기타 읽기/쓰기/실행)이 매개 변수화될 수 있다.대안적으로 구현 메커니즘은 새로운 정책 사양 언어에 대한 통역을 포함하도록 설계될 수 있다.두 경우 모두, 시스템은 일반적으로 고객에게 정책 사양이 제공된 후 시스템에 통합되거나 다른 것으로 대체될 수 있는 지연 바인딩 메커니즘(예: 구성 파일을 통한 구성 옵션의 지연 바인딩 또는 API를 통한 런타임 프로그래밍 기능)을 수반한다.
메커니즘/정책 분리의 일상적인 예는 잠긴 도어에 접근하기 위해 카드 키를 사용하는 것이다.메커니즘(자기 카드 판독기, 원격 제어 잠금 장치, 보안 서버 연결)은 진입 정책(어떤 문, 어떤 시간에 사람들이 출입할 수 있도록 허용해야 하는지)에 어떠한 제한도 가하지 않는다.이러한 결정은 중앙집중식 보안 서버에 의해 이루어지며, 이 서버는 아마도 룸 액세스 규칙의 데이터베이스를 참조하여 결정을 내릴 것이다.특정 권한 부여 결정은 룸 액세스 데이터베이스를 업데이트하여 변경할 수 있다.데이터베이스의 규칙 스키마가 너무 제한적이라고 판명되면, 기본 메커니즘(읽기, 잠금 및 연결)은 변경하지 않고 전체 보안 서버를 교체할 수 있다.
물리적 키 발급과 비교해 보십시오. 문을 열 수 있는 사용자를 변경하려면 새 키를 발급하고 잠금을 변경하십시오.이것은 잠금 해제 메커니즘과 접근 정책을 얽어매고 있다.호텔의 경우, 이것은 키카드를 사용하는 것보다 훨씬 덜 효과적이다.
참고 항목
메모들
- ^ 버틀러 W. 램슨과 하워드 E.스터기스.ACM 19(5) 통신 [1] 운영체제 설계 반영 :251-265 (76년 5월)
- ^ "Per Brinch Hansen • IEEE Computer Society". www.computer.org. Retrieved 2016-02-05.
- ^ Miller, M. S. & Drexler, K. E. (1988)"시장 및 계산: "아고리아 오픈 시스템".Huberman, B. A. (Ed.) (1988), 페이지 133–176.계산의 생태학.노스홀랜드.
- ^ 아트시, 예샤야후 외, 1987.
- ^ 체르베낙 2000 페이지 2
- ^ Raphael Finkel, Michael L. Scott, Artsy Y. 및 Chang, H. [www.cs.rochester.edu/u/scott/papers/1989_IEEETSE_Charlotte.pdf Charlotte와의 경험: 분산 운영 체제의 단순성과 기능] IEEE 트랜스. 소프트웨어 Engn 15:676-685; 1989. 퍼듀 대학의 실험 분산 시스템에 대한 설계 원리에 관한 IEEE 워크숍에서 제시된 확장 추상.
- ^ R. 스펜서, S. 스말리, P. 로스코, M. 히블러, D.Andersen, and J. Lepreau The Flask Security Architecture: 제8회 USENIX 보안 심포지엄 진행 중 다양한 보안 정책에 대한 시스템 지원 1999년 8월 123~139페이지.
참조
- Per Brinch Hansen (2001). "The evolution of operating systems" (PDF). Retrieved 2006-10-24. 책에 포함: (18 페이지)
- Wulf, W.; E. Cohen; W. Corwin; A. Jones; R. Levin; C. Pierson; F. Pollack (June 1974). "HYDRA: the kernel of a multiprocessor operating system". Communications of the ACM. 17 (6): 337–345. doi:10.1145/355616.364017. ISSN 0001-0782. S2CID 8011765.
- Hansen, Per Brinch (April 1970). "The nucleus of a Multiprogramming System". Communications of the ACM. 13 (4): 238–241. CiteSeerX 10.1.1.105.4204. doi:10.1145/362258.362278. ISSN 0001-0782. S2CID 9414037. (pp. 238–241)
- Levin, R.; E. Cohen; W. Corwin; F. Pollack; W. Wulf (1975). "Policy/mechanism separation in Hydra". ACM Symposium on Operating Systems Principles / Proceedings of the Fifth ACM Symposium on Operating Systems Principles. 9 (5): 132–140. doi:10.1145/800213.806531. S2CID 10524544.
- 체르베낙 외데이터 그리드[permanent dead link] Journal of Network and Computer Applications, Volume 23, 2000년 7월 3일, 187-200페이지
- Artsy, Yeshayahu, and Livny, Miron, 완전한 오픈 컴퓨팅 시스템의 설계에 대한 접근법 (University of Wisconsin / Madison, 1987년 3월) 컴퓨터 과학 기술 보고서 #689.