SystemLink Enterpriseのシークレットは、環境、組織のセキュリティポリシー、その他の運用要件の変更に基づいて変更またはローテーションする必要がある場合があります。変更後に正しく動作させるためには、異なるシークレットで異なる手順が必要です。

シークレットのタイプ、形式、および管理方法の詳細については、「必須のシークレット」を参照してください。
メモ このドキュメントでは、Helm管理シークレットを手動で回転させる方法を説明します。外部シークレット管理ツール (HashiCorp Vault、AWS Secrets Manager、Azure Key Vaultなど) を使用している場合は、ローテーション手順についてシークレット管理システムのドキュメントを参照してください。外部シークレットマネージャは、ここで説明する手動手順とは異なる方法で自動回転および同期を処理できます。

シークレットローテーションの一般的な手順

  • シークレットの変更を適用中:

    Helm値ファイルのシークレットを変更した後、Helm upgradeコマンドを使用して変更を適用します。

    helm upgrade <release> oci://downloads.artifacts.ni.com/ni-docker/ni/helm-charts/systemlink --install --version <version> --namespace <namespace> --values systemlink-values.yaml --values systemlink-secrets.yaml
    表 21. アップグレードパラメータ
    パラメータ 説明
    リリース 初期インストール時のHelmリリース名。
    namespace SystemLink Enterpriseデプロイメントのネームスペース。
    バージョン SystemLink Enterpriseのバージョン。
  • デプロイメントを再起動する:

    シークレットによっては、サービスが新しい値を取得するためにデプロイメントを手動で再起動する必要があります。kubectl rollout restartコマンドを使用します。

    kubectl rollout restart deployment/<release>-<service-name> -n <namespace>

    すべてのデプロイメントを一度に再起動するには:

    kubectl rollout restart deployment -n <namespace>
  • ステートフルセットを再起動する:

    ステートフルサービスを再起動するには、次のコマンドを使用します。

    kubectl rollout restart statefulset/<release>-<service-name> -n <namespace>

    すべてのstatefulsetsを一度に再起動するには、次のコマンドを使用します。

    kubectl rollout restart statefulset -n <namespace>
  • ポッドの状態を監視する

    シークレットを回転してサービスを再起動すると、すべてのポッドが正常な状態に戻ることを確認します。

    kubectl rollout status deployment/<release>-<service-name> -n <namespace> --timeout=10m
    kubectl rollout status statefulset/<release>-<service-name> -n <namespace> --timeout=20m
    kubectl get pods -n <namespace>
    kubectl logs -l app.kubernetes.io/name=<service-name> -n <namespace> --tail=50

一般的な回転プロセス

ほとんどのシークレットローテーションは、以下のパターンに従います。

  1. 適切なHelm値ファイルのシークレット値を変更します。
  2. Helm upgradeコマンドを使用して変更を適用します。上記の「一般的な手順」を参照してください。
  3. 必要に応じて、影響を受けるデプロイメントまたはstatefulsetsを再起動します。以下の個々のシークレット手順を参照してください。
  4. ポッドを監視して、正常な状態に戻ることを確認します。

シークレットの中には、以下の手順で説明されているように、特定の要件または追加手順があるものもあります。環境変数を使用するシークレットは通常、手動でポッドを再起動する必要がありますが、ボリュームとしてマウントされたシークレットは、アプリケーションの構成に応じて自動的に選択される場合があります。

