プライマリ・コンテンツに移動
Oracle® TimesTen In-Memory Database Kubernetesオペレータ・ユーザーズ・ガイド
リリース18.1
F33742-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 データ転送のための暗号化の使用

TimesTenレプリケーションおよびTimesTen Client/Serverでは、TimesTenインスタンス間の通信にTransport Layer Security (TLS)の使用をサポートしています。

この章では、Kubernetes環境でTLSを構成して使用する際のプロセスについて説明します。これにより、レプリケートされたTimesTenデータベース間の暗号化されたデータ転送が可能になります。また、Client/Server環境では、TimesTenクライアント・アプリケーションとTimesTenサーバー(TimesTenデータベース)間のデータ転送も暗号化できます。

内容は次のとおりです。

レプリケーションおよびClient/Server用のTLS証明書の作成

デフォルトでは、TimesTenレプリケーションは、TimesTenデータベース間で暗号化されていないデータを転送します。また、TimesTen Client/Server環境では、デフォルトで、データはアプリケーションとTimesTenデータベース間で暗号化されずに転送されます。

レプリケーションおよびClient/Serverの暗号化は、Transport Layer Security (TLS)を使用することで有効化できます。TimesTenには、TLS用の自己署名証明書を生成するためのttCreateCertsユーティリティがあります。TLS証明書とウォレットの詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTenでの証明書の使用に関する項を参照してください。


ノート:

ttCertsCreateユーティリティを使用するには、JavaがLinux開発ホストにインストールされている必要があります。このユーティリティは、JRE_HOMEJAVA_HOMEおよびPATHの設定に従ってJavaを検索します。

ttCreateCertsユーティリティは、TimesTenインスタンスの/binディレクトリ内にあります。このユーティリティにより、3つのウォレットrootWalletclientWalletおよびserverWalletが作成されます。

