必須のシークレット
- 更新日2026-05-15
- 27分で読める
シークレットは、機密情報を格納するために使用されるKubernetesオブジェクトです。
適切なシークレット管理は、SystemLink Enterprise環境のセキュリティを維持するために重要です。SystemLink Enterpriseをデプロイする前にシークレットを作成する必要があります。シークレットは、組織のセキュリティポリシーに従って管理する必要があります。
このセクションでは、SystemLink Enterpriseに必要なシークレットについて説明し、SystemLink Enterpriseシークレットを安全に管理するためのガイダンスを提供します。
以下のシークレットは必須で、特に指定しない限り、Opaqueタイプです。
シークレットを安全に管理する
シークレットは、2つの主要なアプローチを使用して管理できます。
- Helm管理シークレット: systemlink-secrets.yamlファイルでシークレットを定義します。Helmインストールの一部としてKubernetesクラスタにシークレットをデプロイします。この方法は構成が簡単ですが、バージョン管理で安全なストレージのためにシークレットファイルを暗号化する追加の手順が必要です。
- 外部シークレット管理: HashiCorp Vault、AWS Secrets Manager、またはAzure Key Vaultなどの外部シークレット管理システムにシークレットを保存および管理します。シークレットは、外部シークレットオペレータなどのツールを使用してKubernetesクラスタに同期されます。このアプローチは、一元化されたシークレット管理を提供します。
Helm管理シークレット (暗号化された値ファイル)
Helmを使用してシークレットを管理する場合は、systemlink-values.yamlのglobal.deploySecretsパラメータをtrueに設定します。systemlink-secrets.yamlファイルでシークレットを定義し、Helmのインストールまたはアップグレード中にクラスタにデプロイします。
systemlink-secrets.yamlファイルをバージョン管理に安全に保存するには、ファイルを暗号化する必要があります。1つの方法は、Mozilla SOPS (Secrets OPerationS) でHelmシークレットプラグインを使用することです。
HelmシークレットとMozilla SOPSを使用する:Helm Secretsプラグインは、Mozilla SOPSと統合して、Helm値ファイルを暗号化および復号化します。SOPSは、AWS KMS、Azure Key Vault、Google Cloud KMS、PGPなどの複数の暗号化バックエンドをサポートしています。
Helmシークレットを使用するには:
- Helm Secretsプラグインをインストールする:
helm plugin install https://github.com/jkroepke/helm-secrets --version <version>
- SOPSのインストール手順に従ってMozilla SOPSをインストールします。
- 暗号化バックエンド (AWS KMS、Azure Key Vault、GCP KMS、またはPGP) を構成します。構成の詳細については、SOPSのドキュメントを参照してください。
- systemlink-secrets.yamlファイルを暗号化します。
helm secrets encrypt systemlink-secrets.yaml
- SystemLink Enterpriseは、helm upgradeコマンドの代わりにhelm secrets upgradeを使用してデプロイします。Helm Secretsプラグインは、デプロイ中に暗号化された値ファイルを自動的に復号化します。
暗号化されたsystemlink-secrets.yamlファイルは、バージョン管理に安全にコミットできます。
外部シークレット管理ツール
外部シークレット管理ツールは、Kubernetesクラスタ外のシークレットを一元的に保存および管理します。シークレットは、オペレータまたはエージェントを使用してKubernetesに同期されます。外部シークレット管理を使用する場合、systemlink-values.yamlでglobal.deploySecretsパラメータをfalseに設定して、Helmがシークレットをデプロイしないようにします。
外部シークレットオペレータは、外部シークレット管理システムからのシークレットをKubernetesシークレットオブジェクトに同期するKubernetesオペレータです。オペレータは、HashiCorp Vault、AWS Secrets Manager、Azure Key Vault、Google Cloud Secret Managerなどの複数のバックエンドをサポートしています。
外部シークレットオペレータを使用するには:
- インストールガイドに従って、外部シークレットオペレータをKubernetesクラスタにインストールします。
- 外部シークレット管理システムへの接続を定義するSecretStoreリソースまたはClusterSecretStoreリソースを構成します。構成の詳細については、各プロバイダのドキュメントを参照してください。
- 各SystemLink Enterpriseシークレットに対してExternalSecretリソースを作成します。オペレータは、外部システムからのシークレットをKubernetesに同期します。
- systemlink-values.yamlでglobal.deploySecrets: falseを設定します。
- Helmを使用してSystemLink Enterpriseをデプロイします。
セキュリティのベストプラクティス
Kubernetesのシークレットとセキュリティの詳細については、「Kubernetesシークレット」のドキュメントおよび「Kubernetesシークレットのベストプラクティス」を参照してください。
シークレット形式の例
このセクションでは、Kubernetesでシークレットを生成したり、シークレットを表示したりするサンプルを提供します。シークレットは、Base64でエンコードされた形式でクラスタに保存されます。
暗号化キーを生成する:
OpenSSLまたは同様のツールを使用して、暗号で保護されたランダムキーを生成します。
- AES-256キー (32バイト):
openssl rand -base64 32
出力例:
h8F3mK9pL2nQ7vR4tY6uE1wX5zA8bC0dD2fG4hJ6k=
- AES-128キー (16バイト):
openssl rand -base64 16
出力例:
mK9pL2nQ7vR4tY6u
- AEADキー (32バイト):
openssl rand -base64 32
出力例:
p2sT4uV5wX8yA9bC0dD2fG4hJ6kL7mN9qR2sT5vW8=
- SHA-256署名キー (32~64バイト):
openssl rand -base64 48
出力例:
G4hJ6kL7mN9qR2sT4uV5wX8yA9bC0dD2fG4hJ6kL7mN9qR2sT4uV5wX8yA9b
- ホワイトリストに登録されたAPIキー (42バイト):
openssl rand -base64 42
出力例:
kL7mN9qR2sT4uV5wX8yA9bC0dD2fG4hJ6kL7mN9qR2sT4uV5w=
- MongoDBレプリカセットキー:
MongoDBレプリカセットキーは、データベースクラスタ内のポッドの認証に使用されます。キー生成の手順については、MongoDBのドキュメントを参照してください。
- RabbitMQ Erlang Cookie
openssl rand -hex 32
出力例:
a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
- Salt Master用RSAキー:
ミニオンとのSalt Master通信に使用されます。PKCS1形式である必要があります。
# Generate RSA private key (4096-bit) openssl genrsa 4096 # Generate RSA public key from private key openssl rsa -in private_key.pem -pubout -outform PEM
プライベートキーの例:
-----BEGIN RSA PRIVATE KEY----- MIIJKAIBAAKCAgEA1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL ... -----END RSA PRIVATE KEY-----
パブリックキーの例:
-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1234567890abcdefgh ... -----END PUBLIC KEY-----
- MongoDB接続文字列形式:
接続文字列のサンプルおよび形式については、「SystemLink Enterprise用にMongoDBを構成する」を参照してください。
- PostgreSQL接続文字列形式:
接続文字列のサンプルと構成の詳細については、「PostgreSQL」を参照してください。
- Kubernetesでシークレットを表示する:
クラスタにデプロイされたシークレットを表示するには、kubectlを使用します。シークレットデータはbase64でエンコードされています。
# View a secret in YAML format kubectl get secret webserver-session -n systemlink -o yaml
出力例:
apiVersion: v1 kind: Secret metadata: name: webserver-apikey namespace: systemlink type: Opaque data: encryptionKey: aDhGM21LOXBMMm5RN3ZSNHRZNnVFMXdYNXpBOGJDMGQ= signatureKey: RDJmRzRoSjZrN21MOHBOOXFSMnNUNHVWNXdYOHlBOWI=
シークレット値をデコードする:
kubectl get secret webserver-session -n systemlink -o jsonpath='{.data.encryptionKey}' | base64 -d - シークレットを手動で作成する:
Helm管理シークレットを使用しない場合は、kubectlで直接シークレットを作成します。
# Create a secret with multiple fields kubectl create secret generic oidc-secret \ --from-literal=clientId='my-client-id' \ --from-literal=clientSecret='my-client-secret' \ --from-literal=jwks='' \ -n systemlink
イメージプルシークレット
SystemLink EnterpriseをホストするNIコンテナリポジトリは非公開で、アクセスするには認証が必要です。SystemLink Enterpriseにアクセスするための資格情報は事前にNIからお知らせします。systemlink-values.yamlおよびsystemlink-admin-values.yamlのglobal.imagePullSecrets配列を使用してSystemLink Enterpriseの画像プルシークレットを構成します。イメージプルシークレットは、kubernetes.io/dockerconfigjson形式に準拠している必要があります。
| シークレット | 詳細 |
|---|---|
| niartifacts-secret | — |
認証シークレット
| シークレット | 詳細 |
|---|---|
| oidc-secret | OpenID Connect (OIDC) 認証プロバイダを使用してSystemLink Enterpriseを識別し、以下のフィールドを備えています。
|
ホワイトリストに登録されたAPIキー
- apiKey: Base64でエンコードされた、42バイトの乱数シーケンスです。
| シークレット | 詳細 |
|---|---|
| alarmservice-apikey | — |
| alarmserviceroutineexecutor-apikey | — |
| assetservice-apikey | — |
| comments-apikey | — |
| dashboardhost-apikey | — |
| jupyterhub-apikey | — |
| nbexec-argo-workflow-apikey | |
| routineeventtrigger-apikey | — |
| routineexecutor-apikey | — |
| routinescheduletrigger-apikey | — |
| saltmaster-init-apikey | — |
| sessionmanagerservice-apikey | — |
| systemsmanagement-service-apikey | — |
| tageventprocessor-apikey | — |
| testmonitor-apikey | — |
| webserver-apikey | — |
| workorder-apikey | — |
ホワイトリストに登録されたAPI キーハッシュ
| シークレット | 詳細 |
|---|---|
| userservices-apikey-whitelist | ホワイトリストに登録された承認済みAPI キーのリストを管理します。このシークレットのフィールドは1つです。
|
暗号化キー
| シークレット | 詳細 |
|---|---|
| fileingestionservices-encryption-key |
フィールド: encryptionKey キーのタイプ: AES-256 エンコーディング: Base64 |
| fileingestionservices-download-encryption-key |
フィールド: encryptionKey キーのタイプ: AES-256 エンコーディング: Base64 |
| saltmaster-rsa-keys |
フィールド: saltmaster-private-key タイプ: RSA 形式: PKCS フィールド: saltmaster-private-key タイプ: RSA 形式: PKCS1 |
| systemsmanagementservice-dataprotection |
フィールド: aesKey キーのタイプ: AES-128 エンコーディング: Base64 |
| systemsstateservice-dataprotection |
フィールド: aesKey キーのタイプ: AES-128 エンコーディング: Base64 |
| taghistorian-continuation-token |
フィールド: encryptionKey キーのタイプ: AEAD キーの長さ: 32バイト エンコーディング: Base64 |
| userservices-continuation-token |
フィールド: encryptionKey キーのタイプ: AEAD キーの長さ: 32バイト エンコーディング: Base64 |
| webappservices-continuation-token |
フィールド: encryptionKey キーのタイプ: AEAD キーの長さ: 32バイト エンコーディング: Base64 |
| webserver-session |
フィールド: encryptionKey キーのタイプ: AES-128 エンコーディング: Base64 フィールド: signatureKey キーのタイプ: SHA-256 エンコーディング: Base64 |
サードパーティの資格情報
Kubernetesシークレットを使用して、MongoDB、PostgreSQL、Elasticsearch、Dremio、RabbitMQなどのサードパーティサービスを認証します。
Elasticsearch資格情報
| シークレット | 詳細 |
|---|---|
| sl-elasticsearch-filescdc-secret | Elasticsearchインスタンスを使用した認証用の資格情報。fileingestionおよびfileingestioncdcサービスによって使用されます。このシークレットには以下のフィールドがあります。
|
Dremio資格情報
| シークレット | 詳細 |
|---|---|
| nidataframe-dremio-credentials | 以下のフィールドがあります。
|
| nidataframe-nessie-credentials | NessieによるDremio認証用のBearerトークン。このシークレットには以下のフィールドがあります。
|
Grafana資格情報
| シークレット | 詳細 |
|---|---|
| grafana-login | 以下のフィールドを使用してGrafanaの管理者ユーザを定義します。
|
MongoDB資格情報
すべてのMongoDBインスタンスは、以下のフィールドを持つシークレットに資格情報を格納します。
- mongodb-root-password: データベースクラスタへのルートアクセスを付与するパスワード。
- mongodb-passwords: それぞれが個々のデータベースへの完全アクセスを付与するパスワードの配列。これらのパスワードには、カンマや、IETF URL仕様で定義されている予約文字を含めることはできません。メモ パスワードはカンマで区切ります。空白や末尾の区切り文字は含めないでください。たとえば、password1,password2のようになります。userservices-mongodb-credentialsとsaltmaster-mongodb-credentialsを除くすべてのMongoDB資格情報シークレットには、1つのパスワードが必要です。
- mongodb-replica-set-key: MongoDBレプリカ セット内のノードを認証するために使用されるキー。
- mongodb-connection-string : MongoDB データベースへのアクセス認証に必要な接続情報 (資格情報を含む) の文字列です。
| シークレット | 詳細 |
|---|---|
| assetservice-mongodb-credentials | — |
| locationservice-mongodb-credentials | — |
| fileingestionservices-mongodb-credentials | — |
| nbexecservice-mongodb-credentials | — |
| nicomments-mongodb-credentials | — |
| nidataframe-mongodb-credentials | — |
| nispecificationmanagement-mongodb-credentials | インストールはオプションです。 |
| niworkorder-mongodb-credentials | インストールはオプションです。 |
| notification-mongodb-credentials | — |
| repositoryservice-mongodb-credentials | — |
| routines-mongodb-credentials | — |
| routinescheduletrigger-mongodb-credentials | — |
| systemsmanagementservice-mongodb-credentials | — |
| systemsstateservice-mongodb-credentials | — |
| saltmaster-mongodb-credentials | 2つのmongodb-passwordsが必要です (順にミニオン用のパスワードとピラーデータベース用のパスワード)。 |
| taghistoriandb-mongodb-credentials | — |
| tags-mongodb-credentials | — |
| userdata-mongodb-credentials | — |
| userservices-mongodb-credentials | 2つのmongodb-passwordsが必要です (順にuserデータベース用のパスワードとkeysデータベース用のパスワード)。 |
| webappservices-mongodb-credentials | — |
PostgreSQL資格情報
| シークレット | 詳細 |
|---|---|
| dashboardhost-postgres-secrets | 以下のフィールドがあります。
|
| testmonitorservicedb-connection | データベース接続が接続文字列と接続パラメータのどちらで定義されているかに応じて、以下のフィールドを使用した2つの形式があります。接続文字列には以下のフィールドがあります。
|
| dynamicformfields-postgres-connection | データベース接続が接続文字列と接続パラメータのどちらで定義されているかに応じて、以下のフィールドを使用した2つの形式があります。接続文字列には以下のフィールドがあります。
|
プロキシサーバの資格情報
| シークレット | 詳細 |
|---|---|
| webserver-proxy-credentials | OIDCプロバイダにアクセスするための、プロキシサーバを使用した認証用の資格情報。このシークレットには、以下のフィールドがあります。
|
RabbitMQ資格情報
| シークレット | 詳細 |
|---|---|
| rabbitmq-user | RabbitMQインスタンスを使用した認証用の資格情報。このシークレットには、以下のフィールドがあります。
|
| rabbitmq-erlang-cookie | Erlang Cookie の値。このシークレットのフィールドは1つです。
|
Redis資格情報
| シークレット | 詳細 |
|---|---|
| webserver-redis-credentials | 以下のフィールドがあります。
|
Amazon S3資格情報
SystemLink Enterprise構成では、Amazon S3またはAmazon S3互換ファイルストレージプロバイダを使用する場合、以下のシークレットが必要です。
| シークレット | 詳細 |
|---|---|
| feeds-s3-credentials | 以下のフィールドがあります。
|
| fileingestion-s3-credentials | 以下のフィールドがあります。
|
| nbexecservice-s3-credentials | 以下のフィールドがあります。
|
| nidataframe-s3-credentials | 以下のフィールドがあります。
|
Azureストレージ資格情報
| シークレット | 詳細 |
|---|---|
| feeds-azure-credentials | 以下のフィールドがあります。
|
| files-azure-credentials | 以下のフィールドがあります。
|
| nbexecservice-azure-credentials | 以下のフィールドがあります。
|
| nidataframe-azure-credentials | 以下のフィールドがあります。
|
SMTP資格情報
| シークレット | 詳細 |
|---|---|
| smtp-server-credentials | 以下のフィールドがあります。
|
関連コンテンツ
- インストールを検証する
SystemLink Enterprise が正しくインストールされたことをテストします。
- シークレットのローテーションを実行する
SystemLink Enterpriseのシークレットは、環境、組織のセキュリティポリシー、その他の運用要件の変更に基づいて変更またはローテーションする必要がある場合があります。変更後に正しく動作させるためには、異なるシークレットで異なる手順が必要です。
- AWS EKSにおけるSystemLink Enterprise
Amazon Elastic Kubernetes Service (EKS) は、独自のKubernetesコントロールプレーンをインストールして操作することなく、AWSでKubernetesを簡単に実行できるようにするマネージドKubernetesサービスです。
- Azure AKSにおけるSystemLink Enterprise
Azure Kubernetes Service (AKS) は、独自のKubernetesコントロールプレーンをインストールして操作することなく、Azure上でKubernetesを簡単に実行できるようにするマネージドKubernetesサービスです。
- generate_whitelisted_key.sh
- systemlink-secrets.yaml
- systemlink-values.yaml
- systemlink-admin-values.yaml
- SystemLink Enterprise用にMongoDBを構成する
SystemLink Enterpriseには外部MongoDBデータベースが必要です。SystemLink Enterpriseをデプロイする前に、独自のMongoDBレプリカセットをプロビジョニングおよび管理する必要があります。このセクションでは、デプロイメントオプション、必要なデータベース資格情報、および接続文字列の構成について説明します。
- PostgreSQL
PostgreSQLは、ダッシュボードホストサービス、テストモニタサービス、およびダイナミックフォームフィールドサービスに必要です。