メイン コンテンツをスキップする 補完的コンテンツへスキップ

Dynamic Engine環境サービスのカスタムKeystoreを使ったセキュリティ

Dynamic Engine環境のカスタムKeystoreを使い、署名済みであるデータ統合ジョブのアーティファクトを検証します。

Talend StudioでのKetystoreの生成と管理については、ジョブアーティファクト署名用のカスタムJava KeyStoreを設定をご覧ください。
情報メモ重要: Dynamic Engine環境サービス用のカスタムスKeystoreは、エンジンのデプロイ中、またはアップグレード中のみ設定することが許可されています。

このタスクについて

デフォルトでは、Dynamic Engine環境はアーティファクト署名の検証でデフォルトのKeystoreを使用します。独自のKeystoreで署名されたデータ統合ジョブのアーティファクトを検証する場合は、環境のデプロイメントやアップグレード時に、カスタムKeystoreとそのパスワードを指定する必要があります。

カスタムKeystoreストアに含める必要があるのは、ルート認証局(CA)のパブリック証明書だけです。プライベートキーや中間の証明書は必要ありません。

手順

  1. dynamic-engine-crd Helmチャートを使用し、指定されたHelmバージョンのDynamic Engineカスタムリソース定義をインストールします。
    1. 使用するチャートのバージョンは、あなたのDynamic Engineバージョンと同じです。このバージョンは、以下のいずれかの方法で見つけることができます:
      • 次のHelmコマンドを実行します:
        helm show chart oci://ghcr.io/talend/helm/dynamic-engine --version <engine_version>
      • Talend Management Consoleから直接バージョンを見るか、自分のDynamic Engineバージョンに含まれているチャートバージョンのDynamic Engine変更ログをチェックしてください。
      • Dynamic EngineバージョンエンドポイントへのAPIコールを使用します。
    2. Kubernetesクラスターで次のコマンドを実行し、目的のバージョンのHelmチャートをインストールします:
      helm install dynamic-engine-crd oci://ghcr.io/talend/helm/dynamic-engine-crd --version <helm_chart_version>
      <helm_chart_version>を、お使いのDynamic Engineバージョンでサポートされているチャートのバージョンに置換します。

      バージョンを指定しないと、利用可能な最新のdynamic-engine-crdチャートバージョンがインストールされます。

  2. 同じくKubernetesマシンで、ダウンロードしておいたHelmデプロイメントのzipファイルを解凍します。
  3. KEYSTORE_PATH環境変数とKEYSTORE_PASS環境変数を使って、Keystoreファイルの場所とアクセスパスワードを設定します。

    Linuxシステムでの例:
    export KEYSTORE_PATH=<location-to-your-keystore-file>
    export KEYSTORE_PASS=<your_keystore_password>
    <location-to-your-keystore-file><your_keystore_password>を、実際の値に置換します。
  4. Base64エンコードされたKeystoreとそのパスワードを使って、Dynamic Engine環境用のカスタムの値ファイルを作成します。
    cat <<EOF > <environment-id>-custom-keystore-values.yaml
    configuration:
      signature:
        keystore:
          # base64 string of the keystore to load, null by default (rely on the default signature bundle)
          data: |
            $(base64 -i $KEYSTORE_PATH)
          password: ${KEYSTORE_PASS}
    EOF                         

    <environment-id>を、環境のIDに置換します。

  5. 次のコマンドを実行し、Dynamic Engineインスタンスをデプロイします:
    helm install dynamic-engine -f <engine-id>-helm-values/<engine-id>-values.yaml oci://ghcr.io/talend/helm/dynamic-engine

    KeystoreのカスタマイズはDynamic Engine環境側でのみ必要であるため、これがデフォルトのデプロイメントです。この理由により、Dynamic Engineインスタンスのカスタマイズは行われていません。

  6. カスタムのKeystore設定を使って、Dynamic Engine環境をデプロイします。
    helm install dyn-engine-env-<environment-id> -f <environment-id>-values.yaml  \
     -f <environment-id>-custom-keystore-values.yaml \
     oci://ghcr.io/talend/helm/dynamic-engine-environment \
     --version <engine-version>
    情報メモヒント: 変更が必要であれば、<environment-id>-custom-keystore-values.yamlファイルのコンテンツをアップデートし、helm upgradeを実行することでその変更を適用できます:
    helm upgrade dyn-engine-env-<environment-id> -f <environment-id>-values.yaml  \
     -f <environment-id>-custom-keystore-values.yaml \
     oci://ghcr.io/talend/helm/dynamic-engine-environment \
     --version <engine-version>

タスクの結果

正しく完了すると、Dynamic Engine環境サービスがカスタムKeystoreと共にクラスターにインストールされ、Dynamic Engineに接続します。

Talend Management Consoleではこの環境のステータスが[Ready] (準備完了)になり、タスクまたはプランを実行する準備ができていることが確定されます。

データ統合タスクが実行されると、アーティファクトの署名がまずカスタムKeystoreに対して検証され、次にデフォルトのKeystoreに対して検証されます。そのいずれも署名を認証できない場合、実行は開始されず、タスクはTalend Management Consoleで失敗したもとのして表示されます。

署名の問題でタスクの実行が失敗する場合は、環境でカスタムKeystoreを検証する単純なポッドテンプレートを作成します:
  1. このテストポッド用に値ファイルを作成します。この例では、check-custom-keystore.yamlというファイルです。
    cat <<EOF > check-custom-keystore.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        app.kubernetes.io/managed-by: kubectl
      name: check-custom-keystore
      
    spec:
      securityContext:
        runAsNonRoot: true
        runAsUser: 61000
        seccompProfile:
          type: RuntimeDefault
      containers:
      - name: runner
        image: ghcr.io/talend/jre21-base-minimal:4.0.32
        command:
          - cat
        tty: true
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
              - ALL
        resources:
          requests:
            cpu: '0.3'
            memory: 256Mi
          limits:
            cpu: '0.5'
            memory: 256Mi
        volumeMounts:
        - mountPath: /tmp/signature/keystores/default
          name: signature-check-secret-volume
          readOnly: true
        - mountPath: /tmp/signature/keystores/custom
          name: custom-signature-check-secret-volume
          readOnly: true
      volumes:
        - name: signature-check-secret-volume
          secret:
            defaultMode: 420
            secretName: signature-check-secret
        - name: custom-signature-check-secret-volume
          secret:
            defaultMode: 420
            secretName: custom-signature-check-secret
    EOF
  2. テストポッドのテンプレートを適用します:
    kubectl apply -n qlik-processing-env-<environment-id> -f check-custom-keystore.yaml                      
  3. keytoolを使って、Keystoreのコンテンツをリストします:
    kubectl exec -it check-custom-keystore -n qlik-processing-env-<environment-id> \
    -- /usr/lib/jvm/jdk-21.0.5+11-jre/bin/keytool -list -v -keystore /tmp/signature/keystores/custom/custom-code-verify.jks \
    -storepass \$(cat /tmp/signature/keystores/custom/custom-code-verify-jks-password)                                            

    このコマンドによって、カスタムKeystoreが環境にマウントされ、読み取り可能であることが確認されます。

  4. 完了したら、テストポッドを削除します:
     kubectl delete -n qlik-processing-env-<environment-id> -f check-custom-keystore.yaml

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。