Linux開発ホストから、次のステップを実行して証明書を作成します。

  1. インストール環境のbinディレクトリに移動し、ttInstanceCreateユーティリティを対話形式で実行してインスタンスを作成します。installation_dirディレクトリは、TimesTenディストリビューションの解凍時に作成されたものです。TimesTenディストリビューションの解凍手順の詳細は、「TimesTenおよびTimesTenオペレータのダウンロード」を参照してください。

    ttCreateCertsユーティリティはTimesTenインスタンスから実行されるため、TimesTenインスタンスを作成する必要があります。ttInstanceCreateユーティリティの詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのttInstanceCreateを参照してください。

    インスタンス・ディレクトリ(この例では/scratch/ttuser/instance_dir)を作成し、パラメータの-name-locationを指定してttInstanceCreateユーティリティを実行します。この例では、インスタンスの名前としてinstance1を使用し、インスタンスの場所として/scratch/ttuser/instance_dirを使用します。

    % mkdir /scratch/ttuser/instance_dir
    
    % installation_dir/tt18.1.4.11.0/bin/ttInstanceCreate -name instance1 
    -location /scratch/ttuser/instance_dir
    Creating instance in /scratch/ttuser/instance_dir/instance1 ...
    INFO: Mapping files from the installation to /scratch/ttuser/
    instance_dir/instance1/install
     
    NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.
     
    The startup script is located here :
            '/scratch/ttuser/instance_dir/instance1/startup/tt_instance1'
     
    Run the 'setuproot' script :
            /scratch/ttuser/instance_dir/instance1/bin/setuproot -install
    This will move the TimesTen startup script into its appropriate location.
     
    The 18.1 Release Notes are located here :
      'installation_dir/tt18.1.4.11.0/README.html'
    
  2. TIMESTEN_HOME環境変数を設定します。この変数は、ttCertsCreateユーティリティの実行前に設定する必要があります。インスタンスのbinディレクトリから、ttenv.cshまたはttenv.shスクリプトを実行します。

    この例では、bash Bourneタイプのシェルを使用します。(出力のすべては示していません)。

    % . /scratch/ttuser/instance_dir/instance1/bin/ttenv.sh
    LD_LIBRARY_PATH set to 
    ...
    PATH set to 
    ...
    CLASSPATH set to 
    TIMESTEN_HOME set to /scratch/ttuser/instance_dir/instance1
    
  3. インスタンスのbinディレクトリから、ttCreateCertsユーティリティを実行します。この例では、-verbose修飾子を使用することで詳細な出力を表示します。ttCreateCertsユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTen用の証明書の生成に関する項を参照してください。

    デフォルトのウォレット・ディレクトリは、timesten_home/confです。このtimesten_homeは、TimesTenインスタンスのホーム・ディレクトリです。この例では、このデフォルトのウォレット・ディレクトリを使用します。

    % /scratch/ttuser/instance_dir/instance1/bin/ttCreateCerts -verbose
    Requested Certificates:
    User Certificates:
    Subject:        CN=server1,C=US
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    Requested Certificates:
    User Certificates:
    Subject:        CN=client1,C=US
    Trusted Certificates:
    Subject:        CN=ecRoot,C=US
    ttCreateCerts : certificates created in /scratch/ttuser/instance_dir/
    instance1/conf
    
  4. ウォレットの場所と証明書(太字で表示)を確認します。serverWalletディレクトリ内のcwallet.ssoは、replicationWalletメタデータ・ファイルとしてレプリケーション用およびClient/Server環境のサーバー用に指定するファイルです。clientWalletディレクトリのcwallet.ssoは、Client/Server環境のクライアント用に使用するファイルです。replicationWalletおよびclientWalletメタデータ・ファイルの詳細は、「サポートされているメタデータ・ファイル」を参照してください。これらのメタデータ・ファイルの使用方法の詳細は、「レプリケーション用のTLSの構成」および「Client/Server用のTLSの構成」も参照してください。

    (該当するcwallet.ssoファイルについても、太字で表示しています)。

    % ls $TIMESTEN_HOME/conf
    client1.cert  root.cert   server1.cert  snmp.ini      sys.ttconnect.ini
    clientWallet  rootWallet  serverWallet  sys.odbc.ini  timesten.conf
    
    % ls $TIMESTEN_HOME/conf/*Wallet*
    /scratch/ttuser/instance_dir/instance1/conf/clientWallet:
    cwallet.sso  cwallet.sso.lck
     
    /scratch/ttuser/instance_dir/instance1/conf/rootWallet:
    cwallet.sso  cwallet.sso.lck
     
    /scratch/ttuser/instance_dir/instance1/conf/serverWallet:
    cwallet.sso  cwallet.sso.lck
    

レプリケーションとTimesTen Client/Serverの両方でTLSに使用できる証明書の作成が完了しました。この時点で、レプリケーションとClient/Serverのどちらかに、またはレプリケーションとClient/Serverの両方に、TLSを構成して使用する準備が整いました。

レプリケーション用のTLSの構成

レプリケーション用のTLSを構成すると、レプリケートされたTimesTenデータベース間でセキュアなネットワーク通信を確保できます。詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTenレプリケーションのTransport Layer Securityに関する項を参照してください。

次の項では、レプリケーション用のTLSを構成して使用する方法について説明します。

メタデータ・ファイルとKubernetes機能の作成

レプリケーションのTLSサポートには、/ttconfig/replicationWalletメタデータ・ファイルが必要です。(/ttconfigディレクトリは、TimesTenデータベースのコンテナ内にあります)。このファイルには、TLS証明書の作成時に生成されたcwallet.ssoファイル(Oracleウォレット)が含まれている必要があります。このファイルは、/scratch/ttuser/instance_dir/instance1/conf/serverWalletディレクトリに配置したものです。該当する証明書の作成方法は、「レプリケーションおよびClient/Server用のTLS証明書の作成」を参照してください。このウォレットには、TimesTenデータベースのアクティブ・スタンバイ・ペア間でTLS暗号化を構成するためにTimesTenレプリケーションで使用される資格証明が含まれています。

/ttconfig/replicationWalletメタデータ・ファイルに加えて、その他のサポートされているメタデータ・ファイルも使用できます。サポートされるメタデータ・ファイルの詳細は、「サポートされるメタデータ・ファイル」を参照してください。

これらのメタデータ・ファイルは、Kubernetesの1つ以上の機能(たとえば、Kubernetes Secret、ConfigMapまたは初期化コンテナ)に含めることができます。これにより、メタデータ・ファイルがTimesTenコンテナの/ttconfigディレクトリに確実に移入されます。この/ttconfigディレクトリにメタデータ・ファイルを配置する方法についての要件はありません。詳細は、「/ttconfigディレクトリの移入」を参照してください。

次の各項の例では、replicationWalletメタデータ・ファイルをKubernetes Secretに含める方法を示します。また、db.iniadminUserおよびschema.sqlメタデータ・ファイルを作成して、それらのメタデータ・ファイルをConfigMapに含めます。

Kubernetes Secretの作成

この項では、repl-tls Kubernetes Secretを作成します。repl-tls Secretには、replicationWalletメタデータ・ファイルを格納します。

Linux開発ホストで、次のことを実行します。

  1. 任意のディレクトリから、空のサブディレクトリを作成します。この例では、serverWalletサブディレクトリを作成します。(今後、この例では、このディレクトリを表す場合にserverWalletディレクトリを使用します)。

    % mkdir -p serverWallet
    
  2. 前の手順で作成したserverWalletディレクトリに、/scratch/ttuser/instance_dir/instance1/conf/serverWallet/cwallet.ssoファイルをコピーします。このファイルは、ttCreateCertsユーティリティを使用してTLS証明書を作成したときに生成されたものです。詳細は、「レプリケーションおよびClient/Server用のTLS証明書の作成」を参照してください。

    % cp /scratch/ttuser/instance_dir/instance1/conf/serverWallet/cwallet.sso 
    serverWallet/cwallet.sso
    
  3. Kubernetes Secretの作成

    この例では次のとおりです。

    • Secretの名前はrepl-tlsです。repl-tlsは適宜の名前に置き換えます(repl-tls太字で表示しています)。

    • TLSレプリケーション用に必要なメタデータ・ファイルの名前は、replicationWallet (太字で表示)です。

    • ウォレット・ディレクトリの場所は、serverWalletです(この例では、太字で表示しています)。別のディレクトリを使用する場合、serverWalletは使用するディレクトリの名前に置き換えます。

    • Oracleウォレットの名前は、cwallet.ssoです(太字で表示)。

    kubectl createコマンドを使用してシークレットを作成します。

    % kubectl create secret generic repl-tls 
    --from-file=replicationWallet=serverWallet/cwallet.sso
    secret/repl-tls created
    

repl-tls Kubernetes Secretの作成とデプロイが完了しました。この後、replicationWallet/cwallet.ssoファイルは、TimesTenコンテナの/ttconfigディレクトリから使用できるようにします。また、ファイルはTimesTenコンテナの/tt/home/oracle/replicationWalletディレクトリから使用できるようにします。

ConfigMapの作成

この項では、repl-tls ConfigMapを作成します。このConfigMapには、db.iniadminUserおよびschema.sqlメタデータ・ファイルが含まれます。

こうしたメタデータ・ファイルはTLSには不要ですが、TimesTenデータベースの追加属性として含まれています。構成ファイルとConfigMap機能の詳細は、「構成メタデータとKubernetes機能の理解」を参照してください。

Linux開発ホストで、次のことを実行します。

  1. 選択したディレクトリから、メタデータ・ファイル用に空のサブディレクトリを作成します。この例では、cm_replTLSサブディレクトリを作成します。(今後、この例では、このディレクトリを表す場合にcm_replTLSディレクトリを使用します)。

    % mkdir -p cm_replTLS
    
  2. ConfigMapディレクトリに移動します。

    % cd cm_replTLS
    
  3. このConfigMapディレクトリ(この例ではcm_replTLS)に、db.iniファイルを作成します。このdb.iniファイルで、PermSize接続属性とDatabaseCharacterSet接続属性を定義します。

    vi db.ini
    
    PermSize=200
    DatabaseCharacterSet=AL32UTF8
    
  4. このConfigMapディレクトリ(この例ではcm_replTLS)に、adminUserファイルを作成します。このadminUserファイルで、tigerパスワードを使用してscottユーザーを作成します。

    vi adminUser
    
    scott/tiger
    
  5. このConfigMapディレクトリ(この例ではcm_replTLS)に、schema.sqlファイルを作成します。このschema.sqlファイルで、scottユーザーのs順序とemp表を定義します。オペレータはこれらのオブジェクト定義でデータベースを自動的に初期化します。

    vi schema.sql
    
    create sequence scott.s;
    create table scott.emp (
      id number not null primary key,
      name char(32)
    );
    
  6. ConfigMapを作成します。cm_replTLSディレクトリ内のファイルは、ConfigMapに含めておくことで、TimesTenコンテナで使用できるようにします。

    この例では次のとおりです。

    • ConfigMapの名前はrepl-tlsです。repl-tlsは適宜の名前に置き換えます(この例では、repl-tls太字で表示しています)。

    • この例では、ConfigMapにコピーするファイルが存在しているディレクトリとしてcm_replTLSを使用しています。別のディレクトリを使用する場合、cm_replTLSは目的のディレクトリの名前に置き換えます(この例では、cm_replTLS太字で表示しています)。

    kubectl createコマンドを使用して、ConfigMapを作成します。

    % kubectl create configmap repl-tls --from-file=cm_replTLS
    configmap/repl-tls created
    
  7. kubectl describeコマンドを使用して、ConfigMap (この例ではrepl-tls)の内容を確認します。

    % kubectl describe configmap repl-tls
    Name:         repl-tls
    Namespace:    mynamespace
    Labels:       <none>
    Annotations:  <none>
     
    Data
    ====
    adminUser:
    ----
    scott/tiger
     
    db.ini:
    ----
    PermSize=200
    DatabaseCharacterSet=AL32UTF8
     
    schema.sql:
    ----
    create sequence scott.s;
    create table scott.emp (id number not null primary key, name char (32));
     
    Events:  <none>
    

repl-tls ConfigMapの作成とデプロイが完了しました。

TimesTenClassicオブジェクトの作成

この項では、TimesTenClassicオブジェクトを作成します。TimesTenClassicオブジェクトの詳細は、TimesTenClassicオブジェクトの定義および作成およびTimesTenClassicオブジェクト・タイプを参照してください。

次のステップを実行します。

  1. 空のYAMLファイルを作成します。任意の名前を選択できますが、TimesTenClassicオブジェクトに使用した名前と同じ名前を使用することもできます。(この例では、repltls)。YAMLファイルには、TimesTenClassicオブジェクトの定義が格納されています。このYAMLファイルで指定する必要があるフィールド、およびオプションのフィールドの詳細は、TimesTenClassicSpecSpecを参照してください。

    この例では、TLSレプリケーションにとって特に重要なフィールドは次のとおりです。

    • dbSecret: この例では、replicationWalletメタデータ・ファイルに対してrepl-tlsという1つのKubernetes Secretを使用します。

    • replicationCipherSuite: このフィールドは、レプリケーション用のTLSに必須です。この例では、値はSSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256です。詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のレプリケーション用のTLSの構成に関する項およびこのマニュアルの表11-3「TimesTenClassicSpecSpec」replicationCipherSuiteエントリを参照してください。

    • replicationSSLMandatory: このフィールドはオプションです。この例では、replicationSSLMandatoryを1に設定します。詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のレプリケーション用のTLSの構成に関する項およびこのマニュアルの表11-3「TimesTenClassicSpecSpec」replicationSSLMandatoryエントリを参照してください。

    この例には次の項目も含まれます。

    • name: repltlsはTimesTenClassicオブジェクトの名前に置き換えます。

    • storageClassName: ociを、TimesTenを保持するためのPersistentVolumesの割当てに使用される記憶域クラスの名前に置き換えます。

    • storageSize: 250Gを、各ポッドがTimesTenを保持するために要求する必要がある記憶域の量に置き換えます。ノート: この例では、本番環境を想定していることから、storageSizeには250Gの値を使用しています。デモ用の場合は、50Gの値で対応できます。詳細は、表11-3「TimesTenClassicSpecSpec」storageSizeエントリとlogStorageSizeエントリを参照してください。

    • image: phx.ocir.io/youraccount/tt1814110:3は、イメージ・レジストリの場所(phx.ocir.io/youraccount)とTimesTenが含まれているイメージ(tt1814110:3)に置き換えます。

    • imagePullSecret: sekretを、KubernetesがTimesTenイメージをフェッチするために使用するイメージ・プル・シークレットに置き換えます。

    • dbConfigMap: この例では、db.iniadminUserおよびschema.sqlメタデータ・ファイルに対して1つのConfigMap (名前はrepl-tls)を使用します。

    % vi repltls.yaml
    
    apiVersion: timesten.oracle.com/v1
    kind: TimesTenClassic
    metadata:
      name: repltls
    spec:
      ttspec:
        storageClassName: oci
        storageSize: 250G
        image: phx.ocir.io/youraccount/tt1814110:3
        imagePullSecret: sekret
        imagePullPolicy: Always
        dbConfigMap:
        - repl-tls
        dbSecret:
        - repl-tls
        replicationCipherSuite: SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
        replicationSSLMandatory: 1
    
  2. kubectl createコマンドを使用して、YAMLファイル(この例ではrepltls.yaml)の内容からTimesTenClassicオブジェクトを作成します。これにより、KubernetesクラスタにあるTimesTenデータベースのアクティブ・スタンバイ・ペアをデプロイするプロセスが開始されます。

    % kubectl create -f repltls.yaml
    timestenclassic.timesten.oracle.com/repltls created
    

KubernetesクラスタにTimesTenClassicオブジェクトを正常に作成しました。TimesTenデータベースをデプロイするプロセスが開始されますが、まだ完了していません。

TimesTenClassicオブジェクトのデプロイメントの監視

kubectl getコマンドとkubectl describeコマンドを使用して、プロビジョニング時にアクティブ・スタンバイ・ペアの進捗状況を監視します。

  1. kubectl getコマンドを使用して、STATEフィールドを確認します。値がInitializingであることを確認します。アクティブ・スタンバイ・ペアのプロビジョニングが開始しましたが、まだ完了していません。

    % kubectl get ttc repltls
    NAME      STATE          ACTIVE   AGE
    repltls   Initializing   None     50s
    
  2. kubectl getコマンドを再度使用して、STATEフィールドの値が変更されているかどうかを確認します。この例では、この値はNormalで、データベースのアクティブ・スタンバイ・ペアがプロビジョニングされ、プロセスが完了したことを示しています。

    % kubectl get ttc repltls
    NAME      STATE    ACTIVE      AGE
    repltls   Normal   repltls-0   3m45s
    
  3. kubectl describeコマンドを使用して、アクティブ・スタンバイ・ペアのプロビジョニングを詳細に表示します。

    repltls TimesTenClassicオブジェクト定義では、次の項目が正しく設定されていることに注目してください。

    • repl-tls Secretは、dbSecretフィールドで正しく参照されています(太字で表示)。

    • repl-tls Configmapは、dbConfigMapフィールドで正しく参照されています(太字で表示)。

    • replicationCipherSuiteフィールドは、SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256に正しく設定されています(太字で表示)。

    • replicationSSLMandatoryフィールドは、1に正しく設定されています(太字で表示)。

    ノート: この例は出力の一部を示しています。

    % kubectl describe ttc repltls
    Name:         repltls
    Namespace:    mynamespace
    Labels:       <none>
    Annotations:  <none>
    API Version:  timesten.oracle.com/v1
    Kind:         TimesTenClassic
    Metadata:
      Creation Timestamp:  2020-10-16T18:51:43Z
      Generation:          1
      Resource Version:    75029797
      Self Link: 
    /apis/timesten.oracle.com/v1/namespaces/mynamespace/timestenclassics/repltls
      UID:                 a2915ef3-0fe0-11eb-8b9a-aaa0151611fe
    Spec:
      Ttspec:
        Db Config Map:
          repl-tls
        Db Secret:
          repl-tls
        Image:                      phx.ocir.io/youraccount/tt1814110:3
        Image Pull Policy:          Always
        Image Pull Secret:          sekret
        Replication Cipher Suite:   SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
        Replication SSL Mandatory:  1
        Storage Class Name:         oci
        Storage Size:               250G
    ...
    Events:
      Type  Reason       Age    From       Message
      ----  ------       ----   ----       -------
      -     Create       4m17s  ttclassic  Secret 
     tta2915ef3-0fe0-11eb-8b9a-aaa0151611fe created
      -     Create       4m17s  ttclassic  Service repltls created
      -     Create       4m17s  ttclassic  StatefulSet repltls created
      -     StateChange  3m10s  ttclassic  Pod repltls-1 Agent Up
      -     StateChange  3m10s  ttclassic  Pod repltls-1 Release 18.1.4.11.0
      -     StateChange  3m10s  ttclassic  Pod repltls-1 Daemon Up
      -     StateChange  2m3s   ttclassic  Pod repltls-0 Agent Up
      -     StateChange  2m3s   ttclassic  Pod repltls-0 Release 18.1.4.11.0
      -     StateChange  2m1s   ttclassic  Pod repltls-0 Daemon Up
      -     StateChange  68s    ttclassic  Pod repltls-0 Database Loaded
      -     StateChange  68s    ttclassic  Pod repltls-0 Database Updatable
      -     StateChange  68s    ttclassic  Pod repltls-0 CacheAgent Not Running
      -     StateChange  68s    ttclassic  Pod repltls-0 RepAgent Not Running
      -     StateChange  67s    ttclassic  Pod repltls-0 RepState IDLE
      -     StateChange  67s    ttclassic  Pod repltls-0 RepScheme None
      -     StateChange  66s    ttclassic  Pod repltls-0 RepAgent Running
      -     StateChange  66s    ttclassic  Pod repltls-0 RepScheme Exists
      -     StateChange  66s    ttclassic  Pod repltls-0 RepState ACTIVE
      -     StateChange  47s    ttclassic  Pod repltls-1 Database Loaded
      -     StateChange  47s    ttclassic  Pod repltls-1 Database Not Updatable
      -     StateChange  47s    ttclassic  Pod repltls-1 CacheAgent Not Running
      -     StateChange  47s    ttclassic  Pod repltls-1 RepAgent Not Running
      -     StateChange  47s    ttclassic  Pod repltls-1 RepScheme Exists
      -     StateChange  47s    ttclassic  Pod repltls-1 RepState IDLE
      -     StateChange  41s    ttclassic  Pod repltls-1 RepAgent Running
      -     StateChange  36s    ttclassic  Pod repltls-1 RepState STANDBY
      -     StateChange  36s    ttclassic  TimesTenClassic was Initializing, 
    now Normal
    

TimesTenデータベースのアクティブ・スタンバイ・ペアが(Normalで示されているように)正常にデプロイされました。レプリケーションにTLSが使用されていることを確認する準備が整いました。

レプリケーションにTLSが使用されていることの確認

レプリケーションにTLSが使用されていることを確認するには、次のステップを実行します。

  1. アクティブ・ポッド(この例ではrepltls-0)とスタンバイ・ポッド(この例ではrepltls-1)を確認します。

    % kubectl get pods
    NAME                                       READY   STATUS    RESTARTS   AGE
    repltls-0                                  2/2     Running   0          6m35s
    repltls-1                                  2/2     Running   0          6m34s
    timestenclassic-operator-f84766548-tch7s   1/1     Running   0          28d
    
  2. オプション: kubectl exec -itコマンドを使用して、アクティブ・ポッド(この例ではrepltls-0)のシェルを呼び出します。

    % kubectl exec -it repltls-0 -c tt -- /usr/bin/su - oracle
    
  3. オプション: アクティブ・ポッドのシェルから、cwallet.ssoファイルが/tt/home/oracle/replicationWalletディレクトリにあることを確認します。

    % ls /tt/home/oracle/replicationWallet
    cwallet.sso
     
    
  4. オプション: アクティブ・ポッドのシェルから、TLSレプリケーション固有の値がtimesten.conf構成ファイルで正しく指定されていることを確認します。(このファイルは、/tt/home/oracle/instances/instance1/confディレクトリにあります)。

    特に、次の点に注目してください。

    • replication_walletは、/tt/home/oracle/replicationWalletに正しく設定されています(太字で表示)。

    • replication_cipher_suiteは、SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256に正しく設定されています(太字で表示)。

    • replication_ssl_mandatoryは、1に正しく設定されています(太字で表示)。

    こうしたtimesten.confの属性の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のレプリケーション用のTLSの構成に関する項を参照してください。

    % cat /tt/home/oracle/instances/instance1/conf/timesten.conf
    admin_uid=333
    admin_user=oracle
    daemon_port=6624
    group_name=oracle
    hostname=repltls-0
    instance_guid=48AC5964-56A1-4C66-AB89-5646A2431EA3
    instance_name=instance1
    replication_cipher_suite=SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    replication_ssl_mandatory=1
    replication_wallet=/tt/home/oracle/replicationWallet
    server_port=6625
    show_date=1
    timesten_release=18.1.4
    tns_admin=/ttconfig
    verbose=1
    
  5. アクティブ・ポッドのシェルから、-showstatus -detailオプションを指定してttRepAdminユーティリティを実行し、レプリケーション・エージェントの送信側と受信側がTLSを使用していることを確認します(太字のSSLで示されています)。このユーティリティの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttRepAdminに関する項を参照してください。

    ノート: この例は、出力の一部を示しています。

    % ttRepAdmin -showstatus -detail repltls
     
    Replication Agent Status as of: 2020-10-16 19:01:55
     
    DSN                         : repltls
    ...
    TRANSMITTER thread(s) (TRANSMITTER(M):139870727366400):
     For                     : REPLTLS (track 0) (SSL)
       Start/Restart count   : 1
       Current state         : STATE_META_PEER_INFO
     
    RECEIVER thread(s) (RECEIVER:139870719887104):
     For                     : REPLTLS (track 0) (SSL)
       Start/Restart count   : 1
       Current state         : STATE_RCVR_READ_NETWORK_LOOP
    ...
    

レプリケーション用のTLSが使用されていることの検証が完了しました。

Client/Server用のTLSの構成

Client/Server用のTLSを構成すると、TimesTenのクライアントとサーバーの間でセキュアなネットワーク通信を確保できます。詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTimesTen Client/Server用のTransport Layer Securityに関する項を参照してください。

Client/Server用のTLSを使用する場合は、サーバー側とクライアント側の両方に構成要件があります。次の各項では、それらの要件について説明します。

サーバーの構成

次の各セクションでは、サーバーの構成要件について説明します。各項では、Kubernetesクラスタ内のサーバー用のTLSを構成する方法の例も示します。

メタデータ・ファイルとKubernetes機能の概要

Client/ServerのTLSサポートには、/ttconfig/csWalletメタデータ・ファイルが必要です。(/ttconfigディレクトリは、TimesTenデータベースのコンテナ内にあります)。このファイルには、TLS証明書の作成時に生成されたcwallet.ssoファイル(Oracleウォレット)が含まれている必要があります。このファイルは、サーバーに必要なOracleウォレットです。このファイルは、/scratch/ttuser/instance_dir/instance1/conf/serverWalletディレクトリに配置したものです。該当する証明書の作成方法は、「レプリケーションおよびClient/Server用のTLS証明書の作成」を参照してください。このウォレットには、TimesTenデータベースとClient/Serverアプリケーションの間のTLS暗号化を構成するために使用される資格証明を格納します。

さらに、サーバー側の接続属性も設定する必要があります。こうした属性は、db.iniメタデータ・ファイルで定義できます。TimesTenコンテナの/ttconfigディレクトリにdb.iniファイルを配置した後で、オペレータはdb.iniファイルの内容をTimesTenコンテナに配置されたtimesten_home/conf/sys.odbc.iniファイルにコピーします。(timesten_homeは、TimesTenインスタンス・ディレクトリです。このインスタンス・ディレクトリは、TimesTenコンテナ内の/tt/home/oracle/instances/instance1です)。

必須のサーバー側属性は、WalletCipherSuitesおよびEncryptionです。これらの属性の詳細は、「サーバー側属性用のConfigMapの作成」を参照してください。『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のサーバーの構成に関する項も参照してください。

csWalletdb.iniメタデータ・ファイルに加えて、その他のサポートされているメタデータ・ファイルを使用することもできます。サポートされるメタデータ・ファイルの詳細は、「サポートされるメタデータ・ファイル」を参照してください。

これらのメタデータ・ファイルは、Kubernetesの1つ以上の機能(たとえば、Kubernetes Secret、ConfigMapまたは初期化コンテナ)に含めることができます。これにより、メタデータ・ファイルがTimesTenコンテナの/ttconfigディレクトリに確実に移入されます。この/ttconfigディレクトリにメタデータ・ファイルを配置する方法についての要件はありません。詳細は、「/ttconfigディレクトリの移入」を参照してください。

次の例では、Kubernetes SecretにcsWalletメタデータ・ファイルを含めます。また、db.iniadminUserおよびschema.sqlメタデータ・ファイルを作成して、それらのメタデータ・ファイルをConfigMapに含めます。

csWalletメタデータ・ファイル用のKubernetes Secretの作成

この項では、cs-tls Kubernetes Secretを作成します。cs-tls Secretには、csWalletメタデータ・ファイルを格納します。

Linux開発ホストで、次のことを実行します。

  1. 任意のディレクトリから、空のサブディレクトリを作成します。この例では、serverWalletサブディレクトリを作成します。(今後、この例では、このディレクトリを表す場合にserverWalletディレクトリを使用します)。

    % mkdir -p serverWallet
    
  2. 前の手順で作成したserverWalletディレクトリに、cwallet.ssoファイルをコピーします。cwallet.ssoファイルは、ttCreateCertsユーティリティを使用してTLS証明書を作成したときに生成されたものです。また、このファイルは、/scratch/ttuser/instance_dir/instance1/conf/serverWalletディレクトリに配置しました。詳細は、「レプリケーションおよびClient/Server用のTLS証明書の作成」を参照してください。

    % cp /scratch/ttuser/instance_dir/instance1/conf/serverWallet/cwallet.sso 
    serverWallet/cwallet.sso
    
  3. Kubernetes Secretの作成

    この例では次のとおりです。

    • Secretの名前はcs-tlsです。cs-tlsは適宜の名前に置き換えます(cs-tls太字で表示しています)。

    • Client/Server用のTLSに必要なメタデータ・ファイルの名前は、csWallet (太字で表示)です。

    • ウォレット・ディレクトリの場所は、serverWalletです(この例では、太字で表示しています)。別のディレクトリを使用する場合、serverWalletは使用するディレクトリの名前に置き換えます。

    • Oracleウォレットの名前: cwallet.sso (太字で表示)。

    kubectl createコマンドを使用してシークレットを作成します。

    % kubectl create secret generic cs-tls 
    --from-file=csWallet=serverWallet/cwallet.sso
    secret/cs-tls created
    

cs-tls Kubernetes Secretの作成とデプロイが完了しました。この後、csWallet/cwallet.ssoファイルは、TimesTenコンテナの/ttconfigディレクトリから使用できるようにします。また、ファイルはTimesTenコンテナの/tt/home/oracle/csWalletディレクトリから使用できるようにします。

サーバー側属性用のConfigMapの作成

この項では、cs-tls ConfigMapを作成します。このConfigMapには、db.iniadminUserおよびschema.sqlメタデータ・ファイルが含まれます。

Linux開発ホストで、次のことを実行します。

  1. 選択したディレクトリから、メタデータ・ファイル用に空のサブディレクトリを作成します。この例では、cm_csTLSサブディレクトリを作成します。(今後、この例では、このディレクトリを表す場合にcm_csTLSディレクトリを使用します)。

    % mkdir -p cm_csTLS
    
  2. ConfigMapディレクトリに移動します。

    % cd cm_csTLS
    
  3. このConfigMapディレクトリ(この例ではcm_csTLS)にdb.iniファイルを作成します。このdb.iniファイルでは、Client/Server用のTLSのサーバー側属性を定義します。そうしたサーバー側属性は、TimesTenコンテナのtimesten_home/confディレクトリにあるsys.odbc.iniファイルに含めることになります。(timesten_homeは、TimesTenインスタンス・ディレクトリです。このインスタンス・ディレクトリは、TimesTenコンテナ内のtt/home/oracle/instances/instance1です)。

    Client/Server用のTLSに必要なサーバー側属性は次のとおりです。

    • wallet:サーバー・ウォレットを格納するTimesTenコンテナ内のディレクトリです。/tt/home/oracle/csWalletを指定します。

    • ciphersuites: 暗号スイートの設定です。有効な値は、SSL_ECDHE_ECDSA_WITH_AES_128_GCM_256またはSSL_ECDHE_ECDSA_WITH_AES_256_GCM_384です。または、その両方をカンマで区切って優先する順に並べます。デフォルト設定はありません。TLSを使用する場合は、サーバーとクライアントの設定に1つ以上の共通スイートが含まれている必要があります。この例では、SSL_ECDHE_ECDSA_WITH_AES_128_GCM_256を指定します。暗号スイートの設定の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のサーバーの構成に関する項を参照してください。

    • encryption: サーバーの暗号化設定です。この例では、requiredの設定を指定します。有効な暗号化設定の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のサーバーの構成に関する項を参照してください。

    この例では、PermSizeDatabaseCharacterSetの接続属性も指定します。

    vi db.ini
    
    PermSize=200
    DatabaseCharacterSet=AL32UTF8
    wallet=/tt/home/oracle/csWallet
    ciphersuites=SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    encryption=required
    
  4. このConfigMapディレクトリ(この例ではcm_csTLS)にadminUserファイルを作成します。このadminUserファイルで、tigerパスワードを使用してscottユーザーを作成します。

    vi adminUser
    
    scott/tiger
    
  5. このConfigMapディレクトリ(この例ではcm_csTLS)にschema.sqlファイルを作成します。このschema.sqlファイルで、scottユーザーのs順序とemp表を定義します。オペレータはこれらのオブジェクト定義でデータベースを自動的に初期化します。

    vi schema.sql
    
    create sequence scott.s;
    create table scott.emp (
      id number not null primary key,
      name char(32)
    );
    
  6. ConfigMapを作成します。cm_csTLSディレクトリ内のファイルは、ConfigMapに含めておくことで、TimesTenコンテナで使用できるようにします。

    この例では次のとおりです。

    • ConfigMapの名前はcs-tlsです。cs-tlsは適宜の名前に置き換えます(この例では、cs-tls太字で表示しています)。

    • この例では、ConfigMapにコピーするファイルが存在しているディレクトリとしてcm_csTLSを使用しています。別のディレクトリを使用する場合、cm_csTLSは目的のディレクトリの名前に置き換えます(この例では、cm_csTLS太字で表示しています)。

    kubectl createコマンドを使用して、ConfigMapを作成します。

    % kubectl create configmap cs-tls --from-file=cm_csTLS
    configmap/cs-tls created
    
  7. kubectl describeコマンドを使用して、ConfigMap (この例ではcs-tls)の内容を確認します。

    % kubectl describe configmap cs-tls
    Name:         cs-tls
    Namespace:    mynamespace
    Labels:       <none>
    Annotations:  <none>
     
    Data
    ====
    db.ini:
    ----
    PermSize=200
    DatabaseCharacterSet=AL32UTF8
    wallet=/tt/home/oracle/csWallet
    ciphersuites=SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    encryption=required
     
     
    schema.sql:
    ----
    create sequence scott.s;
    create table scott.emp (id number not null primary key, name char (32));
     
    adminUser:
    ----
    scott/tiger
     
    Events:  <none>
    

cs-tls ConfigMapの作成とデプロイが完了しました。

TimesTenClassicオブジェクトの作成

この項では、TimesTenClassicオブジェクトを作成します。TimesTenClassicオブジェクトの詳細は、TimesTenClassicオブジェクトの定義および作成およびTimesTenClassicオブジェクト・タイプを参照してください。

次のステップを実行します。

  1. 空のYAMLファイルを作成します。任意の名前を選択できますが、TimesTenClassicオブジェクトに使用した名前と同じ名前を使用することもできます。(この例では、cstls)。YAMLファイルには、TimesTenClassicオブジェクトの定義が格納されています。このYAMLファイルで指定する必要があるフィールド、およびオプションのフィールドの詳細は、TimesTenClassicSpecSpecを参照してください。

    この例では、TLS Client/Serverにとって特に重要なフィールドは次のとおりです。

    • dbSecret: この例では、csWalletメタデータ・ファイルに対してcs-tlsという1つのKubernetes Secretを使用します。

    • dbConfigMap: この例では、cs-tlsという1つのConfigMapを使用します。db.iniファイルは、cs-tls ConfigMapに含まれます。前に説明したように、db.iniファイルには、Client/Server用のTLSのサーバー側属性が含まれています。

    この例には次の項目も含まれます。

    • name: cstlsはTimesTenClassicオブジェクトの名前に置き換えます。

    • storageClassName: ociを、TimesTenを保持するためのPersistentVolumesの割当てに使用される記憶域クラスの名前に置き換えます。

    • storageSize: 250Gを、各ポッドがTimesTenを保持するために要求する必要がある記憶域の量に置き換えます。ノート: この例では、本番環境を想定していることから、storageSizeには250Gの値を使用しています。デモ用の場合は、50Gの値で対応できます。詳細は、表11-3「TimesTenClassicSpecSpec」storageSizeエントリとlogStorageSizeエントリを参照してください。

    • image: phx.ocir.io/youraccount/tt1814110:3は、イメージ・レジストリの場所(phx.ocir.io/youraccount)とTimesTenが含まれているイメージ(tt1814110:3)に置き換えます。

    • imagePullSecret: sekretを、KubernetesがTimesTenイメージをフェッチするために使用するイメージ・プル・シークレットに置き換えます。

    % vi cstls.yaml
    
    apiVersion: timesten.oracle.com/v1
    kind: TimesTenClassic
    metadata:
      name: cstls
    spec:
      ttspec:
        storageClassName: oci
        storageSize: 250G
        image: phx.ocir.io/youraccount/tt1814110:3
        imagePullSecret: sekret
        imagePullPolicy: Always
        dbConfigMap:
        - cs-tls
        dbSecret:
        - cs-tls
    
  2. kubectl createコマンドを使用して、YAMLファイル(この例ではcstls.yaml)の内容からTimesTenClassicオブジェクトを作成します。これにより、KubernetesクラスタにあるTimesTenデータベースのアクティブ・スタンバイ・ペアをデプロイするプロセスが開始されます。

    % kubectl create -f cstls.yaml
    timestenclassic.timesten.oracle.com/cstls created
    

KubernetesクラスタにTimesTenClassicオブジェクトを正常に作成しました。TimesTenデータベースをデプロイするプロセスが開始されますが、まだ完了していません。

TimesTenClassicオブジェクトのデプロイメントの監視

kubectl getコマンドとkubectl describeコマンドを使用して、プロビジョニング時にアクティブ・スタンバイ・ペアの進捗状況を監視します。

  1. kubectl getコマンドを使用して、STATEフィールドを確認します。値がInitializingであることを確認します。アクティブ・スタンバイ・ペアのプロビジョニングが開始しましたが、まだ完了していません。

    % kubectl get ttc cstls
    NAME    STATE          ACTIVE   AGE
    cstls   Initializing   None     15s
    
  2. kubectl getコマンドを再度使用して、STATEフィールドの値が変更されているかどうかを確認します。この例では、この値はNormalで、データベースのアクティブ・スタンバイ・ペアがプロビジョニングされ、プロセスが完了したことを示しています。

    % kubectl get ttc cstls
    NAME    STATE    ACTIVE    AGE
    cstls   Normal   cstls-0   3m30s
    
  3. kubectl describeコマンドを使用して、アクティブ・スタンバイ・ペアのプロビジョニングを詳細に表示します。

    cstls TimesTenClassicオブジェクト定義では、次の項目が正しく設定されていることに注目してください。

    • cs-tls Secretは、dbSecretフィールドで正しく参照されています(太字で表示)。

    • cs-tls Configmapは、dbConfigMapフィールドで正しく参照されています(太字で表示)。

    ノート: この例には出力の一部を示しています。

    % kubectl describe ttc cstls
    Name:         cstls
    Namespace:    mynamespace
    Labels:       <none>
    Annotations:  <none>
    API Version:  timesten.oracle.com/v1
    Kind:         TimesTenClassic
    Metadata:
      Creation Timestamp:  2020-10-17T19:08:03Z
      Generation:          1
      Resource Version:    75491472
      Self Link: 
    /apis/timesten.oracle.com/v1/namespaces/mynamespace/timestenclassics/cstls
      UID:                 150128b3-10ac-11eb-b019-d681454a288b
    Spec:
      Ttspec:
        Db Config Map:
          cs-tls
        Db Secret:
          cs-tls
        Image:               phx.ocir.io/youraccount/tt1814110:3
        Image Pull Policy:   Always
        Image Pull Secret:   sekret
        Storage Class Name:  oci
        Storage Size:        250G
    ...
    Events:
      Type  Reason       Age    From       Message
      ----  ------       ----   ----       -------
      -     Create       4m21s  ttclassic  Service cstls created
      -     Create       4m21s  ttclassic  StatefulSet cstls created
      -     Create       4m21s  ttclassic  Secret 
    tt150128b3-10ac-11eb-b019-d681454a288b created
      -     StateChange  3m5s   ttclassic  Pod cstls-1 Daemon Up
      -     StateChange  3m5s   ttclassic  Pod cstls-0 Agent Up
      -     StateChange  3m5s   ttclassic  Pod cstls-0 Release 18.1.4.11.0
      -     StateChange  3m5s   ttclassic  Pod cstls-1 Agent Up
      -     StateChange  3m5s   ttclassic  Pod cstls-1 Release 18.1.4.11.0
      -     StateChange  3m5s   ttclassic  Pod cstls-0 Daemon Up
      -     StateChange  116s   ttclassic  Pod cstls-0 Database Loaded
      -     StateChange  116s   ttclassic  Pod cstls-0 Database Updatable
      -     StateChange  116s   ttclassic  Pod cstls-0 CacheAgent Not Running
      -     StateChange  116s   ttclassic  Pod cstls-0 RepAgent Not Running
      -     StateChange  116s   ttclassic  Pod cstls-0 RepState IDLE
      -     StateChange  116s   ttclassic  Pod cstls-0 RepScheme None
      -     StateChange  115s   ttclassic  Pod cstls-0 RepAgent Running
      -     StateChange  115s   ttclassic  Pod cstls-0 RepScheme Exists
      -     StateChange  115s   ttclassic  Pod cstls-0 RepState ACTIVE
      -     StateChange  96s    ttclassic  Pod cstls-1 Database Loaded
      -     StateChange  96s    ttclassic  Pod cstls-1 Database Not Updatable
      -     StateChange  96s    ttclassic  Pod cstls-1 CacheAgent Not Running
      -     StateChange  96s    ttclassic  Pod cstls-1 RepAgent Not Running
      -     StateChange  96s    ttclassic  Pod cstls-1 RepScheme Exists
      -     StateChange  96s    ttclassic  Pod cstls-1 RepState IDLE
      -     StateChange  90s    ttclassic  Pod cstls-1 RepAgent Running
      -     StateChange  84s    ttclassic  Pod cstls-1 RepState STANDBY
      -     StateChange  84s    ttclassic  TimesTenClassic was Initializing, now 
    Normal
    

TimesTenデータベースのアクティブ・スタンバイ・ペアが(Normalで示されているように)正常にデプロイされました。

クライアントの構成

次の各セクションでは、TLSのクライアント要件について説明します。

クライアント・ウォレットのコピー

ttCreateCertsユーティリティを使用してTLS証明書を作成したときに、/scratch/ttuser/instance_dir/instance1/conf/ clientWalletディレクトリ内にcwallet.ssoウォレット・ファイルが生成されました。このファイルは、TimesTenクライアントのインスタンスを実行しているアプリケーション・コンテナにコピーする必要があります。TLS証明書の作成方法は、「レプリケーションおよびClient/Server用のTLS証明書の作成」を参照してください。

この例では、kubectl cpコマンドを使用して、Linux開発ホストからTimesTenクライアントのインスタンスを実行しているアプリケーション・コンテナに/scratch/ttuser/instance_dir/instance1/conf/clientWallet/cwallet.ssoファイルをコピーします。

  1. kubectl exec -itコマンドを使用して、TimesTenクライアントのインスタンスが含まれているアプリケーション・コンテナ(この例ではcstls-0)のシェルを起動します。

    % kubectl exec -it cstls-0 -c tt -- /usr/bin/su - oracle
    
  2. 起動したシェルを使用して任意のディレクトリから、空のサブディレクトリを作成します。この例では、clientWalletサブディレクトリを作成します。

    % mkdir -p clientWallet
    
  3. Linux開発ホストからkubectl cpコマンドを使用して、Linux開発ホストの/scratch/ttuser/instance_dir/instance1/conf/clientWalletディレクトリにあるcwallet.ssoファイルを前の手順で作成したclientWalletディレクトリにコピーします。(このディレクトリは、TimesTenクライアント・インスタンスを実行しているアプリケーション・コンテナ内にあります)。cwallet.ssoファイルは、ttCreateCertsユーティリティを使用してTLS証明書を作成したときに生成されたものです。詳細は、「レプリケーションおよびClient/Server用のTLS証明書の作成」を参照してください。

    % kubectl cp /scratch/ttuser/instance_dir/instance1/conf/clientWallet/
    cwallet.sso cstls-0:clientWallet/cwallet.sso -c tt
    
  4. シェルから、cwallet.ssoファイルがclientWalletディレクトリに配置されていることを確認します。

    % ls clientWallet
    cwallet.sso
     
    

TimesTenクライアントのインスタンスを実行しているアプリケーション・コンテナにcwallet.ssoクライアント・ウォレット・ファイルが正常にコピーされました。

クライアント側属性の構成

Client/Server用のTLSのクライアント側属性を設定する必要があります。属性は、timesten_home/conf/sys.odbc.iniのクライアントDSN定義で設定することも、適切なClient/Server接続文字列で設定することもできます。詳細は、「Client/Serverドライバの使用」を参照してください。

Client/Server用のTLSに必要なクライアント側属性は次のとおりです。

  • wallet: cwallet.ssoクライアント・ウォレット・ファイルを格納するディレクトリです。このディレクトリは、TimesTenクライアントのインスタンスを実行しているアプリケーション・コンテナ内にあります。デフォルトのディレクトリはありません。この例では、このディレクトリを示すためにclientWalletディレクトリを作成しました。(詳細は、「クライアント・ウォレットのコピー」を参照)。この例の場合、clientWalletディレクトリへのフルパスは/tt/home/oracle/clientWalletです。そのため、この例では、このディレクトリを示すために/tt/home/oracle/clientWalletを使用しています。

  • ciphersuites: 暗号スイートの設定です。有効な値は、SSL_ECDHE_ECDSA_WITH_AES_128_GCM_256またはSSL_ECDHE_ECDSA_WITH_AES_256_GCM_384です。または、その両方をカンマで区切って優先する順に並べます。デフォルト設定はありません。TLSを使用する場合は、サーバーとクライアントの設定に1つ以上の共通スイートが含まれている必要があります。この例では、SSL_ECDHE_ECDSA_WITH_AES_128_GCM_256を指定します。暗号スイートの設定の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のサーバーの構成に関する項を参照してください。

  • encryption: クライアントの暗号化設定です。この例では、requiredの設定を指定します。有効な暗号化設定の詳細は、『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のサーバーの構成に関する項を参照してください。

この例では、接続文字列を使用して、cstslデータベースにscottユーザーとして接続します。scottユーザーはオペレータが作成したもので、すでにcstslデータベースに存在しています。次に、クライアントでttIsqlCSからsqlgetconnectattrコマンドを使用して、TLSがサーバーとクライアントで正しく構成されていて、TLSが使用されていることを確認します。

  1. データベースに接続します。

    % ttIsqlcs -connstr "TTC_SERVER1=cstls-0.cstls.mynamespace.svc.cluster.local;
    TTC_SERVER2=cstls-1.cstls.mynamespace.svc.cluster.local;
    TTC_SERVER_DSN=cstls;UID=scott;PWD=tiger;
    WALLET=tt/home/oracle/clientWallet;
    CIPHERSUITES=SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256;
    ENCRYPTION=required";
     
    Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved.
    Type ? or "help" for help, type "exit" to quit ttIsql.
     
     
     
    connect "TTC_SERVER1=cstls-0.cstls.mynamespace.svc.cluster.local;
    TTC_SERVER2=cstls-1.cstls.mynamespace.svc.cluster.local;
    TTC_SERVER_DSN=cstls;UID=scott;PWD=********;
    WALLET=tt/home/oracle/clientWallet;
    CipherSuites=SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256;
    ENCRYPTION=REQUIRED;";
    Connection successful: 
    DSN=;TTC_SERVER=cstls-0.cstls.mynamespace.svc.cluster.local;
    TTC_SERVER_DSN=cstls;UID=scott;
    DATASTORE=/tt/home/oracle/datastore/cstls;DATABASECHARACTERSET=AL32UTF8;
    CONNECTIONCHARACTERSET=US7ASCII;AUTOCREATE=0;PERMSIZE=200;
    DDLREPLICATIONLEVEL=3;FORCEDISCONNECTENABLED=1;(SERVER)ENCRYPTION=Required;
    (SERVER)WALLET=file:/tt/home/oracle/csWallet;(client)Encryption=Required;
    (client)Wallet=/tt/home/oracle/clientWallet;
    (client)CipherSuites=SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256;
    (Default setting AutoCommit=1)
    
  2. ttIsqlCSsqlgetconnectattrコマンドを使用して、TLSが使用されていることを確認します。戻り値の1は、TLSが使用されていることを示します。

    Command> sqlgetconnectattr tt_tls_session;
    TT_TLS_SESSION = 1 (SQL_TRUE)
    

データベースに正常に接続したことと、Client/Server用のTLSが使用されていることの確認が完了しました。