탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 관리: 보안 서비스 Oracle Solaris 11 Information Library (한국어) |
RBAC의 초기 구성에는 특정 역할을 맡을 수 있는 사용자를 만들고, 역할을 만들고, 적절한 사용자에 할당하는 과정이 포함됩니다.
다음 작업 맵을 사용하여 사이트에서 RBAC를 계획하고 초기에 구현합니다. 일부 작업은 순서가 있습니다.
|
RBAC는 조직이 정보 리소스를 관리하는 데 필수적인 부분입니다. RBAC 기능에 대한 지식과 조직의 보안 요구 사항을 바탕으로 계획을 수립해야 합니다.
주 - 기본 권한은 /etc/security/policy.conf 파일에서 할당됩니다.
역할 기반 액세스 제어(개요)를 읽어 보십시오. RBAC를 사용한 시스템 관리는 전통적인 UNIX 관리 방법과 매우 다릅니다. 구현을 시작하기 전에 RBAC 개념을 익히려면 10 장Oracle Solaris의 보안 속성(참조)을 참조하십시오.
조직의 보안 정책은 시스템의 잠재적 위협을 기술하고, 각 위협의 위험도를 측정하고, 이러한 위협에 맞서는 전략을 제시합니다. RBAC를 통해 보안 관련 작업을 고립시키는 것도 전략의 일부일 수 있습니다. 설치된 RBAC 구성을 있는 그대로 사용할 수도 있지만, 보안 정책에 따라 사용자 정의가 필요할 수 있습니다.
보안 요구 사항에 따라, 다음과 같이 다양한 RBAC 수준을 사용할 수 있습니다.
루트 역할 – 이 방법이 기본적으로 제공됩니다. 임의 사용자가 root로 로그인하지 못하게 합니다. 대신, 사용자는 root 역할을 맡기 전에 할당된 로그인을 사용하여 로그인해야 합니다.
별개의 역할 – 이 방법은 제공된 권한 프로파일을 기반으로 역할을 만듭니다. 책임 수준, 작업 범위, 작업 유형에 따라 역할을 할당할 수 있습니다. 예를 들어, System Administrator 역할은 수퍼유저가 수행할 수 있는 많은 작업을 수행할 수 있고, Network IPsec Management 역할은 IPsec을 관리할 수 있습니다.
또한 보안 책임을 다른 책임과 구분할 수 있습니다. User Management 역할은 사용자를 만들 수 있고, User Security 역할은 역할 및 권한 프로파일과 같은 보안 속성을 할당할 수 있습니다. 그러나 User Security 역할은 사용자를 만들 수 없고, User Management 역할은 권한 프로파일을 사용자에 할당할 수 없습니다.
루트 역할 없음 – 이 방법은 시스템의 기본 구성을 변경해야 합니다. 이 구성에서는 root의 암호를 아는 모든 사용자가 시스템에 로그인하여 수정할 수 있습니다. 어떤 사용자가 수퍼유저로 활동하는지 알 수 없습니다.
권장된 역할 기능과 기본 권한 프로파일을 검토하십시오. 기본 권한 프로파일을 통해 관리자가 단일 프로파일을 사용하여 권장된 역할을 구성할 수 있습니다.
권한 프로파일을 더 조사하려면 다음 중 하나를 수행합니다.
시스템에서 사용 가능한 권한 프로파일은 getent prof_attr 명령을 사용하십시오.
이 설명서에서 일반적인 권한 프로파일의 요약은 권한 프로파일을 참조하십시오.
사이트에서 제한된 액세스를 이용할 수 있는 다른 응용 프로그램이나 응용 프로그램 제품군을 찾아보십시오. 서비스 거부 문제를 일으킬 수 있는 보안에 민감한 응용 프로그램이나 특수한 관리자 교육이 필요한 응용 프로그램이 RBAC의 좋은 후보입니다. 조직의 보안 요구 사항을 처리하기 위해 역할 및 권한 프로파일을 사용자 정의할 수 있습니다.
기존 권한 프로파일이 이 작업을 처리할 수 있는지, 또는 별도의 권한 프로파일을 만들어야 하는지 확인합니다.
이 작업에 대한 권한 프로파일을 기존 역할에 할당해야 하는지, 또는 새 역할을 만들어야 하는지 결정합니다. 기존 역할을 사용하는 경우 이 역할에 할당된 사용자에게 원래 권한 프로파일이 적절한지 확인합니다. 새 권한 프로파일의 순서를 지정하여 필요한 권한으로 명령이 실행되도록 합니다. 순서 지정에 대한 내용은 지정된 보안 속성의 검색 순서를 참조하십시오.
최소한의 특권의 원칙에 따라 사용자의 신뢰 수준에 적합한 역할을 할당합니다. 사용자가 수행할 필요가 없는 작업을 실행하지 못하게 금지하면 잠재적 문제를 줄일 수 있습니다.
로컬에서 LDAP 저장소에 역할을 만들 수 있습니다.
시작하기 전에
역할을 만들고 초기 암호를 할당하려면 User Management 권한 프로파일에 할당되어야 합니다. 보안 속성을 역할에 할당하려면 User Security 권한 프로파일에 할당되어야 합니다.
자세한 내용은 관리 권한을 얻는 방법을 참조하십시오.
명령의 RBAC 인수는 다음과 같습니다.
# roleadd [-e expire] [-f inactive] [-s shell] [-m] [-S repository] \ [-A authorization-list] -K key=value] rolename
역할이 만료되는 날짜입니다. 임시 역할을 만들려면 이 옵션을 사용하십시오.
역할 사용 사이에 허용된 최대 기간(일)입니다. inactive 값을 초과하면 역할을 사용할 수 없습니다. 기본값은 0이며, 만료 날짜가 없습니다.
기본 위치에 rolename의 홈 디렉토리를 만듭니다.
rolename의 로그인 셸입니다. 이 셸은 프로파일 셸이어야 합니다. 프로파일 셸 목록은 pfexec(1) 매뉴얼 페이지를 참조하십시오.
참고 - 시스템의 /usr/bin 디렉토리에서 프로파일 셸을 나열할 수도 있습니다(예: ls /usr/bin/pf*sh).
files 또는 ldap 중 하나입니다. 기본값은 로컬 파일입니다.
콤마로 구분된 하나 이상의 권한 부여입니다. 권한 부여 목록은 /etc/security/auth_attr 파일을 참조하십시오.
키=값 쌍입니다. 이 옵션은 반복할 수 있습니다. 사용 가능한 키에는 audit_flags, auths, profiles, project, defaultpriv, limitpriv, lock_after_retries, roleauth 등이 있습니다. 값 설정에 필요한 키, 해당 값 및 권한 부여에 대한 내용은 user_attr(4) 매뉴얼 페이지를 참조하십시오.
새 역할의 이름입니다. 허용 가능한 문자열의 제한 사항은 roleadd(1M) 매뉴얼 페이지를 참조하십시오.
참고 - 역할 이름이 권한 프로파일의 이름을 반영할 때 역할의 목적을 쉽게 이해할 수 있습니다. 예를 들어, Audit Review 권한 프로파일을 auditreview 역할에 할당하여 감사 레코드를 읽기, 필터링, 아카이브할 수 있도록 합니다.
예를 들어, 다음 명령은 로컬 User Administrator 역할과 홈 디렉토리를 만듭니다.
# roleadd -c "User Administrator role, local" -s /usr/bin/pfbash \ -m -K profiles="User Security,User Management" useradm 80 blocks # ls /export/home/useradm local.cshrc local.login local.profile
# passwd -r files useradmPassword: <Type useradm password> Confirm Password: <Retype useradm password> #
주 - 일반적으로, 역할 계정은 여러 사용자에 할당됩니다. 따라서 관리자는 대개 역할 암호를 만들어서 대역 외에서 사용자에게 역할 암호를 알려줍니다.
절차는 역할을 할당하는 방법 및 예 9-10을 참조하십시오.
예 9-7 LDAP 저장소에 User Administrator 역할 만들기
이 예에서 관리자의 사이트가 LDAP 저장소를 사용합니다. 다음 명령을 실행하여 LDAP에 User Administrator 역할을 만듭니다.
# roleadd -c "User Administrator role, LDAP" -s /usr/bin/pfbash \ -m -S ldap -K profiles="User Security,User Management" useradm
예 9-8 책임 구분용 역할 만들기
이 예에서 관리자의 사이트가 LDAP 저장소를 사용합니다. 다음 명령을 실행하여 두 개의 역할을 만듭니다. usermgt 역할은 사용자를 만들고, 홈 디렉토리를 제공하고, 초기 암호를 할당하고, 기타 비보안 작업을 수행할 수 있습니다. usersec 역할은 사용자를 만들 수 없지만, 사용자 암호를 변경하고 다른 RBAC 등록 정보를 변경할 수 있습니다.
# roleadd -c "User Management role, LDAP" -s /usr/bin/pfbash \ -m -S ldap -K profiles="User Management" usermgt # roleadd -c "User Security role, LDAP" -s /usr/bin/pfbash \ -m -S ldap -K profiles="User Security" usersec
예 9-9 장치 및 파일 보안 역할 만들기
이 예에서 관리자가 이 시스템에 대한 장치 및 파일 보안 역할을 만듭니다.
# roleadd -c "Device and File System Security admin, local" -s /usr/bin/pfbash \ -m -K profiles="Device Security,File System Security" devflsec
이 절차는 역할을 사용자에 할당하고, 이름 캐시 데몬을 다시 시작하고, 사용자가 역할을 맡는 방법을 보여줍니다.
시작하기 전에
역할을 만드는 방법에 설명된 대로 역할을 추가하고 암호를 할당했습니다.
대부분의 사용자 보안 속성을 수정하려면 User Security 권한 프로파일에 할당되어야 합니다. 사용자의 감사 플래그를 수정하려면 수퍼유저여야 합니다. 기타 속성을 수정하려면 User Management 권한 프로파일에 할당되어야 합니다.
자세한 내용은 관리 권한을 얻는 방법을 참조하십시오.
usermod [-S repository] [RBAC-arguments] login
예를 들어, 로컬 사용자에 역할을 할당합니다.
# usermod -R +useradm jdoe-local
usermod 명령의 옵션은 usermod(1M) 매뉴얼 페이지나 역할을 만드는 방법에서 단계 2의 설명을 참조하십시오.
# svcadm restart system/name-service-cache
예 9-10 암호화를 관리하는 역할 만들기 및 할당
이 예에서 LDAP 네트워크의 관리자가 암호화 프레임워크를 관리하는 역할을 만들어서 UID 1111에 할당합니다. 할당 사항을 적용하려면 nscd 데몬을 다시 시작합니다.
# roleadd -c "Cryptographic Services manager" \ -g 14 -m -u 104 -s /usr/bin/pfksh \ -S ldap -K profiles="Crypto Management" cryptmgt # passwd cryptmgt New Password: <Type cryptmgt password> Confirm password: <Retype cryptmgt password> # usermod -u 1111 -R +cryptmgt # svcadm restart system/name-service-cache
UID 1111을 가진 사용자가 로그인하여 역할을 맡고 할당된 보안 속성을 표시합니다.
% su - cryptmgt Password: <Type cryptmgt password> Confirm Password: <Retype cryptmgt password> $ profiles -l Crypto Management /usr/bin/kmfcfg euid=0 /usr/sbin/cryptoadm euid=0 /usr/sfw/bin/CA.pl euid=0 /usr/sfw/bin/openssl euid=0 $
암호화 프레임워크에 대한 내용은 11 장암호화 프레임워크(개요)를 참조하십시오. 프레임워크를 관리하려면 암호화 프레임워크 관리(작업 맵)를 참조하십시오.
역할이 수행하는 동작을 감사할 수 있습니다. 감사 레코드에는 역할을 맡은 사용자의 로그인 이름인 rolename과 역할이 수행한 동작이 포함됩니다. 116:AUE_PFEXEC:execve(2) with pfexec enabled:ps,ex,ua,as 감사 이벤트는 역할 동작을 캡처합니다. as, ex, ps, ua 클래스 중 하나를 미리 선택하면 역할 동작이 감사됩니다.
시작하기 전에
감사를 구성하려면 Audit Configuration 권한 프로파일이 지정되어야 합니다. 감사 서비스를 사용으로 설정하거나 새로 고치려면 Audit Control 권한 프로파일에 할당되어야 합니다.
계획 정보는 27 장감사 계획을 참조하십시오.
자세한 내용은 관리 권한을 얻는 방법을 참조하십시오.
# auditconfig -getflags
as, ex, ps, ua 클래스 중 하나를 미리 선택한 경우 역할 동작이 감사되고 있습니다. 그렇지 않으면, 이러한 클래스 중 하나를 기존 클래스에 추가합니다.
# auditconfig -setflags existing preselections,as
# auditconfig -setflags as
이 예에서 관리자가 as 클래스를 선택합니다. 이 클래스는 다른 감사 이벤트를 포함합니다. 클래스에 포함된 감사 이벤트를 보려면 예 28-25에 표시된 대로 auditrecord 명령을 사용합니다.
# audit -s
제공된 권한 프로파일에 필요한 컬렉션 보안 속성이 없을 때 권한 프로파일을 만들거나 변경할 수 있습니다. 권한 프로파일에 대해 알아보려면 RBAC 권한 프로파일을 참조하십시오.
새 권한 프로파일을 만드는 가장 쉬운 방법은 기존 권한 프로파일을 복사하여 수정하는 것입니다.
시작하기 전에
권한 프로파일을 만들거나 변경하려면 File Security 권한 프로파일에 할당되어야 합니다.
자세한 내용은 관리 권한을 얻는 방법을 참조하십시오.
# profiles [-S repository] existing-profile-name
새 이름을 묻는 메시지가 표시됩니다. 기존 권한 프로파일의 내용이 새 프로파일에 중복됩니다.
다음 예제에 표시된 대로 보충 권한 프로파일, 권한 부여 및 기타 보안 속성을 추가하거나 제거합니다.
예 9-11 기존 프로파일에서 새 권한 프로파일 만들기
이 예에서 관리자가 LDAP 저장소에 Console User 권한 프로파일을 사용자 정의합니다.
# profiles -S ldap Console User New name: ExampleCo Console User ExampleCo Console User > Description > Manage MyCompany Systems as the Console User Help > ExCoConsUser.html
관리자가 이 권한 프로파일에 대한 roleauth 속성을 설정합니다.
roleauth=yes
예 9-12 권한 프로파일에서 기본 권한 제거
다음 예에서 테스트를 거친 후 보안 관리자가 SunRayUser 권한 프로파일에 할당된 모든 사용자로부터 기본 권한을 제거합니다. 이들은 proc_session 권한 사용이 금지됩니다. 즉, 이러한 사용자는 현재 세션 밖에 있는 프로세스를 조사할 수 없습니다.
$ profiles -K defaultpriv=basic,!proc_session SunRayUser
예 9-13 권한 프로파일의 제한 세트에서 권한 제거
다음 예에서 테스트를 거친 후 보안 관리자가 SunRayUser 권한 프로파일에 할당된 모든 사용자로부터 제한 권한을 제거합니다. 이렇게 하면 해당 사용자가 다른 사용자의 프로세스를 볼 수 없습니다.
$ profiles -K limitpriv=all,!proc_session SunRayUser
예 9-14 명령에 권한 추가
이 예에서 보안 관리자가 권한 프로파일의 응용 프로그램에 권한을 추가합니다. 응용 프로그램은 권한 인식형입니다.
# profiles -p SiteApp profiles:SiteApp> set desc="Site application" profiles:SiteApp> add cmd=/opt/site-app/bin/site-cmd profiles:SiteApp:site-cmd> add privs=proc_fork,proc_taskid profiles:SiteApp:site-cmd> end profiles:SiteApp> exit
확인을 위해 관리자가 site-cmd를 선택합니다.
# profiles -p SiteApp "select cmd=/opt/site-app/bin/site-cmd; info;end" Found profile in files repository. id=/opt/site-app/bin/site-cmd privs=proc_fork,proc_taskid
참조
보안 속성 할당 문제를 해결하려면 RBAC 및 권한 할당 문제를 해결하는 방법을 참조하십시오. 배경 지식은 지정된 보안 속성의 검색 순서를 참조하십시오.
레거시 응용 프로그램은 명령 또는 명령 세트입니다. 권한 프로파일의 각 명령에 대해 보안 속성이 설정됩니다. 그러면 권한 프로파일이 역할에 포함됩니다. 역할을 맡은 사용자는 보안 속성으로 레거시 응용 프로그램을 실행할 수 있습니다.
시작하기 전에
권한 프로파일을 만들려면 Information Security 또는 Rights Management 권한 프로파일에 할당되어야 합니다. 권한 프로파일을 할당하려면 User Security 권한 프로파일에 할당되어야 합니다.
다른 명령과 마찬가지 방법으로 레거시 응용 프로그램에 보안 속성을 추가합니다. 보안 속성 포함 명령을 권한 프로파일에 추가해야 합니다. 레거시 명령에 대해 euid=0 또는 uid=0 보안 속성을 명령에 제공합니다. 세부 절차는 감사 프로파일을 만들거나 변경하는 방법을 참조하십시오.
단계는 감사 프로파일을 만들거나 변경하는 방법을 참조하십시오.
예제는 예 9-14를 참조하십시오.
권한 프로파일을 역할에 할당하려면 예 9-10을 참조하십시오.
예 9-15 스크립트의 명령에 보안 속성 추가
스크립트의 명령을 성공하려면 setuid 또는 setgid 비트 세트가 필요한 경우 스크립트 실행 파일 및 명령에서 권한 프로파일에 보안 속성을 추가해야 합니다. 그런 다음, 권한 프로파일을 역할에 포함하고 역할을 사용자에 할당합니다. 사용자가 역할을 맡고 스크립트를 실행할 때 보안 속성으로 명령이 실행됩니다.
예 9-16 스크립트 또는 프로그램에서 권한 부여 검사
권한 부여용 스크립트를 만들려면 auths 명령에 기반한 테스트를 추가해야 합니다. 이 명령에 대한 자세한 내용은 auths(1) 매뉴얼 페이지를 참조하십시오.
예를 들어, 다음 라인은 사용자에 $1 인수로 제공된 권한 부여가 있는지 테스트합니다.
if [ `/usr/bin/auths|/usr/xpg4/bin/grep $1` ]; then echo Auth granted else echo Auth denied fi
테스트가 더 완벽하려면 와일드카드를 사용한 권한 부여를 검사하는 논리를 테스트에 포함해야 합니다. 예를 들어, 사용자가 solaris.system.date 권한 부여를 가지고 있는지 테스트하려면 다음 문자열을 검사해야 합니다.
solaris.system.date
solaris.system.*
solaris.*
프로그램을 작성하는 경우 getauthattr() 함수를 사용하여 권한 부여를 테스트합니다.
사용자나 역할의 프로세스가 할당된 보안 속성으로 실행되지 않는 이유에는 여러 인자가 관여합니다.
보안 속성의 철자가 틀립니다. 철자가 틀린 권한 부여는 자동으로 실패합니다.
사용자나 역할이 할당이 포함된 이름 지정 서비스를 사용하지 않습니다.
예상한 할당이 해당 속성의 첫번째 할당이 아닙니다.
사용자나 역할의 보안 속성을 검색한 후 인증 시 할당되는 순서에 따라 성공 여부가 결정됩니다. 단, 권한 부여는 예외입니다. 검색 중 사용자나 역할에 할당된 권한 부여는 누적됩니다. 이와 반대로, 권한 할당 및 권한 프로파일의 보안 속성 할당은 검색에 종속됩니다. 첫번째 할당을 성공하고, 그 이후의 할당은 무시됩니다.
명령이 프로파일 셸에서 실행 중이 아닙니다.
시작하기 전에
root 역할을 가진 사용자여야 합니다.
nscd 데몬의 TTL(time-to-live) 간격이 길어질 수 있습니다. 데몬을 다시 시작하여 이름 지정 서비스를 현재 데이터로 업데이트합니다.
userattr -v 명령의 값으로 보안 속성을 사용합니다. 예를 들어, 다음 명령은 사용자 jdoe에 대해 어떤 보안 속성이 할당되고 어떤 곳에서 할당이 이루어졌는지 나타냅니다.
# userattr -v audit_flags jdoe Modifications to the system defaults user_attr: fw:no # userattr -v auths jdoe Assigned authorizations solaris.admin.wusb.read,solaris.device.cdrw,solaris.device.mount.removable, solaris.mail.mailq,solaris.profmgr.read,solaris.smf.manage.audit, solaris.smf.value.audit # userattr -v audit_flags jdoe Modifications to audit preselection mask # userattr -v auths jdoe Assigned authorizations # userattr -v defaultpriv jdoe Modifications to basic user privileges # userattr -v limitpriv jdoe Modifications to limit privileges # userattr -v lock_after_retries jdoe Automatic lockout attribute # userattr -v profiles jdoe Assigned rights profiles user_attr: Audit Review,Stop # userattr roles jdoe Assigned roles user_attr : cryptomgt,infosec
예를 들어, 일부 명령을 성공하려면 euid=0이 아닌 uid=0이 필요합니다. 일부 명령의 측면에서 권한 부여가 필요할 수 있습니다.
userattr 명령을 사용합니다.
목록에서 가장 빠른 권한 프로파일의 속성 값이 사용자가 사용할 수 있는 값입니다. 이 값이 올바르지 않으면 해당 권한 프로파일의 값을 변경하거나 프로파일 목록의 순서를 바꿉니다.
권한 있는 명령의 경우 권한이 defaultpriv 키워드에 지정되었는지 확인합니다. 이 할당은 특정 명령에 대한 권한과 더불어 제공됩니다.
속성이 역할에 할당된 경우 보안 속성을 얻으려면 사용자가 역할을 맡아야 합니다. 속성이 여러 개의 역할에 할당된 경우 목록에서 가장 빠른 역할의 할당이 적용됩니다. 이 값이 올바르지 않으면 목록의 첫번째 역할에 올바른 값을 할당하거나 역할 할당의 순서를 바꿉니다.
주 - 일부 명령의 측면에서 권한 부여가 필요할 수 있습니다. 최적의 사용법은, 권한을 직접 할당하기보다 관리 명령이 포함된 권한 프로파일을 할당하는 것입니다.
관리 명령이 포함된 권한 프로파일을 검토하십시오. 권한 부여가 포함된 권한 프로파일이 존재하는 경우 권한이 아닌, 권한 프로파일을 사용자에 할당합니다. 명령이 포함된 권한 프로파일은 다른 어떤 권한 프로파일보다 앞서 순서를 배치합니다.
관리 명령은 프로파일 셸에서 실행해야 합니다. 사용자 오류를 줄이려면 프로파일 셸을 사용자의 로그인 셸로 할당할 수 있습니다. 또는 사용자가 프로파일 셸에서 관리 명령을 실행하도록 미리 알려줄 수 있습니다.
특히, 사용자의 defaultpriv 및 limitpriv 속성 값을 확인합니다.
권한 프로파일 목록에서 가장 빠른 값이 사용자가 사용할 수 있는 값입니다. 이 값이 올바르지 않으면 해당 권한 프로파일의 값을 변경하거나 프로파일 목록의 순서를 바꿉니다.
특히, 프로파일의 defaultpriv 및 limitpriv 속성 값을 확인합니다.
명령이 역할에 할당된 경우 보안 속성을 얻으려면 사용자가 역할을 맡아야 합니다. 속성이 여러 개의 역할에 할당된 경우 목록에서 가장 빠른 역할의 할당이 적용됩니다. 이 값이 올바르지 않으면 목록의 첫번째 역할에 올바른 값을 할당하거나 역할 할당의 순서를 바꿉니다.
관리 명령을 성공하려면 권한이 필요합니다. 일부 명령의 측면에서 권한 부여가 필요할 수 있습니다. 최적의 사용법은 관리 명령이 포함된 권한 프로파일을 할당하는 것입니다.
특히, 역할의 defaultpriv 및 limitpriv 속성 값을 확인합니다.
권한 프로파일 목록에서 가장 빠른 값이 사용자가 사용할 수 있는 값입니다. 이 값이 올바르지 않으면 해당 권한 프로파일의 값을 변경하거나 프로파일 목록의 순서를 바꿉니다.