この章では、TimesTen Kubernetesオペレータのセキュリティ機能および要件について説明します。内容は次のとおりです。
Kubernetesは、コンテナ化されたワークロードおよびサービスを管理するためのオープンソース・プラットフォームです。Kubernetesは、クラスタ内の複数のホストのリソースを管理し、これらのホストで必要に応じてコンテナを実行します。
TimesTenには、TimesTenClassic
タイプのKubernetesオブジェクトを管理するKubernetesオペレータがあります。TimesTenは、管理者の操作が不要な自動化された方法でデプロイ、監視、管理および制御ができるようになります。
TimesTen Kubernetesオペレータの詳細は、Oracle TimesTen In-Memory Database Kubernetesオペレータ・ユーザーズ・ガイドを参照してください。
TimesTenオペレータは、ユーザーのかわりにTimesTenを実行するポッドとコンテナを作成して管理します。そうしたコンテナ内のTimesTenは、TimesTenエージェントによって監視および制御されます。
オペレータには、Kubernetesクラスタの権限が必要です。service_account.yaml
ファイルは、TimesTenオペレータに含まれるファイルです。service_account.yaml
ファイルを実行すると、特定の権限セットを持つKubernetesロールが定義されます。オペレータは、このロールに付与された権限で実行されます。service_account.yaml
ファイルの詳細は、Oracle TimesTen In-Memory Database Kubernetesオペレータ・ユーザーズ・ガイドのKubernetesの構成を参照してください。
TimesTenオペレータには、その他のオブジェクトをKubernetesクラスタ内で作成および監視するための適切な権限が付与されている必要があります。service_account.yaml
ファイルには、デフォルトの権限が含まれています。
KubernetesクラスタのTimesTenClassic
オブジェクトを作成、変更および削除できるKubernetesユーザーのセットは、クラスタのロール・ベース・アクセス制御(RBAC)構成に制御されます。
セキュア・インストールを実現するために、シークレット・オブジェクトを取得するためのKubernetes RBAC権限を持つユーザーのセットを制限する必要があります。(シークレットについては、次の項の「TimesTen Kubernetesオペレータの暗号化」を参照してください)。
TimesTenエージェントは、TimesTenインスタンスを作成し、oracle
ユーザーとして実行し、TimesTenを起動します。oracle
ユーザーは、TimesTenインスタンスのインスタンス管理者です。オペレータは、TimesTenを実行しているコンテナ内の一連のオープン・ポートを、TimesTenが使用するポートに制限します。
次のようにして、TimesTenオペレータのみがTimesTenエージェントと通信できるようにします。
TimesTenオペレータとTimesTenエージェントの間の通信は、オペレータで作成した自己署名付き証明書を使用したTLSによってセキュリティ保護します。こうした証明書は、Oracleウォレット内にあり、オペレータが作成したKubernetesシークレットによってエージェントに転送されます。TimesTenオペレータは、顧客が指定したKubernetesネームスペースで実行されます。そうしたシークレットは、そのネームスペースで作成されます。
TimesTenエージェント(およびTimesTen自体)を実行するコンテナは、シークレットにアクセスできるため、そのシークレットに含まれる証明書にアクセスできます。これにより、オペレータとエージェントのみが該当する証明書にアクセスできることが保証され、別のユーザーがエージェントを使用してTimesTenを制御することを防止します。
オブジェクトの作成時に、オペレータはTimesTenClassic
オブジェクトごとに異なる自己署名証明書を作成します。こうした証明書は、標準のJava keytool
コマンドによって作成され、pkcs12
キーストアに格納されます。
オペレータは、各キーストアを異なるKubernetes Secretに格納します。オペレータがKubernetesに対して(TimesTenエージェントを実行する)Podおよびコンテナを作成するように指示すると、SecretのコンテンツはTimesTenエージェントのファイル・システムにファイルとしてマウントされます。これにより、オペレータとTimesTenエージェント間で証明書がセキュアに通信されるようになります。
TimesTenエージェントは、HTTPS接続のみを受け入れ、その接続の認証に自己署名証明書を使用するように構成されています。エージェントは、ポート8443
でリスニングし、その他の通信形式を受け入れないように構成されています。