Certificate authentication
Certificate authentication (인증서 인증)
클라이언트가 제공하는 인증서를 Trino 서버가 최초 연결 시 검증하도록 구성하는 인증 방식이에요. 이미 클라이언트 인증서 인프라가 갖춰진 환경에 적합해요.
출처: 문서
본문
Trino가 클라이언트가 제공하는 인증서를 초기 연결 시 서버가 검증하도록 구성할 수 있어요.
Important
이 인증 방법은 클라이언트 인증이 절대적으로 필요하고 각 클라이언트에 이미 클라이언트 인증서가 있는 사이트를 지원하기 위해서만 제공돼요. 이런 사이트에는 기존 PKI 인프라, 어쩌면 사내 CA(Certificate Authority)가 있을 수 있어요.
이 기능은 이 인증 타입을 쓰려고 클라이언트 인증서를 새로 생성해야 하는 사이트에는 적합하지 않아요. 그런 경우에는 다른 인증 타입을 사용하는 걸 고려하세요.
인증서 인증에는 TLS 사용과 구성된 공유 시크릿(shared secret)이 필요해요.
인증서 인증 사용 (Using certificate authentication)
TLS/HTTPS로 연결하는 모든 클라이언트는 다음 초기 단계를 거쳐요:
- 클라이언트가 코디네이터에 연결을 시도해요.
- 코디네이터가 자신의 인증서를 클라이언트에 반환해요.
- 클라이언트가 자신의 신뢰 저장소(trust store)를 사용해 서버의 인증서를 검증해요.
인증서 인증이 활성화된 클러스터는 다음 추가 단계를 거쳐요:
- 코디네이터가 클라이언트에게 인증서를 요청해요.
- 클라이언트가 자신의 인증서로 응답해요.
- 코디네이터가 자신의 신뢰 저장소를 사용해 클라이언트의 인증서를 검증해요.
이 단계들에서 몇 가지 규칙이 나와요:
- 클라이언트가 사용하는 신뢰 저장소에는 코디네이터 인증서의 서명자 인증서가 포함되어야 해요.
- 코디네이터가 사용하는 신뢰 저장소에는 클라이언트 인증서의 서명자 인증서가 포함되어야 해요.
- 코디네이터와 클라이언트가 사용하는 신뢰 저장소가 같을 필요는 없어요.
- 코디네이터를 검증하는 인증서가 클라이언트를 검증하는 인증서와 같을 필요는 없어요.
Trino는 X.509 Subject 필드의 distinguished name(DN)을 기준으로 인증서를 검증해요. user mapping을 사용해 subject DN을 Trino 사용자 이름으로 매핑할 수 있어요.
클라이언트 인증서 지원에는 세 가지 수준이 가능해요. 서버의 관점에서:
- 서버가 클라이언트에게 인증서를 요구하지 않음.
- 서버가 클라이언트에게 인증서를 요청하지만, 없이도 연결을 허용함.
- 서버가 클라이언트에게 인증서를 요구해서만 연결을 허용함.
Trino의 클라이언트 인증서 지원은 중간 유형이에요. 인증서를 요청하지만 다른 인증 방법이 통과하면 연결을 허용해요.
인증서 인증 구성 (Certificate authentication configuration)
etc/config.properties에서 Certificate 인증 타입을 설정해 인증서 인증을 활성화하세요:
http-server.authentication.type=CERTIFICATE
인증서 인증을 PASSWORD 같은 다른 인증 방법과 함께 지정할 수 있어요. 이 경우 인증은 항목 순서대로 수행되고, 첫 번째로 성공한 인증이 접근을 허용해요. 예를 들어 다음 설정은 두 인증 타입을 사용하는 예시예요:
http-server.authentication.type=CERTIFICATE,PASSWORD
다음 구성 속성도 사용할 수 있어요:
구성 속성 (Configuration properties)
| Property name | Description |
|---|---|
http-server.authentication.certificate.user-mapping.pattern |
이 인증 타입의 모든 사용자 이름을 Trino가 기대하는 형식으로 매핑하는 정규식 패턴. |
http-server.authentication.certificate.user-mapping.file |
이 인증 타입에 대한 사용자 매핑 규칙 집합을 담은 JSON 파일 경로. |
클라이언트와 함께 인증서 인증 사용 (Use certificate authentication with clients)
Trino CLI를 사용할 때는 Certificate authentication 문서에 설명된 대로 --keystore-path와 --keystore-password 옵션을 지정하세요.
인증서 인증이 활성화된 클러스터에 Trino JDBC 드라이버로 연결할 때는 SSLKeyStoreType과 SSLKeyStorePassword 파라미터를 사용해 클라이언트 인증서 경로와 (있다면) 그 비밀번호를 지정하세요.
더 알아보기 (Learn more)
인증서 인증을 설정하기 전에 TLS 구성(TLS)과 JKS 파일 검증(Inspect JKS)을 먼저 익혀두면 좋아요.