TimesTenClassicオブジェクトの構成およびデプロイ
この例では、自動クライアント/サーバーのTLS暗号化用にTimesTenClassicオブジェクトを構成およびデプロイする方法を示します。この例では、YAMLマニフェスト・ファイルを使用します。
- 任意のディレクトリで、YAMLマニフェスト・ファイルを作成します。
vi sampletls.yaml apiVersion: timesten.oracle.com/v4 kind: TimesTenClassic metadata: name: sampletls spec: ttspec: storageClassName: oci-bv clientTLS: auto: true ciphersuites: SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 eccurve: p256 encryption: required signAlg: ecdsasha384 validity: 365 storageSize: 10Gi image: container-registry.oracle.com/timesten/timesten:22.1.1.34.0 imagePullSecret: sekret dbConfigMap: - sampletls次の点に注目してください。-
.spec.ttspec.clientTLSが指定され、.spec.ttspec.clientTLSがtrueに設定されています。この指示により、TimesTenオペレータは、自己署名証明書を自動的に作成し、これらの証明書をクライアント/サーバーのTLS暗号化に使用するようTimesTenを構成します。 -
.spec.ttspec.clientTLS.ciphersuitesが指定されています。TimesTenオペレータは、値がSSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384のciphersuitesエントリをsys.odbc.iniファイルに追加します。 -
.spec.ttspec.clientTLS.eccurveが指定されています。TimesTenオペレータは、-eccurveオプションをttCreateCertsユーティリティに追加し、このオプションにp256の値を指定します。 -
.spec.ttspec.clientTLS.encryptionが指定されています。TimesTenオペレータは、値がrequiredのencryptionエントリをsys.odbc.iniファイルに追加します。 -
.spec.ttspec.clientTLS.signAlgが指定されています。TimesTenオペレータは、-sign_algオプションをttCreateCertsユーティリティに追加し、このオプションにecdsasha384の値を指定します。 -
.spec.ttspec.clientTLS.validityが指定されています。TimesTenオペレータは、-validityオプションをttCreateCertsユーティリティに追加し、このオプションに365の値を指定します。
-
- TimesTenClassicオブジェクトをデプロイします。
kubectl create -f sampletls.yaml出力は次のようになります。timestenclassic.timesten.oracle.com/sampletls created - デプロイメントを監視します。
- ステータスをチェックします。
kubectl get ttc sampletls出力は、次のようになります。
NAME STATE ACTIVE AGE sampletls Initializing None 2m33sプロビジョニングは開始しましたが、まだ完了していません。
- 数分待ってから、再度ステータスを確認します。
kubectl get ttc sampletls出力は、次のようになります。
NAME STATE ACTIVE AGE sampletls Normal sampletls-0 4m37sプロビジョニング・プロセスが完了します。データベースは稼働中であり、
Normal状態で示されるとおり、動作しています。
- ステータスをチェックします。
- TimesTenオペレータが、TimesTenサーバーおよびTimesTenクライアントの証明書を含むKubernetesシークレットを作成したことを確認します。
- シークレットを確認します。
kubectl get secrets出力は、次のようになります。
NAME TYPE DATA AGE sampletls-client Opaque 1 21m sampletls-server Opaque 1 21m ... sampletls-serverシークレットの内容を確認します。kubectl describe secret sampletls-server出力は、次のようになります。
Name: sampletls-server Namespace: mynamespace Labels: <none> Annotations: <none> Type: Opaque Data ====cwallet.sso: 1525 bytesシークレットには、
cwallet.ssoウォレットが含まれています。このウォレットには、TimesTenサーバーの自己署名証明書が含まれています。sampletls-clientシークレットの内容を確認します。kubectl describe secret sampletls-client出力は、次のようになります。
Name: sampletls-client Namespace: mynamespace Labels: <none> Annotations: <none> Type: Opaque Data ====cwallet.sso: 1525 bytesシークレットには、
cwallet.ssoウォレットが含まれています。このウォレットには、TimesTenクライアントの自己署名証明書が含まれています。
TimesTenオペレータは、TimesTenttCreateCertsユーティリティを実行して、クライアント/サーバーのTLS暗号化用の自己署名証明書を作成しました。TimesTenオペレータは、これらの証明書をKubernetesシークレットに格納しました。 - シークレットを確認します。
- クライアント/サーバーのTLS暗号化用の証明書が使用されるよう、TimesTenオペレータにより自動的にTimesTenが構成されたことを確認します。
sampletls-0ポッドのttコンテナにシェルを設定します。kubectl exec -it sampletls-0 -c tt -- /bin/bash- サーバー・ウォレットとクライアント・ウォレットが存在することを確認します。
[timesten@sampletls-0 /]$ pwd /[timesten@sampletls-0 /]$ ls -a serverWallet . .. cwallet.sso[timesten@sampletls-0 /]$ ls -a clientWallet . .. cwallet.sso/serverWallet/cwallet.ssoウォレットには、TimesTenサーバーの自己署名証明書が含まれます。/clientWallet/cwallet.ssoウォレットには、TimesTenクライアントの自己署名証明書が含まれます。 - (オプション)
sys.odbc.iniファイルの内容を確認します。[timesten@sampletls-0 ~]$ cat /tt/home/timesten/instances/instance1/conf/sys.odbc.ini出力は、次のようになります。
[ODBC Data Sources] sampletls=TimesTen 22.1 Driver tt=TimesTen 22.1 Driver [sampletls] Datastore=/tt/home/timesten/datastore/sampletls PermSize=200 DatabaseCharacterSet=AL32UTF8 DDLReplicationLevel=3 AutoCreate=0 ForceDisconnectEnabled=1 Wallet=/serverWallet Ciphersuites=SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 Encryption=required [tt] Datastore=/tt/home/timesten/datastore/sampletls PermSize=200 DatabaseCharacterSet=AL32UTF8 DDLReplicationLevel=3 AutoCreate=0 ForceDisconnectEnabled=1 WaitForConnect=0 Wallet=/serverWallet Ciphersuites=SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 Encryption=requiredTimesTenオペレータは、適切な
Wallet、CiphersuitesおよびEncryptionエントリをsys.odbc.iniファイルに正しく追加しました。これらのエントリの値は、.spec.ttspec.clientTLSに指定されており、正しい値です。 - シェルを終了します。
- TLSが使用されていることを確認します。
次のステップでは、TimesTenクライアント・インスタンスを実行しているアプリケーション・コンテナにクライアント・ウォレットを正常にコピーしたこと、および適切なクライアント側属性を構成したことを前提としています。TimesTenクライアント側属性の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』の「タスク3: TimesTen ClassicでのTLSのクライアント構成の設定」を参照してください。
- TimesTenクライアント・インスタンスが含まれているアプリケーション・コンテナでシェルを確立します。
kubectl exec -it client-0 -c tt -- /bin/bash ttIsqlCSを使用して、sampletlsデータベースに接続します。[timesten@sampletls-0]$ ttisqlcs -connstr "TTC_SERVER1=sampletls-0.sampletls.mynamespace.svc.cluster.local;TTC_SERVER2=sampletls-1.sampletls.mynamespace.svc.cluster.local;TTC_SERVER_DSN=sampletls;UID=adminuser;PWD=adminuserpwd;wallet=/clientWallet;ciphersuites=SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384;encryption=required";出力は、次のようになります。Copyright (c) 1996, 2025, Oracle and/or its affiliates. All rights reserved. Type ? or "help" for help, type "exit" to quit ttIsql. connect "TTC_SERVER1=sampletls-0.sampletls.mynamespace.svc.cluster.local;TTC_SERVER2=sampletls-1.sampletls.mynamespace.svc.cluster.local;TTC_SERVER_DSN=sampletls;UID=adminuser;PWD=********;wallet=/clientWallet;ciphersuites=SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384;encryption=required"; Connection successful: DSN=;TTC_SERVER=sampletls-0.sampletls.mynamespace.svc.cluster.local;TTC_SERVER_DSN=sampletls;UID=adminuser;DATASTORE=/tt/home/timesten/datastore/sampletls;DATABASECHARACTERSET=AL32UTF8;CONNECTIONCHARACTERSET=US7ASCII;AUTOCREATE=0;PERMSIZE=200;DDLREPLICATIONLEVEL=3;FORCEDISCONNECTENABLED=1;Encryption=Required;Wallet=/clientWallet;CipherSuites=SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384; (Default setting AutoCommit=1)ttIsqlCSのTimesTensqlgetconnectattrコマンドを使用して、TLSが使用されていることを確認します。戻り値の1は、TLSが使用されていることを示します。Command> sqlgetconnectattr tt_tls_session;出力は次のようになります。
TT_TLS_SESSION = 1 (SQL_TRUE)
- TimesTenクライアント・インスタンスが含まれているアプリケーション・コンテナでシェルを確立します。