최소 특권의 원칙

Principle of least privilege

정보보안, 컴퓨터 과학 및 기타 분야에서 최소 특권의 원칙 또는 최소 권한의 원칙으로도 알려진 최소 특권의 원칙(PoLP)은 컴퓨팅 환경의 특정 추상화 계층에서 모든 모듈(주제에 따라 프로세스, 사용자 또는 프로그램 등)이 다음과 같이 요구됩니다.정당한 [1]목적에 필요한 정보 및 자원에만 접근할 수 있습니다.

세부 사항

원칙은 의도된 기능을 수행하는 데 필수적인 권한만 사용자에게 부여하는 것을 의미합니다.예를 들어 백업을 생성하는 유일한 목적을 가진 사용자 계정은 소프트웨어를 설치할 필요가 없습니다.따라서 백업 및 백업 관련 응용 프로그램만 실행할 수 있습니다.새 소프트웨어 설치와 같은 다른 권한은 차단됩니다.이 원칙은 통상적인 사용자 계정으로 작업하는 PC 사용자에게도 적용되며, 반드시 필요한 경우에만 비밀번호로 보호된 특권 계정을 엽니다.

사용자에게 적용되는 경우에는 모든 사용자 계정이 가능한 한 적은 권한으로 실행되어야 하며 가능한 적은 권한으로 응용 프로그램을 시작해야 한다는 개념을 나타내는 최소 사용자 액세스 또는 최소 권한 사용자 계정(LUA)이라는 용어도 사용됩니다.

최소 특권의 원칙은 폴트 톨러런스(Fault Tolerance) 및 악의적인 행동(컴퓨터 보안)으로부터 데이터 및 기능의 보호를 강화할 때 중요한 설계 고려 사항으로 널리 인식되고 있습니다.

이 원칙의 장점은 다음과 같습니다.

  • 시스템 안정성 향상.코드의 시스템 변경 범위가 한정되어 있는 경우, 가능한 액션이나 다른 애플리케이션과의 상호작용을 테스트하기 쉬워집니다.예를 들어 제한된 권한으로 실행되는 애플리케이션은 머신을 크래시하거나 같은 시스템에서 실행되는 다른 애플리케이션에 악영향을 미칠 수 있는 작업을 수행할 수 없습니다.
  • 시스템 보안 강화.코드가 실행할 수 있는 시스템 전체의 액션에 한정되어 있는 경우, 1개의 애플리케이션의 취약성을 이용해 머신의 나머지를 부정 이용하는 것은 불가능합니다.예를 들어 Microsoft는 "표준 사용자 모드로 실행하면 루트 키트, 스파이웨어 및 검출 불가능[2]바이러스 의 "섀터 공격" 및 악성코드로 인한 의도하지 않은 시스템 수준의 손상에 대한 보호를 강화할 수 있습니다."라고 명시하고 있습니다.
  • 도입의 용이성.일반적으로 응용 프로그램에 필요한 권한이 적을수록 더 큰 환경에 쉽게 배포할 수 있습니다.이것은, 통상, 디바이스 드라이버를 인스톨 하거나 고도의 시큐러티 권한을 필요로 하는 애플리케이션에서는, 처음의 2개의 장점에 의해서 발생합니다.예를 들어, Windows 에서는, 디바이스 드라이버가 없는 솔루션을 인스톨 하지 않고 직접 실행할 수 있습니다만, 드라이버에 상승 권한을 [3]부여하려면 , Windows 인스톨러 서비스를 사용해 디바이스 드라이버를 개별적으로 인스톨 할 필요가 있습니다.

실제로는 진정한 최소 특권의 여러 경쟁 정의가 존재합니다.프로그램의 복잡성이 급속히 증가함에 따라 잠재적인 문제의 수도 급증하여 예측 접근법이 비현실적입니다.예를 들어 처리할 수 있는 변수의 값, 필요한 주소 또는 그러한 것이 필요한 정확한 시간 등이 있습니다.예를 들어 객체 기능 시스템에서는 일회성 특권을 사용할 때까지 부여를 연기할 수 있습니다.현재 가장 현실적인 접근법은 수동으로 불필요한 권한을 제거하는 것입니다.결과 권한 세트는 일반적으로 프로세스에 필요한 실제 최소 권한을 초과합니다.

또 다른 제한사항은 운영 환경이 개별 [4]프로세스에 대한 권한에 대해 갖는 제어의 세분화입니다.실제로 프로세스에 필요한 정확한 권한 세트만 용이하게 하기 위해 필요한 정밀도로 프로세스의 메모리, 처리 시간, I/O 디바이스 주소 또는 모드에 대한 액세스를 제어하는 것은 거의 불가능합니다.

원래 제롬 [5]솔쳐는 다음과 같습니다.

시스템의 모든 프로그램 및 모든 특권 사용자는 작업을 완료하기 위해 필요한 최소한의 권한을 사용하여 조작해야 합니다.

--

Peter J. Denning은 그의 논문 "Fault Tolerance Operating Systems"에서 폴트 톨러런스의 4가지 기본 원칙 중 더 넓은 관점에서 이를 설정했습니다.

특권의 동적 할당은 1972년 [6][7]로저 니덤에 의해 일찍이 논의되었다.

지금까지 최소 특권의 가장 오래된 인스턴스는 아마도 login.c의 소스 코드일 것입니다.이러한 인스턴스는 슈퍼 사용자 권한으로 실행을 시작하여 버전6 Unix 소스 코드에 나타나 있듯이 제로 이외의 인수를 사용하여 setuid()를 통해 비활성화됩니다.

실행

