13.5. クロスサイト接続のセキュリティー保護

キーストアとトラストストアを追加して、Data Grid クラスターがクロスサイトレプリケーショントラフィックを保護できるようにします。

クロスサイトレプリケーションの公開タイプとして OpenShift Route を使用するには、キーストアを追加する必要があります。公開タイプとして NodePort または LoadBalancer を使用する場合、クロスサイト接続の保護はオプションです。

前提条件

  • Data Grid が使用して RELAY メッセージの暗号化と復号化ができる PKCS12 キーストアを用意する。

    クロスサイト接続のセキュリティーを保護するには、Pod およびルーター Pod をリレーするためのキーストアを提供する必要があります。
    リレー Pod とルーター Pod で同じキーストアにすることも、それぞれに個別のキーストアを提供することもできます。
    各 Data Grid クラスターに同じキーストアを使用するか、各クラスターに一意のキーストアを使用することもできます。

  • オプションで、Data Grid リレー Pod およびルーター Pod のパブリック証明書を検証する証明書チェーンまたはルート CA 証明書の一部が含まれるトラストストアがあります。

    デフォルトでは、Data Grid は Java トラストストアを使用してパブリック証明書を検証します。

手順

  1. クロスサイト暗号化シークレットを作成します。

    1. キーストアシークレットを作成します。
    2. デフォルトの Java トラストストアを使用しない場合は、トラストストアのシークレットを作成します。
  2. 各 Data Grid クラスターの Infinispan CR を変更し、encryption.transportKeyStore.secretName および encryption.routerKeyStore.secretName フィールドのシークレット名を指定します。
  3. 必要に応じて RELAY メッセージを暗号化するように他のフィールドを設定して変更を適用します。

    apiVersion: infinispan.org/v1
    kind: Infinispan
    metadata:
      name: infinispan
    spec:
      replicas: 2
      expose:
        type: LoadBalancer
      service:
        type: DataGrid
        sites:
          local:
            name: SiteA
            # ...
            encryption:
              protocol: TLSv1.3
              transportKeyStore:
                secretName: transport-tls-secret
                alias: transport
                filename: keystore.p12
              routerKeyStore:
                secretName: router-tls-secret
                alias: router
                filename: keystore.p12
              trustStore:
                secretName: truststore-tls-secret
                filename: truststore.p12
          locations:
            # ...

13.5.1. サイト間の暗号化を設定するためのリソース

以下の表は、クロスサイト接続を暗号化するフィールドおよび説明を示しています。

表13.4 service.type.sites.local.encryption

フィールド説明

service.type.sites.local.encryption.protocol

クロスサイト接続に使用する TLS プロトコルを指定します。デフォルト値は TLSv1.2 ですが、必要に応じて TLSv1.3 を設定できます。

service.type.sites.local.encryption.transportKeyStore

リレー Pod のキーストアシークレットを設定します。

service.type.sites.local.encryption.routerKeyStore

ルーター Pod のキーストアシークレットを設定します。

service.type.sites.local.encryption.trustStore

リレー Pod とルーター Pod 用に任意のトラストストアシークレットを設定します。

表13.5 service.type.sites.local.encryption.transportKeyStore

フィールド説明

secretName

リレー Pod が RELAY メッセージの暗号化および復号化に使用できるキーストアを含むシークレットを指定します。このフィールドは必須です。

alias

オプションで、キーストアの証明書のエイリアスを指定します。デフォルト値は transport です。

filename

オプションでキーストアのファイル名を指定します。デフォルト値は keystore.p12 です。

表13.6 service.type.sites.local.encryption.routerKeyStore

フィールド説明

secretName

ルーター Pod が RELAY メッセージの暗号化および復号化に使用できるキーストアを含むシークレットを指定します。このフィールドは必須です。

alias

オプションで、キーストアの証明書のエイリアスを指定します。デフォルト値は router です。

filename

オプションでキーストアのファイル名を指定します。デフォルト値は keystore.p12 です。

表13.7 service.type.sites.local.encryption.trustStore

フィールド説明

secretName

オプションで、リレー Pod およびルーター Pod のパブリック証明書を検証するためのトラストストアが含まれるシークレットを指定します。デフォルト値は <cluster-name>-truststore-site-tls-secret です。

filename

オプションでトラストストアのファイル名を指定します。デフォルト値は truststore.p12 です。

13.5.2. クロスサイトの暗号化シークレット

クロスサイトレプリケーション暗号化のシークレットは、クロスサイト接続のセキュリティーを保護するためにキーストアと任意のトラストストアを追加します。

クロスサイトの暗号化シークレット

apiVersion: v1
kind: Secret
metadata:
  name: tls-secret
type: Opaque
stringData:
  password: changeme
  type: pkcs12
data:
  <file-name>: "MIIKDgIBAzCCCdQGCSqGSIb3DQEHA..."

フィールド説明

stringData.password

キーストアまたはトラストストアのパスワードを指定します。

stringData.type

オプションでキーストアまたはトラストストアタイプを指定します。デフォルト値は pkcs12 です。

data.<file-name>

base64 でエンコードされたキーストアまたはトラストストアを追加します。