sepgsql은 로드 가능한 모듈입니다. 다음을 기반으로 하는 레이블 기반 필수 액세스 제어(MAC)를 지원합니다.SELinux배트맨 토토 정책.
| 경고 |
|
현재 구현은 상당한 제한이 있으며 필수 액세스를 시행하지 않습니다. 모든 행동을 통제합니다. 참조섹션 F.32.7. |
이 모듈은 다음과 통합됩니다.SELinux추가 레이어를 제공하기 위해 일반적으로 제공되는 것 이상의 배트맨 토토 검사포스트그레SQL. 에서 관점SELinux, 이건 모듈은 허용합니다포스트그레SQL에 사용자 공간 개체 관리자 역할을 합니다. 각 테이블 또는 함수 DML 쿼리에 의해 시작된 액세스는 시스템 배트맨 토토 정책. 이 수표는 일반적인 수표에 추가됩니다. SQL 권한 검사 수행자포스트그레SQL.
SELinux액세스 제어 의사결정은 보안 레이블을 사용하여 이루어집니다. 다음과 같은 문자열로system_u:object_r:sepgsql_table_t:s0. 각각 액세스 제어 결정에는 두 가지 레이블이 포함됩니다. 행동을 수행하려고 시도하는 주체와 그 행동의 라벨 작업을 수행할 개체입니다. 이후 라벨은 모든 종류의 객체, 액세스 제어에 적용 가능 데이터베이스 내에 저장된 객체에 대한 결정은 다음과 같습니다(그리고, 이 모듈에서는 동일한 일반 기준이 적용됩니다. 파일과 같은 다른 유형의 객체에 사용됩니다. 이 디자인 중앙 집중식 배트맨 토토 정책을 통해 보호할 수 있도록 고안되었습니다. 정보 자산은 그 방법에 대한 세부 사항과 무관합니다. 자산이 저장됩니다.
그PostgreSQL : 문서 : 9.2 : 보안 사설 토토 사이트문을 사용하면 데이터베이스에 배트맨 토토 레이블을 할당할 수 있습니다. 개체.
sepgsql다음에서만 사용할 수 있습니다.리눅스2.6.28 이상 포함SELinux활성화되었습니다. 그렇지 않다 다른 플랫폼에서 사용할 수 있습니다. 당신은 또한 필요합니다libselinux2.0.99 이상 그리고selinux-정책3.9.13 또는 더 높음(일부 배포판에서는 필요한 규칙을 이전 정책 버전으로 변환).
그sestatus명령을 사용하면 다음을 수행할 수 있습니다. 상태를 확인하세요SELinux. 에이 일반적인 디스플레이는 다음과 같습니다.
$ sestatus SELinux 상태: 활성화됨 SELinuxfs 마운트: /selinux 현재 모드: 시행 구성 파일의 모드: 시행 정책 버전: 24 구성 파일의 정책: 대상
만약SELinux비활성화되었거나 설치되지 않은 경우 먼저 해당 제품을 설정해야 합니다. 이 모듈을 설치합니다.
이 모듈을 빌드하려면 다음 옵션을 포함하십시오.--with-selinux당신의 배트맨 토토에서구성명령. 다음을 확인하세요.libselinux-develRPM이 빌드 시 설치됨 시간.
이 모듈을 사용하려면 다음을 포함해야 합니다.sepgsql에서shared_preload_libraries매개변수 in배트맨 토토.conf. 는 다른 모듈에 로드되면 모듈이 올바르게 작동하지 않습니다. 방식. 모듈이 로드되면 실행해야 합니다.sepgsql.sql각 데이터베이스에서. 이 보안라벨 관리에 필요한 기능을 설치하고, 초기 배트맨 토토 라벨을 할당합니다.
다음은 새로운 초기화 방법을 보여주는 예입니다. 데이터베이스 클러스터sepgsql기능 및 배트맨 토토 레이블이 설치되었습니다. 표시된 경로 조정 설치에 적합하게:
$ 내보내기 PGDATA=/path/to/data/directory
$ 초기화
$ vi $PGDATA/배트맨 토토.conf
변화
#shared_preload_libraries = '' # (변경하려면 다시 시작해야 함)
에
shared_preload_libraries = 'sepgsql' # (변경하려면 다시 시작해야 함)
template0 template1 postgres의 DBNAME에 대한 $; 하다
postgres --single -F -c exit_on_error=true $DBNAME \
</usr/local/pgsql/share/contrib/sepgsql.sql/dev/null
완료
다음 중 일부 또는 전체가 표시될 수 있습니다. 보유하고 있는 특정 버전에 따른 알림libselinux그리고selinux-정책:
/etc/selinux/targeted/contexts/sepgsql_contexts: 33행에 잘못된 개체 유형 db_blobs가 있습니다. /etc/selinux/targeted/contexts/sepgsql_contexts: 36행에 잘못된 개체 유형 db_언어가 있습니다. /etc/selinux/targeted/contexts/sepgsql_contexts: 37행에 잘못된 개체 유형 db_언어가 있습니다. /etc/selinux/targeted/contexts/sepgsql_contexts: 38행에 잘못된 개체 유형 db_언어가 있습니다. /etc/selinux/targeted/contexts/sepgsql_contexts: 39행에 잘못된 개체 유형 db_언어가 있습니다. /etc/selinux/targeted/contexts/sepgsql_contexts: 40행에 잘못된 개체 유형 db_언어가 있습니다.
이 메시지는 무해하므로 무시해야 합니다.
설치 프로세스가 오류 없이 완료되면 다음을 수행할 수 있습니다. 이제 서버를 정상적으로 시작합니다.
특성상SELinux, 회귀 테스트 실행 중sepgsql여러 가지 추가 필요 구성 단계 중 일부는 루트로 수행해야 합니다. 는 회귀 테스트는 일반에 의해 실행되지 않습니다.확인하세요또는만들다 설치 확인명령; 구성을 설정해야 합니다. 그런 다음 테스트 스크립트를 수동으로 호출합니다. 테스트를 실행해야 합니다. 에서contrib/sepgsql디렉토리 배트맨 토토 빌드 트리를 구성했습니다. 빌드가 필요하지만 트리에서 테스트는 다음에 대해 실행되도록 설계되었습니다. 설치된 서버, 즉 다음과 비슷합니다.설치 확인 수행아님만들다 확인.
먼저, 설정sepgsql작업 중 의 지침에 따라 데이터베이스섹션 F.32.2. 참고 현재 운영 체제 사용자가 연결할 수 있어야 함 비밀번호 없이 슈퍼유저로 데이터베이스에 인증.
둘째, 다음을 위한 정책 패키지를 구축하고 설치하십시오. 회귀 테스트.sepgsql-regtest정책은 세트를 제공하는 특수 목적의 정책 패키지입니다. 회귀 테스트 중에 허용되는 규칙입니다. 그래야 한다 정책 소스 파일에서 빌드됨sepgsql-regtest.te, 이는를 사용하여 수행됩니다.만들다다음에서 제공하는 Makefile 사용 SELinux. 다음에서 적절한 Makefile을 찾아야 합니다. 귀하의 시스템; 아래 표시된 경로는 단지 예일 뿐입니다. 한 번 빌드된 경우 다음을 사용하여 이 정책 패키지를 설치합니다.세모듈16730_16843세모듈-l나열해야 함sepgsql-regtest사용 가능한 정책으로 패키지:
$ cd .../contrib/sepgsql $ make -f /usr/share/selinux/devel/Makefile $ sudo semodule -u sepgsql-regtest.pp $ sudo semodule -l | grep sepgsql sepgsql-regtest 1.04
셋째, 켜세요sepgsql_regression_test_mode. 배트맨 토토을 위해 이유, 규칙sepgsql-regtest은 기본적으로 활성화되어 있지 않습니다.sepgsql_regression_test_mode매개변수 활성화 회귀 테스트를 시작하는 데 필요한 규칙. 그럴 수 있다 다음을 사용하여 켜짐setsebool명령:
$ sudo setsebool sepgsql_regression_test_mode 켜짐 $ getsebool sepgsql_regression_test_mode sepgsql_regression_test_mode -- 켜기
넷째, 쉘이 다음에서 작동하는지 확인하십시오.unconfined_t도메인:
$id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
참조섹션 F.32.8작업 도메인 조정에 대한 자세한 내용은 다음과 같습니다. 필요합니다.
마지막으로 회귀 테스트 스크립트를 실행하십시오:
$ ./test_sepgsql
이 스크립트는 귀하가 모든 작업을 완료했는지 확인하려고 시도합니다. 구성 단계를 올바르게 수행하면 다음이 실행됩니다. 에 대한 회귀 테스트sepgsql모듈.
테스트를 완료한 후에는 비활성화하는 것이 좋습니다.sepgsql_regression_test_mode매개변수:
$ sudo setsebool sepgsql_regression_test_mode off
다음을 제거하는 것이 좋습니다.sepgsql-regtest정책 전체:
$ sudo semodule -r sepgsql-regtest
이 매개변수는 다음을 활성화합니다.sepgsql허용 모드에서 작동하려면, 시스템 설정과 상관없이. 기본값은 꺼져 있습니다. 이 매개변수는에서만 설정할 수 있습니다.배트맨 토토.conf파일 또는 서버에 명령줄.
이 매개변수가 켜져 있으면sepgsql허용 모드에서 기능, SELinux가 일반적으로 적용 모드에서 작동하는 경우에도 마찬가지입니다. 이 매개변수는 주로 테스트에 유용합니다. 목적.
이 매개변수는 감사 메시지 인쇄를 활성화합니다. 시스템 정책 설정과 관계없이. 기본값은 off는 메시지가 다음과 같이 인쇄됨을 의미합니다. 시스템 설정으로 이동합니다.
배트맨 토토 정책SELinux또한 제어할 규칙이 있습니다. 특정 액세스가 기록되는지 여부. 작성자: 기본적으로 액세스 위반은 기록되지만 허용됩니다. 액세스는 그렇지 않습니다.
이 매개변수는 가능한 모든 로깅을 강제로 수행합니다. 시스템 정책에 관계없이 켜져 있습니다.
배트맨 토토 모델SELinux모든 접근 제어에 대해 설명합니다. 규칙은 주체 엔터티(일반적으로 데이터베이스의 클라이언트) 및 객체 엔터티(예: 데이터베이스 객체), 각각은 배트맨 토토으로 식별됩니다. 라벨. 레이블이 지정되지 않은 개체에 액세스하려고 하면 객체는 라벨이 할당된 것처럼 처리됩니다.unlabeled_t.
현재,sepgsql허용 스키마, 테이블, 열에 할당할 배트맨 토토 레이블 시퀀스, 뷰 및 기능. 언제sepgsql사용 중이며 배트맨 토토 라벨은 지원되는 데이터베이스 개체에 자동으로 할당됨 생성 시간. 이 레이블을 기본 보안 레이블이라고 합니다. 시스템 배트맨 토토 정책에 따라 결정되며, 작성자의 라벨과 할당된 라벨을 입력으로 사용합니다. 새 개체의 상위 개체입니다.
새 데이터베이스 개체는 기본적으로 보안을 상속받습니다. 배트맨 토토 정책이 적용되는 경우를 제외하고 상위 개체의 레이블 유형 전환 규칙이라는 특별한 규칙이 있습니다. 경우에는 다른 라벨이 적용될 수 있습니다. 스키마의 경우 상위 개체는 현재 데이터베이스입니다. 테이블, 시퀀스, 뷰 및 함수는 포함하는 스키마입니다. 에 대한 열은 포함 테이블입니다.
테이블의 경우,db_table:선택, db_table:삽입, db_table:업데이트또는db_table:삭제모든 항목에 대해 확인됩니다. 문의 종류에 따라 참조되는 대상 테이블; 게다가db_table:선택또한 참조된 열이 포함된 모든 테이블을 확인했습니다.어디또는돌아오는 중절, 데이터 소스로업데이트등.
각 항목에 대해 열 수준 권한도 확인됩니다. 참조된 열입니다.db_column:선택다음을 사용하여 읽고 있는 열뿐만 아니라 확인됩니다.선택, 하지만 참조되는 것들은 다른 DML 문에서;db_column:업데이트또는db_column:삽입또한 확인됩니다 열이 수정되는 중입니다.업데이트또는삽입.
예를 들어 다음을 고려해보세요:
t1 세트 업데이트 x = 2, y = md5sum(y) WHERE z = 100;
여기,db_column:업데이트될 것이다 확인됨t1.x, 이후 업데이트됨,db_column:업데이트 선택다음 사항을 확인합니다t1.y, 그 이후로 업데이트되고 참조됩니다.db_column:선택다음 사항을 확인합니다t1.z, 참조만 되므로.db_table:업데이트 선택또한 테이블 수준에서 확인하세요.
시퀀스의 경우,db_sequence:get_value우리가 할 때 확인됩니다 다음을 사용하여 시퀀스 객체를 참조합니다.선택; 하지만 현재는 그렇지 않습니다. 해당 기능 실행에 대한 권한 확인 같은마지막 값().
보기의 경우,db_view:확장될 것이다 확인하면 다른 필수 권한이 확인됩니다. 뷰에서 확장되는 객체에 대해 개별적으로.
기능의 경우,db_procedure:실행정의되었지만 정의되지 않았습니다. 이 버전에서 확인되었습니다.
클라이언트는 참조된 모든 테이블에 접근하도록 허용되어야 합니다 및 열은 다음과 같은 뷰에서 비롯된 경우에도 마찬가지입니다. 그런 다음 확장하여 일관된 액세스 제어를 적용합니다. 테이블 내용이 작성되는 방식과 무관한 규칙 참조됩니다.
기본 데이터베이스 권한 시스템은 데이터베이스를 허용합니다. DML 명령을 사용하여 시스템 카탈로그를 수정하는 수퍼유저 토스트 테이블을 참조하거나 수정합니다. 이러한 작업은 금지되는 경우sepgsql이다 활성화되었습니다.
SELinux여러 가지를 정의합니다 각 객체에 대한 공통 작업을 제어하는 권한 유형; 보안 생성, 변경, 삭제, 레이블 재지정 등 라벨. 또한 여러 객체 유형에는 특수한 속성이 있습니다. 특정 작업을 제어할 수 있는 권한 그런 특정 이름 항목의 추가 또는 삭제 스키마.
때생성명령은 실행됨,생성확인될 것입니다 각 개체 유형에 대해 생성되는 개체입니다. 기본값 보안 레이블이 새 데이터베이스 개체에 할당됩니다. 그리고생성권한은 다음과 같습니다 클라이언트와 클라이언트의 배트맨 토토 라벨 쌍을 확인합니다. 새로운 객체 그 자체. 우리는 고려합니다테이블 생성테이블을 구성하려면 및 기본 열을 동시에 사용하므로 다음이 필요합니다. 사용자는 테이블과 해당 테이블을 모두 생성할 수 있는 권한을 가집니다. 열.
객체에 따라 몇 가지 추가 검사가 적용됩니다. 유형. 켜짐PostgreSQL : 문서 :, getattr허가 새 소스 또는 템플릿 데이터베이스에서 확인됩니다. 데이터베이스뿐만 아니라생성새로 데이터베이스. 특정 스키마 내에서 객체 생성 시 (테이블, 뷰, 시퀀스 및 프로시저),추가_이름스키마에서도 확인됩니다. 뿐만 아니라생성새 객체에 그 자체.
언제드롭명령이 실행되었습니다.드롭객체에서 확인됩니다 각 개체 유형에 대해 제거됩니다. 권한도 다음을 통해 간접적으로 삭제된 개체를 확인했습니다.캐스케이드. 다음에 포함된 개체 삭제 특정 스키마(테이블, 뷰, 시퀀스 및 프로시저) 추가로 필요합니다remove_name켜짐 스키마.
언제PostgreSQL : 문서 : 9.2 : 보안 사설 토토 사이트실행됨,setattr그리고재 라벨 지정객체에서 확인됩니다 이전 배트맨 토토 라벨로 라벨을 다시 붙인 다음relabelto제공된 새 배트맨 토토 포함 라벨.
여러 레이블 공급자가 설치된 경우 사용자가 배트맨 토토 레이블을 설정하려고 시도했지만 그렇지 않았습니다. 관리하는 사람SELinux, 만setattr여기에서 확인해야 합니다. 이 현재 구현 제한으로 인해 수행되지 않습니다.
신뢰할 수 있는 절차는 보안 정의자와 유사합니다. 함수 또는 setuid 명령.SELinux허용하는 기능을 제공합니다. 다른 보안 레이블을 사용하여 실행되는 신뢰할 수 있는 코드 일반적으로 제공을 목적으로 하는 고객의 정보 민감한 데이터(예: 행은 생략되거나 저장된 값의 정밀도가 달라질 수 있습니다. 감소). 함수가 신뢰할 수 있는 역할을 하는지 여부 절차는 보안 레이블과 운영 체제 배트맨 토토 정책. 예를 들면:
postgres=# CREATE TABLE 고객(
cid int 기본 키,
이름 텍스트,
신용 텍스트
);
테이블 만들기
postgres=# customer.credit 열의 보안 레이블
IS 'system_u:object_r:sepgsql_secret_table_t:s0';
배트맨 토토 라벨
postgres=# 함수 생성 show_credit(int) 텍스트 반환
AS 'SELECT regexp_replace(credit, ''-[0-9]+$'', ''-xxxx'', ''g'')
고객으로부터 cid = $1'
언어 sql;
함수 생성
postgres=# 함수에 대한 보안 레이블 show_credit(int)
IS 'system_u:object_r:sepgsql_trusted_proc_exec_t:s0';
배트맨 토토 라벨
위 작업은 다음 사람에 의해 수행되어야 합니다. 관리 사용자입니다.
postgres=# SELECT * FROM 고객; 오류: SELinux: 배트맨 토토 정책 위반 postgres=# SELECT cid, cname, show_credit(cid) FROM 고객; 시드 | c이름 | 쇼_크레딧 ----+---------+--------- 1 | 타로 | 1111-2222-3333-xxxx 2 | 하나코 | 5555-6666-7777-xxxx (2행)
이 경우 일반 사용자는 참조할 수 없습니다고객.신용직접적으로, 하지만 신뢰할 수 있는 절차show_credit그는 다음을 수행할 수 있습니다. 일부 고객의 신용 카드 번호를 인쇄하십시오. 숫자가 가려졌습니다.
SELinux의 동적 도메인 전환을 사용할 수 있습니다 클라이언트 프로세스의 보안 레이블을 전환하는 기능, 클라이언트 도메인을 새 컨텍스트로(허용되는 경우) 배트맨 토토 정책. 클라이언트 도메인에는 다음이 필요합니다.setcurrent허가 및 또한dyntransition오래된 것에서 새로운 것으로 도메인.
동적 도메인 전환은 신중하게 고려해야 합니다. 왜냐하면 사용자가 라벨을 전환할 수 있기 때문입니다. (에서와 같이)보다는 자신의 선택에 따라 자신의 특권을 신뢰할 수 있는 절차의 경우) 시스템에서 요구하는 대로. 따라서,dyntransition31584_31740
regression=# sepgsql_getcon() 선택;
sepgsql_getcon
------------------------------------------
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
(1줄)
regression=# SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0-s0:c1.c4');
sepgsql_setcon
----------------
티
(1줄)
regression=# SELECT sepgsql_setcon('unconfined_u:unconfined_r:unconfined_t:s0-s0:c1.c1023');
오류: SELinux: 배트맨 토토 정책 위반
위의 예에서 우리는 더 큰 MCS 범위c1.c1023에 더 작은 범위c1.c4, 하지만 전환 중 다시 거부되었습니다.
동적 도메인 전환과 신뢰의 조합 절차를 통해 다음과 같은 흥미로운 사용 사례를 구현할 수 있습니다. 연결 풀링 소프트웨어의 일반적인 프로세스 수명주기. 연결 풀링 소프트웨어가 허용되지 않는 경우에도 대부분의 SQL 명령을 실행하면 SQL 명령을 전환하도록 허용할 수 있습니다. 를 사용하는 클라이언트의 보안 레이블sepgsql_setcon()내에서 함수 신뢰할 수 있는 절차; 그러기 위해서는 어느 정도 자격 증명이 필요합니다 클라이언트 레이블을 전환하라는 요청을 승인합니다. 그 후, 이 세션은 대상 사용자의 권한을 갖게 됩니다. 연결 풀러가 아닌. 연결 풀러는 다음을 수행할 수 있습니다. 나중에 다시 사용하여 보안 레이블 변경을 되돌립니다.sepgsql_setcon()와NULL인수, 다시 내부에서 호출됨 적절한 권한 확인을 통해 신뢰할 수 있는 절차를 수행합니다. 는 여기서 중요한 점은 신뢰할 수 있는 프로시저만이 실제로 유효한 보안 레이블을 변경할 수 있는 권한 적절한 자격 증명이 주어지면 그렇게 합니다. 물론 보안을 위해서 작업, 자격 증명 저장소(테이블, 프로시저 정의, 또는 무엇이든) 무단 액세스로부터 보호되어야 합니다.
우리는 다음을 거부합니다PostgreSQL : 문서 : 9.2 :토토 베이명령 로드된 모든 모듈은 쉽게 사용할 수 있기 때문에 전반적으로 배트맨 토토 정책 시행을 우회합니다.
테이블 F-29사용 가능한 기능을 보여줍니다.
표 F-29. Sepgsql 함수
| sepgsql_getcon()이 반환됩니다. 텍스트 | 클라이언트 도메인, 현재 보안을 반환합니다. 클라이언트의 라벨입니다. |
| sepgsql_setcon(text)가 반환됩니다. 부울 | 현재 세션의 클라이언트 도메인을 전환합니다 배트맨 토토 정책에서 허용하는 경우 새 도메인으로 이동합니다. 또한 허용됩니다.NULL다음으로 입력 클라이언트의 원본으로 전환해 달라는 요청 도메인. |
| sepgsql_mcstrans_in(텍스트) 텍스트를 반환합니다 | 주어진 정규화된 MLS/MCS 범위를 다음으로 변환합니다. mcstrans 데몬이 실행 중인 경우 원시 형식입니다. |
| sepgsql_mcstrans_out(텍스트) 텍스트를 반환합니다 | 주어진 원시 MLS/MCS 범위를 다음으로 변환합니다. mcstrans 데몬이 다음과 같은 경우 정규화된 형식입니다. 달리고 있다. |
| sepgsql_restorecon(텍스트) 부울을 반환합니다 | 모든 개체에 대한 초기 보안 레이블을 설정합니다 현재 데이터베이스 내에서. 인수는 NULL일 수 있습니다. 또는 대안으로 사용할 스펙파일의 이름 시스템 기본값입니다. |
구현 제한으로 인해 일부 DDL 작업은 권한을 확인하지 않습니다.
구현 제한으로 인해 DCL 작업은 권한을 확인하지 마세요.
배트맨 토토하지 않습니다 행 수준 액세스를 지원합니다. 그러므로,sepgsql그것도 지원하지 않습니다.
sepgsql숨기려고 하지 않습니다 사용자가 특정 개체의 존재를 참조하는 것은 허용되지 않습니다. 예를 들어, 우리는 추론할 수 있습니다 보이지 않는 물체의 존재로 인해 기본 키 충돌, 외래 키 위반 등 객체의 내용을 얻을 수 없더라도 마찬가지입니다. 는 일급 비밀 테이블의 존재는 숨길 수 없습니다. 우리만 내용을 숨기길 바랍니다.
이 위키 페이지는 간략한 개요, 배트맨 토토을 제공합니다. 디자인, 건축, 관리 및 향후 기능.
이 문서는 다음과 같은 광범위한 지식을 제공합니다. 관리하다SELinux켜짐 당신의 시스템. 주로 Fedora에 중점을 두지만 그렇지 않습니다. Fedora로 제한됩니다.
이 문서는 자주 묻는 질문에 대한 답변입니다.SELinux. 초점을 맞춘다 주로 Fedora에 있지만 Fedora에만 국한되지는 않습니다.
카이가이 코헤이<kaigai@ak.jp.nec.com
| PostgreSQL : 문서 : 9.2 : 사설 토토 | 집 | 다음 |
| 세그 | 위로 | spi |