Oracle® Solaris 11.2의 사용자 및 프로세스 보안

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

권한 사용 방법

권한은 Oracle Solaris에 기본 제공됩니다. 이 절에서는 Oracle Solaris에서 장치, 리소스 관리 및 레거시 응용 프로그램과 함께 권한을 사용하는 방법을 설명합니다.

프로세스가 권한을 얻는 방법

프로세스는 권한을 상속하거나 권한이 지정될 수 있습니다. 프로세스는 부모 프로세스에서 권한을 상속합니다. 로그인 시, 사용자의 초기 상속 가능한 권한 세트에 따라 사용자 프로세스에서 사용할 수 있는 권한이 결정됩니다. 사용자 초기 로그인의 모든 자식 프로세스는 해당 세트를 상속합니다.

프로그램, 사용자, 역할 및 특정 리소스에 직접 권한을 지정할 수도 있습니다. 프로그램에 권한이 필요할 때 권한 프로파일에서 프로그램의 실행 파일에 권한을 지정합니다. 프로그램을 실행하도록 허가된 사용자나 역할이 프로그램을 포함하는 프로파일에 지정됩니다. 로그인 시 또는 프로파일 셸을 열 때, 프로그램의 실행 파일을 프로파일 셸에 입력하면 프로그램이 권한으로 실행됩니다. 예를 들어, Object Access Management 프로파일을 포함하는 역할은 chmod 명령을 file_chown 권한으로 실행할 수 있으므로 역할이 소유하지 않은 파일의 소유권을 변경할 수 있습니다.

역할/사용자가 추가 권한이 직접 지정된 프로그램을 실행할 때 지정된 권한이 역할/사용자의 상속 가능한 세트에 추가됩니다. 권한이 지정된 프로그램의 자식 프로세스는 부모의 권한을 상속합니다. 자식 프로세스에 부모 프로세스보다 더 많은 권한이 필요한 경우 자식 프로세스에 해당 권한을 직접 지정해야 합니다.

권한을 사용하도록 코딩된 프로그램을 privilege-aware(권한 인식) 프로그램이라고 합니다. 권한 인식 프로그램은 프로그램 실행 중 권한 사용을 사용 및 사용 안함으로 설정합니다. 운용 환경에서 성공하려면 프로그램이 사용 및 사용 안함으로 설정하는 권한을 프로그램에 지정해야 합니다. 권한 인식 프로그램을 제공하기 전에 프로그램에 필요한 권한만 실행 파일에 지정합니다. 그런 다음 프로그램을 테스트하여 프로그램이 작업 수행을 성공하는지 확인합니다. 또한 프로그램이 권한 사용을 오용하지 않는지 검사합니다.

권한 인식 코드의 예는 Developer’s Guide to Oracle Solaris 11 Security 의 2 장, Developing Privileged Applications를 참조하십시오. 권한이 필요한 프로그램에 권한을 지정하려면 Example 4–1Example 5–7을 참조하십시오.

권한 및 장치

수퍼 유저 모델에서 파일 권한(permission)만으로 보호되는 시스템 인터페이스가 권한(right) 모델에서는 권한(privilege)으로 보호됩니다. 권한 있는 시스템에서 파일 사용 권한은 인터페이스를 보호하기에 너무 약합니다. proc_owner와 같은 권한(privilege)은 파일 권한(permission)을 대체하고 시스템에 대한 전체 액세스 권한을 얻을 수 있습니다.

따라서 Oracle Solaris에서 장치 디렉토리의 소유권은 장치를 열기에 충분하지 않습니다. 예를 들어 sys 그룹의 구성원은 더 이상 자동으로 /dev/ip 장치를 열도록 허용되지 않습니다. /dev/ip의 파일 권한(permission)은 0666이지만, 장치를 열려면 net_rawaccess 권한(privilege)이 필요합니다.

장치 정책은 권한(privilege)으로 제어되기 때문에 장치를 여는 권한을 보다 유연하게 부여할 수 있습니다. 장치 정책 및 드라이버에 대한 권한 요구 사항을 적절히 구성할 수 있습니다. 장치 드라이버를 설치, 추가 또는 업데이트할 때 권한 요구 사항을 구성할 수 있습니다.

자세한 내용은 add_drv(1M), devfsadm(1M), getdevpolicy(1M)update_drv(1M) 매뉴얼 페이지를 참조하십시오.

권한 및 리소스 관리

Oracle Solaris에서 project.max-locked-memory 및 zone.max-locked-memory 리소스 컨트롤을 사용하여 PRIV_PROC_LOCK_MEMORY 권한에 지정된 프로세스의 메모리 소비를 제한할 수 있습니다. 이 권한으로 프로세스가 물리적 메모리의 페이지를 잠글 수 있습니다.

PRIV_PROC_LOCK_MEMORY 권한을 권한 프로파일에 지정하면 이 권한을 가진 프로세스에 모든 메모리를 잠그는 능력을 제공할 수 있습니다. 보호 조치로, 권한 사용자가 모든 메모리를 잠그지 못하도록 리소스 컨트롤을 설정하십시오. 비전역 영역에서 실행되는 권한 있는 프로세스의 경우 zone.max-locked-memory 리소스 컨트롤을 설정합니다. 시스템에서 실행되는 권한 있는 프로세스의 경우 프로젝트를 만들고 project.max-locked-memory 리소스 컨트롤을 설정합니다. 이러한 리소스 컨트롤에 대한 자세한 내용은 Oracle Solaris 11.2의 리소스 관리 의 6 장, 리소스 제어 정보Oracle Solaris 영역 소개 의 2 장, 비전역 영역 구성 개요를 참조하십시오.

레거시 응용 프로그램 및 권한 사용

레거시 응용 프로그램을 수용하기 위해 권한(privilege) 구현은 수퍼 유저 및 권한(right) 모델 둘 다로 작동합니다. 커널은 PRIV_AWARE 플래그를 자동으로 추적하여 프로그램이 권한과 연동하도록 설계되었는지 나타냅니다. 권한을 인식하지 못하는 자식 프로세스를 고려하십시오. 부모 프로세스에서 상속한 권한은 자식의 허가된 세트와 유효 세트에서 사용할 수 있습니다. 자식 프로세스가 UID를 0으로 설정하면 전체 수퍼 유저 권한을 얻지 못할 수도 있습니다. 프로세스의 유효 세트와 허가된 세트는 자식의 제한 세트의 권한으로 제약됩니다. 따라서 권한 인식 프로세스의 제한 세트는 권한을 인식하지 못하는 자식 프로세스의 루트 권한을 제약합니다.

권한 사용 디버그

Oracle Solaris는 권한 실패를 디버깅하는 도구를 제공합니다. ppriv 명령과 truss 명령은 디버깅 출력을 제공합니다. 예는 ppriv(1) 매뉴얼 페이지를 참조하십시오. 예는 권한 문제 해결을 참조하십시오. dtrace 명령을 사용할 수도 있습니다. 자세한 내용은 dtrace(1M) 매뉴얼 페이지 및 Oracle Solaris 11.2 Dynamic Tracing Guide 를 참조하십시오.