암호화된 세션 녹화
Teleport v18.9암호화된 세션 녹화를 사용하면 Teleport 사용자가 세션 녹화 데이터에 대해 저장 시 암호화(at-rest encryption)를 활성화할 수 있습니다. 이 가이드에서는 암호화된 세션 녹화를 활성화하도록 Teleport Auth 서비스를 구성합니다.
암호화된 세션 녹화를 사용하면 Teleport 사용자가 세션 녹화 데이터에 대해 저장 시 암호화(at-rest encryption)를 활성화할 수 있습니다.
이 가이드에서는 암호화된 세션 녹화를 활성화하도록 Teleport Auth 서비스를 구성합니다.
작동 방식#
암호화된 녹화가 활성화되면 Teleport는 세션 녹화 데이터를 디스크나 장기
저장소에 저장하기 전에 암호화합니다. 암호화 키는 Teleport Auth 서비스 구성
파일의 ca_key_params 섹션에 정의된 CA용으로 구성된 것과 동일한 키 저장소
백엔드를 사용하여 프로비저닝됩니다. node-sync 및 proxy-sync 세션 녹화
모드에서는 세션 녹화 이벤트가 Teleport Auth 서비스로 직접 전송되며, 여기서
장기 저장소에 기록되기 전에 암호화됩니다. node 및 proxy 세션 녹화
모드에서는 세션 녹화 이벤트가 Teleport로 보호되는 서버 또는 프록시 서비스
인스턴스에서 로컬로 암호화된 후 이후 Auth 서비스로 업로드하기 위해 디스크에
기록됩니다.
리플레이를 위한 세션 녹화 복호화는 세션 녹화 모드와 관계없이 항상 Teleport
Auth 서비스를 통해 이루어집니다. 즉, 리플레이는 Teleport Web UI를 사용하거나
유효한 세션 ID로 tsh play를 사용하여 볼 수 있습니다. 암호화된 파일의 경우
tsh play를 사용하여 세션 녹화 파일을 직접 리플레이하는 것은 불가능합니다.
1/2단계. Teleport 구성#
이 섹션에서는 구성된 키 저장소 백엔드를 사용하여 세션 녹화를 암호화하도록 Teleport를 구성합니다.
녹화 암호화 활성화#
암호화된 세션 녹화는 Teleport Auth 서비스 구성 파일을 통해 활성화할 수 있습니다.
Auth 서비스 구성 파일을 다음과 같이 편집할 수 있습니다.
# snippet from teleport.yaml
auth_service:
session_recording_config:
encryption:
enabled: yes
선택적 단계: 키 저장소 백엔드 구성#
세션 녹화 암호화 키는 CA용으로 구성된 것과 동일한 키 저장소 백엔드를 사용하여 프로비저닝됩니다. Teleport의 백엔드 저장소에 저장된 소프트웨어 키가 기본값이지만, 다른 백엔드도 구성할 수 있습니다.
클러스터가 이미 이러한 백엔드 중 하나를 사용하도록 구성되어 있다면, Teleport가
해당 백엔드의 복호화 함수를 사용할 권한을 가지고 있는지 확인해야 합니다.
예를 들어 AWS KMS 백엔드를 사용하려면 Teleport의 역할 정책에 kms:Decrypt
액션을 추가해야 합니다.
녹화된 모든 세션이 항상 리플레이 가능하도록 하려면 모든 Teleport Auth 서비스 인스턴스가 정확히 동일한 암호화 키에 접근할 수 있어야 합니다. 즉, AWS KMS 및 GCP KMS 백엔드에서는 키에 대한 공유 접근이 필요하며, PKCS#11 백엔드에서는 네트워크로 연결된 공유 HSM이 필요합니다.
HSM 백엔드로 암호화된 녹화를 활성화하기 전에, 생성된 키에 대해 OAEP 복호화가
허용되는지 확인하세요. YubiHSM2의 경우 사용되는 authkey에는 기능(capability)과
위임된 기능(delegated capability) 모두에 decrypt-oaep가 포함되어 있어야
합니다. 다른 PKCS#11 HSM의 경우 CKM_DECRYPT 메커니즘이 활성화되어 있어야
합니다.
2/2단계. 새 녹화가 암호화되었는지 확인#
새 녹화를 캡처하고 audit sessions 백엔드에서
생성된 .tar 파일을 다운로드하여 세션 녹화가 이제 암호화되었는지 확인할 수
있습니다. tsh play로 세션 파일을 직접 리플레이하면 실패해야 하고, 세션
ID를 사용한 리플레이는 성공해야 합니다.
수동 암호화 키 관리#
암호화된 세션 녹화에는 녹화 시 암호화와 리플레이 시 복호화에 사용될 최소 하나의 활성 키가 필요합니다. 활성 키가 로테이션되어 더 이상 암호화에 사용되지 않게 되면 로테이션된 키가 됩니다. 로테이션된 키는 과거 녹화에 대한 접근을 유지하기 위해 리플레이 시 복호화에만 사용할 수 있습니다.
기본적으로 Teleport는 이러한 키를 자동으로 프로비저닝하고 관리합니다. 다만 Teleport가 키를 직접 관리할 충분한 권한을 가지고 있지 않은 환경 등, 자동 관리가 불가능하거나 바람직하지 않은 경우도 있을 수 있습니다. 이러한 이유로 Teleport는 외부에서 관리하는 키를 사용하도록 구성할 수 있습니다.
수동 암호화 키 관리를 사용하면 활성 키와 로테이션된 키를 발견할 키 저장소 백엔드의 유형과 사용할 특정 키를 식별하는 라벨을 정의하여 명시적으로 구성할 수 있습니다.
수동 암호화 키 관리는 키 관리에 대한 모든 책임과 복잡성을 관리자에게 부여합니다. 이는 잘못된 구성이 Teleport의 세션 녹화 또는 리플레이 기능에 영향을 미칠 위험을 크게 높입니다. 이러한 이유로 Teleport Cloud에서는 수동 암호화 키 관리 사용을 허용하지 않습니다. 사용 사례가 명시적으로 수동 키 관리를 요구하지 않는 한 기본 자동 키 관리를 사용하는 것을 고려하세요.
구성#
이 예시에서는 하나의 활성 키와 하나의 로테이션된 키가 구성된
manual_key_management를 활성화합니다. 두 키 모두 키 저장소 백엔드로
PKCS#11 호환 HSM을 사용하며, 각 키는 HSM 내에서 키를 식별하는 데 사용되는
고유한 라벨을 가지고 있습니다.
encryption:
enabled: yes
manual_key_management:
enabled: yes
active_keys:
- type: pkcs11
label: 'session_recordings_002'
rotated_keys:
- type: pkcs11
label: 'session_recordings_001'
Teleport는 active_keys와 rotated_keys에 설명된 키를 HSM에서 검색합니다.
활성 키는 새로운 세션 녹화의 암호화 및 리플레이 시 사용됩니다. 로테이션된
키는 과거 세션 녹화의 리플레이 시 사용되지만, 어떤 암호화 작업에도 사용되지
않습니다. PKCS#11 백엔드의 경우, 키는 키 조회 시 사용되는 라벨 외에 ID도
할당되어 있어야 합니다. ID는 manual_key_management 구성에 포함되지
않지만, 단일 키 쌍의 개인 키와 공개 키에는 동일한 ID가 할당되어야 합니다.
앞서 언급했듯이, 모든 Teleport Auth 서비스 인스턴스가 동일한 키에 접근할 수 있는 것이 중요합니다. 공유되지 않은 키를 사용하면 리플레이 가용성이 저하될 수 있습니다.
세션 녹화 암호화는 4096비트 RSA 키 쌍을 사용하는 OAEP 형태의 봉투 암호화
(envelope encryption)에 의존합니다. 즉, RSA 4096이 manual_key_management와
함께 사용할 수 있는 유일한 키 유형입니다. 또한 이러한 키가 복호화에 사용되도록
허용되어 있는 것도 중요합니다. 이것이 의미하는 바는 키 저장소 백엔드마다
다르지만, 일반적으로 키가 처음 프로비저닝될 때 정의되어야 합니다.