シークレットローテーション手順

  • イメージプルシークレット:

    SystemLink-secrets.yamlでイメージプルシークレットを変更し、Helm upgradeコマンドを実行して変更を適用します。

    すべてのデプロイメントとstatefulsetsを再起動します。手順については、「デプロイメントを再起動する」および「ステートフルセットを再起動する」を参照してください。すべてのポッドが正常な状態に戻ることを確認するには、「ポッドの状態を監視する」を参照してください。

  • 認証シークレット:

    SystemLink-secrets.yamlの認証シークレットを変更し、Helm upgradeコマンドを実行して変更を適用します。Webサーバデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。

  • プロキシサーバの資格情報:

    SystemLink-secrets.yamlでプロキシサーバシークレットを変更し、Helm upgradeコマンドを実行して変更を適用します。Webサーバデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。

  • ホワイトリストに登録されたAPIキーとハッシュ:

    SystemLink-secrets.yamlでホワイトリストに登録されたAPIキーとハッシュシークレットを変更し、Helm upgradeコマンドを実行して変更を適用します。ローテーションされたAPIキーに関連付けられたサービスデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。

    APIキーと関連サービスの詳細については、「必須のシークレット」を参照してください。

  • 暗号化キー:
    警告 保存データの暗号化に使用する暗号化キーは、既存のデータを移行または再暗号化しない限り、ローテーションできません。これらのキーを変更すると、暗号化されたデータに完全にアクセスできなくなる可能性があります。どのキーが安全にローテーションできるかを判断するには、暗号化キーを回転する前にNIサポートにお問い合わせください。
    安全にローテーションできる暗号化キーの場合、SystemLink-secrets.yamlで暗号化キーシークレットを変更し、Helm upgradeコマンドを使用して変更を適用します。特定の暗号化キーに関連付けられたデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。
  • Dremio資格情報:

    SystemLink-secrets.yamlでDremio資格情報シークレットを変更し、Helm upgradeコマンドを使用して変更を適用します。これには、Dremio認証資格情報とNessie Bearerトークンの両方が含まれます。dataframeserviceおよびdataframeservice-nessieデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。

    資格情報変更後、Dremioをリセットしてください。手順については、「Dremioをリセットする」を参照してください。

  • Elasticsearch資格情報:
    メモ この手順は、ElasticsearchがSystemLink Enterpriseインストールの一部としてデプロイされている場合にのみ適用されます。

    elasticsearch-secrets.yamlSystemLink-secrets.yamlの両方でElasticsearch資格情報を変更します。Elasticsearchチャートをアップグレードしてユーザ資格情報を更新してから、SystemLinkのメインチャートをアップグレードします。

    fileingestioncdcおよびfileingestionデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。

  • PostgreSQL資格情報:

    SystemLink-secrets.yamlでPostgreSQL資格情報シークレットを変更し、Helm upgradeコマンドを使用して変更を適用します。testmonitorservicedynamicformfields、およびdashboardhostデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。

  • MongoDB資格情報:

    SystemLink-secrets.yamlでMongoDB資格情報シークレットを変更し、Helm upgradeコマンドを使用して変更を適用します。MongoDBを使用するすべてのデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。

    MongoDBを使用するサービスについては、「必須のシークレット」を参照してください。

  • RabbitMQ資格情報:

    SystemLink-secrets.yamlでRabbitMQ資格情報シークレットを変更します。変更を適用する前に、すべてのRabbitMQポッドを停止するようにRabbitMQステートフルセットを削除します。

    kubectl delete statefulset <release>-rabbitmq -n <namespace>

    すべてのRabbitMQポッドが停止したことを確認します。

    kubectl get pods -n <namespace> --selector=app.kubernetes.io/name=rabbitmq

    すべてのポッドを停止した後、すべてのRabbitMQ永続ボリューム要求の一覧を作成して削除します。

    kubectl get pvc -n <namespace> --selector=app.kubernetes.io/name=rabbitmq
    kubectl delete pvc -n <namespace> --selector=app.kubernetes.io/name=rabbitmq

    Helm upgradeコマンドを使用して変更を適用します。RabbitMQステートフルセットを新しい資格情報で再デプロイするには、「一般的な手順」を参照してください。

    メモ 通常、永続ボリュームは、クレームが削除されると自動的に削除されます。クラスタを自動削除するように構成していない場合、孤立した永続ボリュームを手動で削除してリソースを回復できます。
  • Redis資格情報:

    SystemLink-secrets.yamlでRedis資格情報シークレットを変更します。Redisステートフルセットを削除します。

    kubectl delete statefulset <release>-webserver-redis -n <namespace>

    すべてのRedis永続ボリューム要求をリストして削除します。

    kubectl get pvc -n <namespace> --selector=app.kubernetes.io/name=webserver-redis
    kubectl delete pvc -n <namespace> --selector=app.kubernetes.io/name=webserver-redis

    Helm upgradeコマンドを使用して変更を適用します。新しい資格情報を使用してRedisステートフルセットを再デプロイするには、「一般的な手順」を参照してください。

  • オブジェクトストレージ資格情報:
    • フィード、ファイル取り込み、Notebook実行:

      SystemLink-secrets.yamlでフィード、ファイル取り込み、Notebook実行シークレットを変更します。Helm upgradeコマンドを使用して変更を適用します。feedservicefilenbexec-execution-service、およびnbexec-notebook-serviceデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。

      メモ この手順は、クラスタにアクセストークンとして資格情報を保存する場合にのみ適用されます。資格情報ストレージのオプションについては、「オブジェクトストレージ」を参照してください。
    • DFSおよびDremio:

      SystemLink-secrets.yamlのDFSシークレットとDremioシークレットを変更します。Helm upgradeコマンドを使用して変更を適用します。Dremioをリセットします。詳細については、「Dremioをリセットする」を参照してください。

      メモ SystemLink Enterpriseシークレットテンプレートを使用していない場合は、Dremio分散ストレージ構成も変更します。ストレージ構成については、aws-secrets.yamlまたはazure-secrets.yamlを参照してください。
  • SMTP資格情報:

    SystemLink-secrets.yamlでSMTP資格情報シークレットを変更し、Helm upgradeコマンドを使用して変更を適用します。SMTPデプロイメントを再起動します。手順については、「デプロイメントを再起動する」を参照してください。