Docs Menu
Docs Home
/ /

オートメーション構成の暗号化

オートメーション構成の暗号化は、オートメーションエージェントの ローカルバックアップ構成ファイル内の機密認証情報を保護します。エージェントがクラスター構成のバックアップをディスクに保存する場合、パスワードや認証キーを含む機密フィールドをプレーンテキストで記述するのではなく、AES-256-GCM を使用して暗号化します。

この機能により、組織は PCI-DSS、HIPAA、SOC 2 などのフレームワークのコンプライアンス要件を満たすことができます。

暗号化はデフォルトで無効になっています。この機能を明示的に有効にするまで、既存の配置は暗号化されないままになります。

Ops Manager は、オートメーション構成の 3 つの暗号化方法をサポートしています。

方式
に最適
キー暗号化のキー(KEK)ソース

オンライン(KMIP)

KMIP インフラストラクチャがある環境

カスタマー管理 KMIPサーバー

オフライン

空の環境またはスタンドアロン環境

マシンが生成したキー

default

自動コンプライアンス調整

保管時の暗号化設定に従います

Tip

KMIP インフラストラクチャが利用可能な場合は、オンライン( KMIP )モードを使用します。マスターキーがHAMの外部に存在しないため、最も強力なセキュリティを提供します。

オンラインモードは、KMIP インフラストラクチャがある環境に最適です。マスターキーは外部の KMIP 互換 H SMP にあり、ディスクにかかることはありません。別のブートストラップ キーによって KMIP 証明書の認証情報がローカルに保護され、無人再起動が可能になります。

注意

このメソッドには既存の KMIP 互換サーバーが必要です。 MongoDB Enterprise Advanced の security.kmip.* 構成に一致するクライアント証明書(mTLS)認証 を構成する必要があります。

オンラインモードを使用するには、encryptionMethodONLINE_KMS に設定し、KMIPサーバーの詳細を指定します。

Parameter
説明
必須

kmip.serverName

KMIPサーバーのホスト名またはIP

はい

kmip.port

KMIPサーバーポート。デフォルト: 5696

No

kmip.serverCAFile

CA 証明書パス(Unix)

はい

kmip.serverCAFileWindows

CA 証明書パス(Windows)

条件付き

kmip.clientCertificateFile

クライアント証明書パス(Unix)

はい

kmip.clientCertificateFileWindows

クライアント証明書パス(Windows)

条件付き

kmip.clientCertificatePassword

クライアント証明書のパスワード( PEM が暗号化されている場合)

No

kmip.keyIdentifier

KMIPサーバー上の既存のキーの UUID 。空の場合、エージェントは新しいキーを自動的に作成します。

No

kmip.useLegacyProtocol

KMIP 1.2(暗号化/復号化)ではなく、KMIP 1.0/1.1(Create+Get)を使用します。 KMIPサーバーがKMIP 1.2 をサポートしていない場合に使用します。

No

{
"configEncryption": {
"encryptionMethod": "ONLINE_KMS",
"kmip": {
"serverName": "<hostname>",
"port": 5696,
"serverCAFile": "<path-unix>",
"serverCAFileWindows": "<path-windows>",
"clientCertificateFile": "<path-unix>",
"clientCertificateFileWindows": "<path-windows>",
"clientCertificatePassword": "<password>",
"keyIdentifier": "<optional-uuid>",
"useLegacyProtocol": false
}
}
}

オンライン KMIP暗号化を有効にする前に、次の点を確認してください。

  • TLS ハンドシェイク: 次のコマンドを実行し、ハンドシェイクが成功し、証明書が受け入れられたことを確認します。

    openssl s_client -connect <serverName>:<port> \
    -CAfile <serverCAFile> -cert <clientCertificateFile>
  • 証明書権限:クライアント証明書が必要な KMIP 操作で認可されていることを確認します。 KMIP サーバーの管理コンソールまたはログを確認します。

  • ネットワーク到達可能性:エージェントホストが構成されたポート上の KMIPサーバーに到達できることを確認します。ファイアウォールルール、セキュリティ グループ、DNS 解決を確認します。

  • 証明書の有効期限:サーバーCA とクライアント証明書の両方が期限切れでないことを確認します。確認するには、次のコマンドを実行します。

    openssl x509 -enddate -noout -in <certFile>

クライアント証明書は、 KMIPサーバー上で次の操作を行うために認可される必要があります。

