トランスポート・レイヤー・セキュリティ

コンテナ管理者は、環境変数およびキーストア・ファイルを、キーストアにアクセスするためのパスワード・ファイルとともに使用して、トランスポート・レイヤー・セキュリティを管理できます。

デフォルトでは、コンテナはHTTPSプロトコルを使用してアクセスを提供する一方で、HTTPは無効になっています。コンテナ管理者がコンテナを起動する際、次の環境変数が設定されている必要があります:

変数名 デフォルト値 説明
PRIVATE_AI_HTTPS_ENABLED

True

trueに設定すると、HTTPSが唯一サポートされているプロトコルになります。falseに設定すると、HTTPが有効になり、他のSSL環境は無視されます。

省略した場合は、デフォルト値のtrueが使用されます。

PRIVATE_AI_SSL_CERT_TYPE

"PKCS12"

SSLキー・ストアの証明書形式。

有効な値は、"PKCS12"および"JKS"です。

コンテナはTLS 1.3を使用します。他のTLSバージョンは受け入れられません。コンテナで使用されるのは、次の暗号のみです:

  • TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256

リストに含まれていない暗号で接続しようとしたクライアントは、SSLエラーで拒否されます。

コンテナ管理者は、環境変数の設定に加えて、キーストア・ファイルも作成する必要があります。キーストアは、"keystore"という名前で、秘密キーとクライアントに提示する必要がある証明書が格納されている必要があります。このファイルの形式は、PRIVATE_AI_SSL_CERT_TYPE変数で指定された形式と一致する必要があります。ファイルの拡張子は必須ではありませんが、存在する場合、PKCS12形式の場合は.pk12または.pfx、JKS形式の場合は.jksである必要があります。

これらのファイルはホスト・システム上に存在するため、コンテナ・ファイル・システムにマウントする必要があります。コンテナは、コンテナ・ファイル・システム内の/privateai/ssl下でのみこれらのファイルを検索するため、キーストアが格納されているホスト・ディレクトリは、コンテナ管理者がその場所にマウントする必要があります。

たとえば、キーストアが/opt/security/keystore.pk12に格納されている場合、コンテナ管理者は、次のコマンドを使用して、SSLサポート付きでコンテナを起動できます(この例では、Podmanがコンテナ・エンジンであるとします):

podman run -e PRIVATE_AI_CONFIG_FILE=/privateai/config/config.json
  -e PRIVATE_AI_ENABLE_SSL=true
  --secret keystore --secret key_pwd
  -v /opt/security:/privateai/ssl -v /opt/models:/privateai/models
  -p 9090:8443 <container_name>

また、コンテナ管理者は、コンテナがキーストアにアクセスできるようにパスワード・ファイルを生成する必要があります。次に例を示します:

cd /opt/.secrets
openssl genrsa -out key.pem
openssl rsa -in key.pem -out key.pub -pubout
openssl pkeyutl -in pwdfile.txt -out pwdfile.enc -pubin -inkey key.pub -encrypt
rm -rf /opt/.secrets/pwdfile.txt

その後、コンテナ管理者は、コンテナ内にシークレットを作成できます。次の例では、Podmanを使用していますが、Dockerでも同様のコマンドを使用できます:

podman secret create keystore /path/to/ssl/myKeystore.p12
podman secret create key_pwd -

secretsSetup.shスクリプトは、シークレットの作成に有用です。スクリプトおよびファイルのダウンロード場所の詳細は、「プライベートAIサービス・コンテナの構成」を参照してください。