커널은 운영 체제의 핵심이고 하드웨어 액세스 권한을 가지고 있기 때문에 항상 최대 권한으로 실행됩니다.운영체제, 특히 멀티유저 운영체제의 주요 책임 중 하나는 하드웨어 가용성 관리와 실행 인 프로세스에서 하드웨어에 대한 액세스 요청입니다.커널이 크래시하면 상태를 유지하는 메커니즘도 실패합니다.따라서 하드리셋 없이 CPU를 복구할 수 있는 방법이 있더라도 보안은 계속 적용되지만 장애를 검출할 수 없었기 때문에 운영체제는 장애에 적절하게 대응할 수 없습니다.이는 커널 실행이 중단되거나 프로그램 카운터가 끝없는 루프(일반적으로 기능하지 않는 루프)[citation needed]의 어딘가에서 실행을 재개했기 때문입니다.이는 기억상실(커널 실행 실패)이 발생하거나 항상 시작점으로 돌아가는 닫힌 미로(닫힌 루프)에 갇히는 것과 유사합니다.

인텔 x86의 특권 링에 의해 나타나는 최소 특권의 원칙

크래시 후에 트로이 목마 코드를 로드하여 실행함으로써 실행이 재개되면 트로이 목마 코드의 작성자가 모든 프로세스의 제어를 침해할 수 있습니다.최소 권한 원칙은 코드를 가능한 최소 권한/권한 수준으로 강제 실행합니다.즉, 코드 실행을 재개하는 코드(트로이 목마든 단순히 예기치 않은 장소에서 코드 실행을 픽업하든)에는 악의적인 프로세스나 바람직하지 않은 프로세스를 실행할 수 없습니다.이를 위해 사용되는 한 가지 방법은 마이크로프로세서 하드웨어에 구현될 수 있습니다.예를 들어 인텔의 x86 아키텍처에서는 제조원이 4개의 (링 0 ~링 3)를 설계하고 있습니다.이러한 액세스 등급은 국방기관이나 정보기관의 [citation needed]보안 클리어런스 시스템과 거의 같습니다.

일부 운영 체제에서 구현된 것처럼 프로세스는 잠재적인 권한 세트와 활성 권한 [citation needed]세트로 실행됩니다.이러한 특권 세트는 fork()의 의미에 따라 부모로부터 상속됩니다.TCB의 컴포넌트를 기술적으로 구성하고 신뢰할 수 있는 프로그램 또는 신뢰할 수 있는 프로세스라고 하는 특권 기능을 수행하는 실행 파일도 특권 세트로 표시될 수 있습니다.는 사용자 ID그룹 [citation needed]ID 설정 개념의 논리적 확장입니다.프로세스에 의한 파일 특권의 상속시스템콜exec() 패밀리의 의미에 따라 결정됩니다.잠재적인 프로세스 권한, 실제 프로세스 권한 및 파일 권한이 상호 작용하는 정확한 방법은 복잡해질 수 있습니다.실제로는 태스크에 필요한 권한만 사용하여 프로세스를 강제로 실행함으로써 최소한의 권한이 실행됩니다.이 모델을 고수하는 것은 매우 복잡하고 오류가 발생하기 쉽습니다.

유사한 원칙

Trusted Computing Base(TCB; 신뢰 컴퓨팅 기반) 최소화의 TCSEC(Trusted Computing System Evaluation Criteria) 개념은 기능적으로 가장 강력한 보증 클래스인 viz., B3 및 A1(명백히 다르지만 기능적으로는 동일)에만 적용되는 훨씬 더 엄격한 요건입니다.

최소 특권은 대부분의 경우 특권 브라켓과 관련지어집니다.즉, 마지막 순간에 필요한 특권을 가정하고 더 이상 엄밀하게 필요하지 않게 되는 즉시 이를 해제함으로써 표면적으로는 허용되는 것보다 더 많은 특권을 부정 이용하는 잘못된 코드에 의한 영향을 줄입니다.최소 특권은 Defactional Access Control(DAC; 임의 접근컨트롤) 권한 배포의 맥락에서 해석되고 있습니다.예를 들어, U가 읽기 권한만으로 인증된 작업을 완료할 수 있는 경우 파일F에 대한 U 읽기/쓰기 액세스를 사용자에게 부여하는 것은 최소 특권을 위반하는 것이라고 주장합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Saltzer, Jerome H.; Schroeder, Michael D. (1975). "The protection of information in computer systems". Proceedings of the IEEE. Institute of Electrical and Electronics Engineers (IEEE). 63 (9): 1278–1308. doi:10.1109/proc.1975.9939. ISSN 0018-9219. OCLC 5871551104. S2CID 269166.
  2. ^ Jonathan, Clark; DABCC Inc. "Virtualization Guru Writes "User-mode is a Good Thing - Deployment to Locked-down Accounts without Security Elevation"". Retrieved 15 Mar 2013.
  3. ^ Aaron Margosis (August 2006). "Problems of Privilege: Find and Fix LUA Bugs". Microsoft.
  4. ^ Matt Bishop, 컴퓨터 보안: 예술과 과학, 보스턴, 매사추세츠: Adison-Wesley, 2003. 페이지 343-344는 Barnum & Gegick 2005를 인용했다.
  5. ^ Saltzer, Jerome H. (1974). "Protection and the control of information sharing in multics". Communications of the ACM. 17 (7): 388–402. CiteSeerX 10.1.1.226.3939. doi:10.1145/361011.361067. ISSN 0001-0782. S2CID 326132.
  6. ^ Needham, R. M. (1972). "Protection systems and protection implementations". Proceedings of the AFIPS '72 Fall Joint Computer Conference, December 5-7, 1972, Part I. pp. 571–578. doi:10.1145/1479992.1480073. S2CID 7371342.
  7. ^ Fred B. Schneider. "Least Privilege and More" (PDF).

참고 문헌

외부 링크