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=required
TimesTenオペレータは、適切な
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クライアント・インスタンスが含まれているアプリケーション・コンテナでシェルを確立します。