KMIPモード
必要な操作

デフォルト(KMIP 1.2)

対称キーの作成、暗号化、復号化

レガシー(useLegacyProtocol: true

対称キーの作成、取得

keyIdentifier を指定する場合、 作成 権限は必要ありません。 KMIPサーバーのドキュメントを参照して、クライアント証明書に対する適切な権限を設定します。

オフラインモードは、航空会社またはスタンドアロン環境に最適です。エージェントは、カスタマーから提供された UUID と物理マシン パラメーターから暗号化のキーを生成します。このメソッドでは外部依存関係は必要ありません。

オフラインモードを使用するには、encryptionMethodOFFLINE_SOFTWARE に設定し、次のパラメータを指定します。

Parameter
説明
必須

dynamicSalt

キーの推論に使用される UUID 。ローテーション トリガーとして機能します。

はい

dynamicSalt は、暗号化されたランダムな UUID で、キー生成プロセスへの追加入力として機能します。

  • Ops Manager UI: Generateをクリックすると、新しい UUID が自動的に生成されます。

  • パブリックAPI: 暗号化されたランダムな UUID を提供します(バージョン4 )。安全なランダムジェネレーターを使用します。予測可能な UUID 、連続 UUID 、またはハードコードされた UUID を避けます。

動的ソルトを新しい UUID に変更すると、 キーの再削除 がトリガーされます。これは オフラインモードのプライマリ ローテーション メカニズムです。

{
"configEncryption": {
"encryptionMethod": "OFFLINE_SOFTWARE",
"dynamicSalt": "<UUID>"
}
}

配置内のいずれかのプロセスで保管時の暗号化(security.enableEncryption)が有効になっている場合、オフラインの暗号化は明示的な構成なしで自動的に有効化されます。そうしないと、構成は暗号化されないままになります。

注意

デフォルトモードでは、手動キーのローテーションはサポートされていません。

Ops Manager UIまたは パブリックAPIを使用して、オートメーション構成の暗号化を構成できます。

Ops Manager でプロジェクトレベルで暗号化を構成します。

1

SettingsAdmin Project SettingsAutomation Config Encryption をクリックします。

2

Online (KMIP)Offline 、またはDefaultを選択します。

3

フィールドの説明については、「 Atlas Online(KMIP) 」または「 オフライン 」を参照してください。

4

Save をクリックし、変更を確認して配置します。

Ops Manager のオートメーション構成エンドポイントを介して、オートメーション構成の暗号化を管理できます。

エンドポイント:PUT /groups/{PROJECT-ID}/automationConfig

configEncryptionオートメーション構成リクエストの本文に オブジェクトを含めます。完全なリクエストと応答の詳細については、「 オートメーション構成の更新 」を参照してください。

Project Automation Adminこのエンドポイントを使用するには、 ロールが必要です。

configEncryptionオートメーション構成リクエストの本文に オブジェクトを含めます。完全なフィールド参照については、「 オンライン(KMIP) 」または「 オフライン 」を参照してください。

オンライン(KMIP):

{
"configEncryption": {
"encryptionMethod": "ONLINE_KMS",
"kmip": {
"serverName": "kmip.example.com",
"serverCAFile": "/path/to/ca.pem",
"clientCertificateFile": "/path/to/client.pem"
}
}
}

オフライン:

{
"configEncryption": {
"encryptionMethod": "OFFLINE_SOFTWARE",
"dynamicSalt": "<UUID>"
}
}

完全な応答仕様については、「 オートメーション構成の更新 」を参照してください。次のエラー コードはconfigEncryption 検証に固有です。

HTTPコード
説明
ノート

200 OK

配置案として保存された構成。

空のJSONオブジェクトを返します。 {}

400 Bad Request

INVALID_CONFIG_ENCRYPTION_SETTINGS

configEncryptionオブジェクトが内部検証に失敗した場合に返されます。

403 Forbidden

CHANGE_NOT_ALLOWED_EXTERNAL_SYSTEM

プロジェクトが外部で管理されるロックによって制限されている場合に返されます。

オートメーション構成の暗号化を無効にするには、暗号化方法を デフォルト に設定します。

1

SettingsAdmin Project SettingsAutomation Config Encryption をクリックします。

2

暗号化方法を Default に設定します。

3

Save をクリックし、変更を確認して配置します。

注意

プロジェクト内のどの配置でも保存時の暗号化が使用されていない場合、この変更を配置すると暗号化が無効になります。

機密フィールドのみが暗号化されます。ポート、ログ、トポロジーなどの機密性のない運用データはプレーンテキストのままになります。

カテゴリ
フィールド

認証

auth.key
auth.newKey
auth.autoPwd
auth.newAutoPwd
auth.autoKerberosWindowsPassword

ユーザー認証情報

auth.usersWanted.[].initPwd
auth.usersWanted.[].scramSha1Creds.salt
auth.usersWanted.[].scramSha1Creds.storedKey
auth.usersWanted.[].scramSha1Creds.serverKey
auth.usersWanted.[].scramSha256Creds.salt
auth.usersWanted.[].scramSha256Creds.storedKey
auth.usersWanted.[].scramSha256Creds.serverKey

TLS

tls.autoPEMKeyFilePwd

LDAP

ldap.bindQueryPassword
ldap.newBindQueryPassword

Prometheus

prometheus.password
prometheus.passwordHash
prometheus.passwordSalt
prometheus.tlsPemPassword

BI Connector

mongosqlds.[].tlsPEMKeyPassword

暗号化プロバイダー

encryptionProviders.awsKms.accessKeyId
encryptionProviders.awsKms.secretAccessKey
encryptionProviders.awsKms.sessionToken
encryptionProviders.azureKeyVault.clientId
encryptionProviders.azureKeyVault.tenantId
encryptionProviders.azureKeyVault.secret
encryptionProviders.googleCloudKMS.serviceAccountKey

設定の暗号化

configEncryption.kmip.clientCertificatePassword

このエージェントは、設定されたバックアップディレクトリに 2 つのファイルを保存します。エージェントユーザーには、このディレクトリへの読み取り/書込みアクセス権が必要です。

ファイル
説明
権限(Unix / Windows)

mms-cluster-config-backup.json

機密フィールドがインラインで暗号化されたクラスター構成

0600 / 0600

master.key

ラップされた暗号化のキー(JSON)

0400 / 0600

エージェントはアトミック パターンを使用してファイルを書込みます( 一時ファイルに書込み、その後名前を変更します)。エージェントは、書込み中にクラッシュが発生した場合に一貫したロールバックを確保するために、キーファイルの前に構成ファイルを保持します。

警告

これらのファイルは変更しないでください。 Ops Manager が到達不能な場合に、エージェントはこれらを使用して再起動から回復します。

エージェントは、手動と自動のキー ローテーションの両方をサポートします。

暗号化のキーを手動でローテーションするには、次の trigger を使用します。

モード
トリガーする

オンライン(KMIP)

Ops Manager で KMIP 構成のプロパティを更新します。

オフライン

Ops Manager で新しい動的 Salted UUID を生成する

default

最初にオンラインまたはオフラインモードに切り替え

エージェントは、次の場合に暗号化キーを自動的にローテーションします。

  • エージェントプロセスが再起動します。

  • エージェントのバージョンの変更(アップグレードまたはダウングレード)。

次の状況でキーをローテーションします。

  • キーの侵害の疑い

  • 組織のセキュリティ ポリシーごとに予定されたローテーション

  • インフラストラクチャへのアクセスに関連する担当者の変更

次の条件は、デプロイメントのオートメーション構成の暗号化に影響する可能性があります。

  • ハードウェアの変更:ハードウェアを置き換えるか、VM を移行すると、エージェント はローカルバックアップにアクセスできなくなる可能性があります。エージェントは、Ops Manager から新しい構成を取得することで、自動的に回復します。

  • VM のクローン: クローンされた VM は同じマシン ID を保持し、オフラインで暗号化されたデータを復号化する可能性があります。クローン分離セキュリティには、Atlas Online(KMIP)モードを使用します。

  • エージェントのアップグレードとダウングレード:エージェントのバージョンを変更すると、暗号化アーティファクトが無効になります。エージェントは、Ops Manager から新しい構成を自動的に取得して再暗号化します。

  • Ops Manager 接続:エージェントがローカルファイルを復号化できず、Ops Manager にアクセスできない場合は、エラー状態になり、接続が復元されるまで再試行します。

  • KMIPサーバーの可用性: キーのラップと解凍のエージェント操作中に KMIPサーバーにアクセスできる必要があります。

  • Kubernetes Operator: 演算子モードでは暗号化が無効になります。 Kubernetes Operator はシークレットを個別に管理します。

  • レイテンシ移行: 既存の配置は、アップグレード時にデフォルトモードに移動されます。いずれかのプロセスで 保管時の暗号化が 有効になっている場合、オフラインの暗号化は自動的に有効になります。

暗号化システムは、フィールドを暗号化するデータ暗号化キー(DEK)と、DEK を保護するキー暗号化キー(KEK)によるエンベロープ暗号化を使用します。オンラインモードでは、KEK は KMIP 互換の HVM に存在し、ディスクには存在しません。オフラインモードでは、エージェントはマシン固有の属性から KEK を生成し、暗号化されたデータを物理ホストにバインドします。

次の表は、暗号化プロセスの各段階で使用される暗号化アルゴリズムを示しています。

目的
アルゴリズム
詳細

フィールドの暗号化

AES-256-GCM

256 ビットキー、96 ビット ナンス、128 ビット認証タグ。各フィールドは一意の mongos を使用し、認証済みデータ(AAD)によって構成パスにバインドされるため、改行やフィールドの再配置を防止できます。

KEK 派生(オフライン)

PDK:2-HMAC-SHA256

ブルートフォース攻撃に対する計算強化のために高い反復回数を使用して KEK を生成します。

DEK ラップ

AES キー ラップ(RFC 3394)

KEK の下で DEK を保護するための NEST 承認アルゴリズム。 8 バイトの整合性チェック値を持つラップされたキーを生成します。

DEK ラップ(オンライン KMIP 1.2)

KMIP サーバー側の暗号化/復号化

マスターキーは KMIPサーバーを離れることはありません。サーバーはDEK を直接ラップして解凍します。

DEK ラップ(オンライン KMIPレガシー)

AES キー ラップ(RFC 3394)

エージェントはKMIPサーバーからキーを検索し、それを AES キー ラップのためにローカルで使用し、メモリからキーをゼロにします。

オートメーション構成の暗号化システムは、次のセキュリティ保証を提供します。

  • オンラインモードブートストラップ: ローカルでラップされた別のキーは、 構成に保存されている KMIP 証明書の認証情報を保護します。これにより、エージェントはディスクにプレーンテキスト シークレットを保存することなく、自動再起動中に KMIPサーバーで認証できるようになります。

  • アトミック書込み:エージェントは、クラッシュセーフなアトミック パターンを使用して構成ファイルとキー ファイルを書込みます。エージェントは、書込み中にいつ点障害から完全に回復できます。

  • ディスク上のプレーンテキストのシークレットはありません:暗号化を有効にすると、エージェントはバックアップファイル内のすべての認証情報フィールドを暗号化された値に置き換えます。master.key ファイルにはラップされた(暗号化された)キーのみが含まれています。

以下の推奨事項に従って、オートメーション構成の暗号化の配置を強化します。

  • KMIP インフラストラクチャが利用可能な場合は、Atlas Online(KMIP)を優先します。最も強力なセキュリティを提供します。

  • レガシープロトコル経由で KMIP 1.2(デフォルト)を使用します。マスターキーはHVMを離れることはありません。

  • 組織のポリシーごとに、キーを定期的にローテーションします。

  • エージェントの 構成ディレクトリへのファイルシステム アクセスを制限します。

  • ハードウェアの変更または VM の移行前に、 Ops Manager の接続を オフラインモードで確認します。エージェントは、次回のポーリングが成功したときに新しい構成を取得することで自動的に回復します。

次のセクションでは、一般的な問題、強制的なリカバリ手順、エージェントログタグについて説明します。

次の表では、一般的な指標とその可能性のある原因、および解決手順を示しています。

シンボリック
考えられる原因
解決法

エージェントはスタートアップ時にエラー状態になる

ハードウェアまたはマシン ID が変更されました( オフラインモード)

Ops Manager 接続を復元します。エージェントは自動的に回復します。

エージェントはスタートアップ時にエラー状態になる

KMIPサーバーにアクセスできないか、証明書の有効期限が切れています(オンラインモード)

KMIP 接続と証明書の有効性を確認します。必要に応じて、Ops Manager で認証情報を更新します。 openssl s_client を実行して、TLS ハンドシェイクを確認し、証明書の有効期限を確認し、ファイアウォールと DNS 設定を確認します。

ログに「オブジェクトが見つかりませんでした: KEY_ID」と表示

KMIP で使用できない暗号化のキー

次のいずれかのオプションを使用します。

  • KMIP で指定されたキーIDでキーを復元します。

  • MongoDB Ops Manager でキーをローテーションします。

  • master.key を削除し、エージェントを再起動して、Ops Manager から新しい構成を取得し、新しい KMIP キーIDを作成できるようにします。

agent_kmip_connect_failed ログ内

TLS ハンドシェイクは拒否されました

serverCAFile が KMIPサーバーCA と一致していることを確認します。 clientCertificateFile がサーバーによって受け入れられていることを確認します。認証失敗については、 KMIPサーバーログを確認してください。

agent_kmip_operation_failed ログ内

KMIPサーバーが操作を拒否しました

クライアント証明書に必要な権限(作成/暗号化/復号化または作成/取得)があることを確認します。 keyIdentifier のキー UUID が存在し、サーバー上でアクティブ状態であることを確認します。

バックアップ ファイルが更新されない

ファイル権限またはディスク容量が不十分

エージェントユーザーが構成ディレクトリへの書込み (write) アクセス権があることを確認します。

アップグレードまたはダウングレード後に復号に失敗する

暗号化アーティファクトはバージョン制限があります

エージェントは、Ops Manager から自動的に新しい構成を取得します。

エージェントがローカルバックアップを復号化できず、Ops Manager にアクセス可能な場合は、暗号化状態をリセットできます。

1

影響を受けるホストでオートメーションエージェントを停止します。

2

エージェントのバックアップディレクトリから master.key を削除します。このディレクトリは、mms-cluster-config-backup.json を含むものと同じものであり、通常はエージェント構成ファイルの mmsConfigBackup 設定によって構成されます。

3

エージェントを起動します。 Ops Manager から新しい構成を取得し、再暗号化します。

警告

エージェントを起動する前に、Ops Manager がアクセス可能である必要があります。接続がない場合、エージェントはフォールバックする構成がなく、エラー状態になります。

リカバリの一環として暗号化を無効にするには、「 暗号化の無効化 」を参照してください。

次のログタグは、エージェントログ内の暗号化に関連するイベントを識別します。

Tag
レベル
説明

agent_encryption_write_start

INFO

書込み (write)操作が開始されました

agent_encryption_write_complete

DEBUG

書込みが完了しました

agent_decryption_read_start

INFO

読み取り/復号化操作が開始されました

agent_decryption_read_complete

DEBUG

読み取り/復号化が完了しました

agent_dek_cache_hit

DEBUG

キャッシュから提供される暗号化のキー

agent_dek_cache_miss

INFO

キャッシュされていないキー。再生成

agent_encryption_key_rotation

INFO

キーローテーションがトリガーされました

agent_encryption_key_rotation_failure

エラー

キーのローテーションに失敗

agent_encryption_method_transition

INFO

暗号化方式の変更

agent_encryption_dek_wrapped

DEBUG

暗号化のキーのラップ( メソッドを含む)

agent_encryption_dek_unwrapped

DEBUG

暗号化のキーのラップを解除しました( メソッドを含む)

agent_encryption_field_encrypted

DEBUG

フィールドパスの暗号化(パスのみ、値なし)

agent_decryption_field_decrypted

DEBUG

フィールドパスの復号化(パスのみ、値なし)

agent_encryption_failure

エラー

暗号化操作に失敗しました

agent_decryption_failure

エラー

復号化操作が失敗

agent_encryption_unexpected_error

エラー

暗号化サブシステムで予期しないエラーが発生しました

agent_kmip_connect

DEBUG

KMIP TLS 接続を確立しました

agent_kmip_connect_failed

エラー

KMIP TLS 接続に失敗しました(サーバー、ポート、再試行回数を含む)

agent_kmip_operation

DEBUG

KMIP操作が完了しました(操作タイプ、キーID、期間)

agent_kmip_operation_failed

エラー

KMIP操作に失敗しました(操作タイプ、キーID、エラー)

agent_kmip_key_created

INFO

KMIPサーバーで作成された新しいキー(キーID)

agent_kmip_key_reused

DEBUG

既存の KMIP キーが再利用されました(キーID、ソース)

agent_kmip_tls

DEBUG

KMIP TLS 構成(証明書パス、パスワード保護フラグ)

注意

Ops Manager は機密値をログに記録しません。

戻る

スナップショットの暗号化