7.3. Keylime 검증기를 컨테이너로 배포
Keylime 확인자는 시스템 무결성의 초기 및 주기적 검사를 수행하고 에이전트를 사용하여 암호화 키 부트스트랩을 지원합니다. 호스트의 바이너리 또는 패키지 없이 RPM 방법 대신 Keylime verifier를 컨테이너로 구성할 수 있습니다. 컨테이너 배포로 Keylime 구성 요소의 격리, 모듈성 및 재현성을 개선할 수 있습니다.
컨테이너를 시작한 후 Keylime verifier가 기본 구성 파일과 함께 배포됩니다. 다음 방법 중 하나 이상을 사용하여 구성을 사용자 지정할 수 있습니다.
- 구성 파일이 포함된 호스트의 디렉터리를 컨테이너에 마운트합니다. 이는 모든 RHEL 9 버전에서 사용할 수 있습니다.
- 컨테이너에서 직접 환경 변수를 수정합니다. RHEL 9.3 이상 버전에서 사용할 수 있습니다. 환경 변수를 수정하면 구성 파일의 값이 재정의됩니다.
사전 요구 사항
-
podman
패키지 및 해당 종속 항목은 시스템에 설치됩니다. 선택 사항: Keylime이 검증기의 데이터를 저장하는 데이터베이스에 액세스할 수 있습니다. 다음 데이터베이스 관리 시스템을 사용할 수 있습니다.
- SQLite(기본값)
- PostgreSQL
- MySQL
- MariaDB
- 인증 기관의 유효한 키와 인증서가 있습니다.
절차
선택 사항:
keylime-verifier
패키지를 설치하여 구성 파일에 액세스합니다. 이 패키지 없이 컨테이너를 구성할 수 있지만 패키지와 함께 제공된 구성 파일을 더 쉽게 수정할 수 있습니다.# dnf install keylime-verifier
/etc/keylime/verifier
디렉터리에 새 .conf 파일을 생성하여 검증기를 모든 사용 가능한 IP 주소에 바인딩합니다(예:.conf
.d//etc/keylime/verifier.conf.d/00-verifier-ip.conf
).[verifier] ip = *
-
선택적으로
port
옵션을 사용하여 verifier의 포트를 기본값8881
에서 변경할 수도 있습니다.
-
선택적으로
선택 사항: 에이전트 목록에 대해 검증자 데이터베이스를 구성합니다. 기본 구성은 검증자의
/var/lib/keylime/cv_data.sqlite/
디렉터리의 SQLite 데이터베이스를 사용합니다. /etc/keylime/verifier.conf
.d/ 디렉터리에 새 .conf 파일을 생성하여 다른 데이터베이스를 정의할 수 있습니다(예:/etc/keylime/verifier.conf.d/
00-db-url.conf[verifier] database_url = <protocol>://<name>:<password>@<ip_address_or_hostname>/<properties>
<
protocol>://<name>:<password>@<ip_address_or_hostname>/<properties
>를 데이터베이스의 URL로 바꿉니다(예:postgresql://verifier:UQ?nRNY9g7GZzN7@198.51.100.1/verifierdb
).사용하는 인증 정보에 데이터베이스 구조를 생성하기 위한 Keylime에 대한 권한이 있는지 확인합니다.
검증에 인증서와 키를 추가합니다. Keylime에서 해당 키를 생성하거나 기존 키 및 인증서를 사용하도록 할 수 있습니다.
-
기본
tls_dir = generate
옵션을 사용하면 Keylime에서 검증자, 등록 기관 및 테넌트에 대한 새 인증서를/var/lib/keylime/cv_ca/
디렉터리에 생성합니다. 구성에서 기존 키와 인증서를 로드하려면 확인자 구성에서 해당 위치를 정의합니다. 인증서는
keylime
사용자가 Keylime 프로세스가 실행 중인 액세스할 수 있어야 합니다./etc/keylime/verifier
.conf
.d/ 디렉터리에 새 .conf 파일을 만듭니다(예:/etc/keylime/verifier.conf.d/
00-keys-and-certs.conf[verifier] tls_dir = /var/lib/keylime/cv_ca server_key = </path/to/server_key> server_cert = </path/to/server_cert> trusted_client_ca = ['</path/to/ca/cert1>', '</path/to/ca/cert2>'] client_key = </path/to/client_key> client_cert = </path/to/client_cert> trusted_server_ca = ['</path/to/ca/cert3>', '</path/to/ca/cert4>']
참고절대 경로를 사용하여 키 및 인증서 위치를 정의합니다. 또는
tls_dir
옵션에 정의된 디렉터리에서 상대 경로가 확인됩니다.
-
기본
방화벽에서 포트를 엽니다.
# firewall-cmd --add-port 8881/tcp # firewall-cmd --runtime-to-permanent
다른 포트를 사용하는 경우
8881
을.conf
파일에 정의된 포트 번호로 바꿉니다.컨테이너를 실행합니다.
$ podman run --name keylime-verifier \ -p 8881:8881 \ -v /etc/keylime/verifier.conf.d:/etc/keylime/verifier.conf.d:Z \ -v /var/lib/keylime/cv_ca:/var/lib/keylime/cv_ca:Z \ -d \ -e KEYLIME_VERIFIER_SERVER_KEY_PASSWORD=<passphrase1> \ -e KEYLIME_VERIFIER_CLIENT_KEY_PASSWORD=<passphrase2> \ registry.access.redhat.com/rhel9/keylime-verifier
-
-p
옵션은 호스트 및 컨테이너에서 기본 포트8881
을 엽니다. -v
옵션은 디렉터리에 대한 바인딩 마운트를 컨테이너에 생성합니다.-
Z
옵션을 사용하면 Podman은 비공개 비공유 레이블로 콘텐츠를 표시합니다. 즉, 현재 컨테이너만 개인 볼륨을 사용할 수 있습니다.
-
-
d
옵션은 컨테이너 분리 및 백그라운드에서 실행됩니다. -
옵션
-e KEYLIME_VERIFIER_SERVER_KEY_PASSWORD= <passphrase1&
gt;은 서버 키 암호를 정의합니다. -
옵션
-e KEYLIME_VERIFIER_CLIENT_KEY_PASSWORD= <passphrase2&
gt;는 클라이언트 키 암호를 정의합니다. -
-e KEYLIME_VERIFIER _<ENVIRONMENT_VARIABLE> = <value
> 옵션을 사용하여 환경 변수로 구성 옵션을 덮어쓸 수 있습니다. 추가 옵션을 수정하려면 각 환경 변수에 대해-e
옵션을 별도로 삽입합니다. 환경 변수 및 기본값의 전체 목록은 Keylime 환경 변수를 참조하십시오.
-
검증
컨테이너가 실행 중인지 확인합니다.
$ podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 80b6b9dbf57c registry.access.redhat.com/rhel9/keylime-verifier:latest keylime_verifier 14 seconds ago Up 14 seconds 0.0.0.0:8881->8881/tcp keylime-verifier
다음 단계
추가 리소스
- Keylime 구성 요소에 대한 자세한 내용은 Keylime 작동 방식을 참조하십시오.
- Keylime verifier 구성에 대한 자세한 내용은 Keylime verifier 구성을 참조하십시오.
-
podman run
명령에 대한 자세한 내용은 시스템의podman-run(1)
도움말 페이지를 참조하십시오.