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/timesten/instances/instance1です。)
必須のサーバー側属性は、Wallet、CipherSuitesおよびEncryptionです。これらの属性の詳細は、「サーバー側属性用のConfigMapの作成」を参照してください。『Oracle TimesTen In-Memory Databaseセキュリティ・ガイド』のTLSのサーバー属性も参照してください。
csWalletとdb.iniメタデータ・ファイルに加えて、その他のサポートされているメタデータ・ファイルを使用することもできます。サポートされているメタデータ・ファイルの詳細は、「構成メタデータの詳細について」を参照してください。
これらのメタデータ・ファイルは、Kubernetesの1つ以上の機能(たとえば、Kubernetes Secret、ConfigMapまたは初期化コンテナ)に含めることができます。これにより、メタデータ・ファイルがTimesTenコンテナの/ttconfigディレクトリに確実に移入されます。この/ttconfigディレクトリにメタデータ・ファイルを配置する方法についての要件はありません。「/ttconfigディレクトリの移入」を参照してください。
次の例では、Kubernetes SecretにcsWalletメタデータ・ファイルを含めます。また、db.ini、adminUserおよびschema.sqlメタデータ・ファイルを作成して、それらのメタデータ・ファイルをConfigMapに含めます。
csWalletメタデータ・ファイル用のKubernetes Secretの作成
この項では、cs-tls Kubernetes Secretを作成します。cs-tls Secretには、csWalletメタデータ・ファイルを格納します。
Linux開発ホストで、次のことを実行します。
cs-tls Kubernetes Secretの作成とデプロイが完了しました。この後、csWallet/cwallet.ssoファイルは、TimesTenコンテナの/ttconfigディレクトリから使用できるようにします。また、ファイルはTimesTenコンテナの/tt/home/timesten/csWalletディレクトリから使用できるようにします。
サーバー側属性用のConfigMapの作成
この項では、cs-tls ConfigMapを作成します。このConfigMapには、db.ini、adminUserおよび schema.sqlメタデータ・ファイルが含まれます。
Linux開発ホストで、次のことを実行します。
cs-tls ConfigMapの作成とデプロイが完了しました。
TimesTenClassicオブジェクトの作成
この項では、TimesTenClassicオブジェクトを作成します。TimesTenClassicオブジェクトの詳細は、「TimesTenClassicオブジェクトの定義および作成」および「TimesTenClassicオブジェクト・タイプについて」を参照してください。
次のステップを実行します。
KubernetesクラスタにTimesTenClassicオブジェクトを正常に作成しました。TimesTenデータベースをデプロイするプロセスが開始されますが、まだ完了していません。
クライアントの構成要件
次の各セクションでは、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ファイルをコピーします。
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/timesten/clientWalletです。そのため、この例では、このディレクトリを示すために/tt/home/timesten/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セキュリティ・ガイドのClient/Server用のTLSの構成を参照してください。 -
encryption: クライアントの暗号化設定です。この例では、requiredの設定を指定します。有効な暗号化設定の詳細は、Oracle TimesTen In-Memory Databaseセキュリティ・ガイドのClient/Server用のTLSの構成を参照してください。
この例では、接続文字列を使用して、cstslデータベースにsampleuserユーザーとして接続します。sampleuserユーザーはオペレータが作成したもので、すでにcstslデータベースに存在しています。次に、クライアントでttIsqlCSからsqlgetconnectattrコマンドを使用して、TLSがサーバーとクライアントで正しく構成されていて、TLSが使用されていることを確認します。
データベースに正常に接続したことと、Client/Server用のTLSが使用されていることの確認が完了しました。