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