mTLS 인증 예제

Driverless AI는 인증 기관 파일, SSL 개인 키, SSL 인증서 파일 뿐만 아니라 특정 검증 모드를 설정을 이용하여 Mutual TLS authentication (mTLS) 을 지원합니다. 아래 다이어그램은 mTLS 인증 프로세스를 시각적으로 표현한 것입니다.

mTLS Authentication

구성 속성에 관한 설명

다음 구성 옵션을 사용하여 mTLS를 구성하십시오.

  • ssl_client_verify_mode: 클라이언트 검증 모드를 설정하십시오. 다음 검증 모드 중에서 선택합니다.

  • CERT_NONE: 클라이언트는 인증서를 제공하지 않아도 됩니다. 인증서 제공 시, 그에 따른 검증 오류는 무시됩니다.

  • CERT_OPTIONAL: 클라이언트는 인증서를 제공하지 않아도 됩니다. 인증서 제공 시, 구성된 CA 체인에 대해 확인됩니다.

  • CERT_REQUIRED: 검증을 위해 클라이언트는 인증서를 제공해야 합니다. Driverless가 자체 콜백 요청을 검증할 수 있도록 해당 모드를 선택한 경우 ssl_client_key_filessl_client_crt_file 옵션을 구성하십시오.

  • ssl_ca_file: 기관에서 제공하는 certification authority (CA) 인증서 파일의 경로를 지정합니다. 해당 인증서는 클라이언트 인증 활성화 시, 클라이언트 인증서의 확인에 사용됩니다. 지정되지 않으면 클라이언트는 기본 시스템 인증서를 사용하여 검증됩니다.

  • ssl_key_file: 웹 서버 개인 키 파일을 지정합니다. 보통 조직의 시스템 관리자에 의해 생성됩니다.

  • ssl_crt_file: 웹 서버 공용 인증서 파일을 지정합니다. 보통 조직의 시스템 관리자에 의해 생성됩니다.

  • Ssl_client_key_file: ssl_client_verify_mode = "CERT_REQUIRED" 인 경우에 필요합니다. Driverless AI가 스스로의 인증에 사용하는 private key 파일을 지정합니다. 보통 조직의 시스템 관리자에 의해 생성됩니다.

  • Ssl_client_crt_file: ssl_client_verify_mode = "CERT_REQUIRED" 인 경우에 필요합니다. Driverless AI가 스스로의 인증에 사용할 private client certificate 파일을 지정합니다. 보통 조직의 시스템 관리자에 의해 생성됩니다.

  • auth_tls_crl_file: 클라이언트 인증서 확인에 사용할 certificate revocation list 파일의 경로를 지정합니다. 해당 파일에는 취소된 사용자 ID 목록이 포함됩니다.

구성 시나리오

아래 표는 상기에서 설명한 구성 옵션 조합을 기초로 하는 mTLS 인증에 관한 사용자 인증서 행동을 설명합니다.

config.toml 설정

사용자가 인증서를 가지고 있지 않습니다

사용자가 정확하고 유효한 인증서를 가지고 있습니다

사용자가 취소된 인증서를 가지고 있습니다

ssl_client_verify_mode='CERT_NONE'

사용자 인증서가 무시됩니다

사용자 인증서가 무시됩니다

사용자의 취소된 인증서가 무시됩니다

ssl_client_verify_mode='CERT_OPTIONAL'

사용자 인증서가 무시됩니다

사용자 인증서가 Driverless AI로 설정되어 있지만 인증서 검증에 사용되지 않습니다

사용자의 취소된 인증서가 검증되지 않습니다

ssl_client_verify_mode='CERT_REQUIRED'

허가되지 않음

사용자가 Driverless AI에서 사용하는 유효한 인증서를 제시하지만 사용자를 인증하지 않습니다

사용자의 취소된 목록이 검증되지 않습니다

sl_client_verify_mode='CERT_REQUIRED'

authentication_method='tls_authentication'

허가되지 않음

사용자가 유효한 인증서를 제공합니다. 해당 인증서는 Driverless AI 서버 연결 및 인증에 사용됩니다.

사용자의 취소된 인증서가 검증되고 취소된 파일이 AUTH_TLS_CRL_FILE 에 제공됩니다.

mTLS 인증 활성화

Docker 이미지에서 mTLS 인증을 활성화하려면, 사용하려는 인증 환경 변수를 지정합니다. 각각의 변수는 DRIVERLESS_AI_로 시작되어야 합니다.

    nvidia-docker run \
                --pid=host \
                --init \
                --rm \
                --shm-size=256m \
                -p 12345:12345 \
                -u `id -u`:`id -g` \
                -e DRIVERLESS_AI_ENABLE_HTTPS=true \
                -e DRIVERLESS_AI_SSL_KEY_FILE=/etc/dai/private_key.pem \
                -e DRIVERLESS_AI_SSL_CRT_FILE=/etc/dai/cert.pem \
                -e DRIVERLESS_AI_AUTHENTICATION_METHOD=tls_certificate \
                -e DRIVERLESS_AI_SSL_CLIENT_VERIFY_MODE=CERT_REQUIRED \
                -e DRIVERLESS_AI_SSL_CA_FILE=/etc/dai/rootCA.pem \
                -e DRIVERLESS_AI_SSL_CLIENT_KEY_FILE=/etc/dai/client_config_key.key \
                -e DRIVERLESS_AI_SSL_CLIENT_CRT_FILE=/etc/dai/client_config_cert.pem \
                -v /user/log:/log \
                -v /user/tmp:/tmp \
                -v /user/certificates/server_config_key.pem:/etc/dai/private_key.pem \
                -v /user/certificates/server_config_cert.pem:/etc/dai/cert.pem \
                -v /user/certificates/client_config_cert.pem:/etc/dai/client_config_cert.pem \
                -v /user/certificates/client_config_key.key:/etc/dai/client_config_key.key \
                -v /user/certificates/rootCA.pem:/etc/dai/rootCA.pem \
                h2oai/dai-centos7-x86_64:1.10.1-cuda11.2.2.xx

Note: 인증서 검증 필요 시, Docker 매개변수 --hostname 을 사용하여 인증서 호스트 이름을 Docker 컨테이너 내에서 컨테이너의 IP 주소로 분해할 수 있는지 확인하십시오.