オートメーション構成の暗号化は、オートメーションエージェントの ローカルバックアップ構成ファイル内の機密認証情報を保護します。エージェントがクラスター構成のバックアップをディスクに保存する場合、パスワードや認証キーを含む機密フィールドをプレーンテキストで記述するのではなく、AES-256-GCM を使用して暗号化します。
この機能により、組織は PCI-DSS、HIPAA、SOC 2 などのフレームワークのコンプライアンス要件を満たすことができます。
暗号化はデフォルトで無効になっています。この機能を明示的に有効にするまで、既存の配置は暗号化されないままになります。
暗号化メソッド
Ops Manager は、オートメーション構成の 3 つの暗号化方法をサポートしています。
方式 | に最適 | キー暗号化のキー(KEK)ソース |
|---|---|---|
オンライン(KMIP) | KMIP インフラストラクチャがある環境 | カスタマー管理 KMIPサーバー |
オフライン | 空の環境またはスタンドアロン環境 | マシンが生成したキー |
default | 自動コンプライアンス調整 | 保管時の暗号化設定に従います |
オンライン(KMIP)
Tip
KMIP インフラストラクチャが利用可能な場合は、オンライン( KMIP )モードを使用します。マスターキーがHAMの外部に存在しないため、最も強力なセキュリティを提供します。
オンラインモードは、KMIP インフラストラクチャがある環境に最適です。マスターキーは外部の KMIP 互換 H SMP にあり、ディスクにかかることはありません。別のブートストラップ キーによって KMIP 証明書の認証情報がローカルに保護され、無人再起動が可能になります。
注意
このメソッドには既存の KMIP 互換サーバーが必要です。 MongoDB Enterprise Advanced の security.kmip.* 構成に一致するクライアント証明書(mTLS)認証 を構成する必要があります。
オンラインモードを使用するには、encryptionMethod を ONLINE_KMS に設定し、KMIPサーバーの詳細を指定します。
Parameter | 説明 | 必須 |
|---|---|---|
| KMIPサーバーのホスト名またはIP | はい |
| KMIPサーバーポート。デフォルト: | No |
| CA 証明書パス(Unix) | はい |
| CA 証明書パス(Windows) | 条件付き |
| クライアント証明書パス(Unix) | はい |
| クライアント証明書パス(Windows) | 条件付き |
| クライアント証明書のパスワード( PEM が暗号化されている場合) | No |
| KMIPサーバー上の既存のキーの UUID 。空の場合、エージェントは新しいキーを自動的に作成します。 | No |
| 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モード | 必要な操作 |
|---|---|
デフォルト(KMIP 1.2) | 対称キーの作成、暗号化、復号化 |
レガシー( | 対称キーの作成、取得 |
keyIdentifier を指定する場合、 作成 権限は必要ありません。 KMIPサーバーのドキュメントを参照して、クライアント証明書に対する適切な権限を設定します。
オフライン
オフラインモードは、航空会社またはスタンドアロン環境に最適です。エージェントは、カスタマーから提供された UUID と物理マシン パラメーターから暗号化のキーを生成します。このメソッドでは外部依存関係は必要ありません。
オフラインモードを使用するには、encryptionMethod を OFFLINE_SOFTWARE に設定し、次のパラメータを指定します。
Parameter | 説明 | 必須 |
|---|---|---|
| キーの推論に使用される UUID 。ローテーション トリガーとして機能します。 | はい |
動的 Salt UUID
dynamicSalt は、暗号化されたランダムな UUID で、キー生成プロセスへの追加入力として機能します。
Ops Manager UI: Generateをクリックすると、新しい UUID が自動的に生成されます。
パブリックAPI: 暗号化されたランダムな UUID を提供します(バージョン4 )。安全なランダムジェネレーターを使用します。予測可能な UUID 、連続 UUID 、またはハードコードされた UUID を避けます。
動的ソルトを新しい UUID に変更すると、 キーの再削除 がトリガーされます。これは オフラインモードのプライマリ ローテーション メカニズムです。
構成スキーマ
{ "configEncryption": { "encryptionMethod": "OFFLINE_SOFTWARE", "dynamicSalt": "<UUID>" } }
default
配置内のいずれかのプロセスで保管時の暗号化(security.enableEncryption)が有効になっている場合、オフラインの暗号化は明示的な構成なしで自動的に有効化されます。そうしないと、構成は暗号化されないままになります。
注意
デフォルトモードでは、手動キーのローテーションはサポートされていません。
暗号化の設定
Ops Manager UIまたは パブリックAPIを使用して、オートメーション構成の暗号化を構成できます。
Ops Manager UI経由
Ops Manager でプロジェクトレベルで暗号化を構成します。
選択した方法の必須フィールドに入力します。
フィールドの説明については、「 Atlas Online(KMIP) 」または「 オフライン 」を参照してください。
パブリックAPI経由
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コード | 説明 | ノート |
|---|---|---|
| 配置案として保存された構成。 | 空のJSONオブジェクトを返します。 |
|
|
|
|
| プロジェクトが外部で管理されるロックによって制限されている場合に返されます。 |
暗号化を無効にする
オートメーション構成の暗号化を無効にするには、暗号化方法を デフォルト に設定します。
注意
プロジェクト内のどの配置でも保存時の暗号化が使用されていない場合、この変更を配置すると暗号化が無効になります。
暗号化されたフィールド
機密フィールドのみが暗号化されます。ポート、ログ、トポロジーなどの機密性のない運用データはプレーンテキストのままになります。
カテゴリ | フィールド |
|---|---|
認証 | auth.keyauth.newKeyauth.autoPwdauth.newAutoPwdauth.autoKerberosWindowsPassword |
ユーザー認証情報 | auth.usersWanted.[].initPwdauth.usersWanted.[].scramSha1Creds.saltauth.usersWanted.[].scramSha1Creds.storedKeyauth.usersWanted.[].scramSha1Creds.serverKeyauth.usersWanted.[].scramSha256Creds.saltauth.usersWanted.[].scramSha256Creds.storedKeyauth.usersWanted.[].scramSha256Creds.serverKey |
TLS |
|
LDAP | ldap.bindQueryPasswordldap.newBindQueryPassword |
Prometheus | prometheus.passwordprometheus.passwordHashprometheus.passwordSaltprometheus.tlsPemPassword |
BI Connector |
|
暗号化プロバイダー | encryptionProviders.awsKms.accessKeyIdencryptionProviders.awsKms.secretAccessKeyencryptionProviders.awsKms.sessionTokenencryptionProviders.azureKeyVault.clientIdencryptionProviders.azureKeyVault.tenantIdencryptionProviders.azureKeyVault.secretencryptionProviders.googleCloudKMS.serviceAccountKey |
設定の暗号化 |
|
ファイル アーティファクト
このエージェントは、設定されたバックアップディレクトリに 2 つのファイルを保存します。エージェントユーザーには、このディレクトリへの読み取り/書込みアクセス権が必要です。
ファイル | 説明 | 権限(Unix / Windows) |
|---|---|---|
| 機密フィールドがインラインで暗号化されたクラスター構成 |
|
| ラップされた暗号化のキー(JSON) |
|
エージェントはアトミック パターンを使用してファイルを書込みます( 一時ファイルに書込み、その後名前を変更します)。エージェントは、書込み中にクラッシュが発生した場合に一貫したロールバックを確保するために、キーファイルの前に構成ファイルを保持します。
警告
これらのファイルは変更しないでください。 Ops Manager が到達不能な場合に、エージェントはこれらを使用して再起動から回復します。
キー ローテーション
エージェントは、手動と自動のキー ローテーションの両方をサポートします。
手動ローテーション
暗号化のキーを手動でローテーションするには、次の trigger を使用します。
モード | トリガーする |
|---|---|
オンライン(KMIP) | Ops Manager で KMIP 構成のプロパティを更新します。 |
オフライン | Ops Manager で新しい動的 Salted UUID を生成する |
default | 最初にオンラインまたはオフラインモードに切り替え |
自動ローテーション
エージェントは、次の場合に暗号化キーを自動的にローテーションします。
エージェントプロセスが再起動します。
エージェントのバージョンの変更(アップグレードまたはダウングレード)。
ローテーションの場合
次の状況でキーをローテーションします。
キーの侵害の疑い
組織のセキュリティ ポリシーごとに予定されたローテーション
インフラストラクチャへのアクセスに関連する担当者の変更
Considerations
次の条件は、デプロイメントのオートメーション構成の暗号化に影響する可能性があります。
ハードウェアの変更:ハードウェアを置き換えるか、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 で認証情報を更新します。 |
ログに「オブジェクトが見つかりませんでした: KEY_ID」と表示 | KMIP で使用できない暗号化のキー | 次のいずれかのオプションを使用します。
|
| TLS ハンドシェイクは拒否されました |
|
| KMIPサーバーが操作を拒否しました | クライアント証明書に必要な権限(作成/暗号化/復号化または作成/取得)があることを確認します。 |
バックアップ ファイルが更新されない | ファイル権限またはディスク容量が不十分 | エージェントユーザーが構成ディレクトリへの書込み (write) アクセス権があることを確認します。 |
アップグレードまたはダウングレード後に復号に失敗する | 暗号化アーティファクトはバージョン制限があります | エージェントは、Ops Manager から自動的に新しい構成を取得します。 |
強制された回復
エージェントがローカルバックアップを復号化できず、Ops Manager にアクセス可能な場合は、暗号化状態をリセットできます。
警告
エージェントを起動する前に、Ops Manager がアクセス可能である必要があります。接続がない場合、エージェントはフォールバックする構成がなく、エラー状態になります。
リカバリの一環として暗号化を無効にするには、「 暗号化の無効化 」を参照してください。
Log Tags
次のログタグは、エージェントログ内の暗号化に関連するイベントを識別します。
Tag | レベル | 説明 |
|---|---|---|
| INFO | 書込み (write)操作が開始されました |
| DEBUG | 書込みが完了しました |
| INFO | 読み取り/復号化操作が開始されました |
| DEBUG | 読み取り/復号化が完了しました |
| DEBUG | キャッシュから提供される暗号化のキー |
| INFO | キャッシュされていないキー。再生成 |
| INFO | キーローテーションがトリガーされました |
| エラー | キーのローテーションに失敗 |
| INFO | 暗号化方式の変更 |
| DEBUG | 暗号化のキーのラップ( メソッドを含む) |
| DEBUG | 暗号化のキーのラップを解除しました( メソッドを含む) |
| DEBUG | フィールドパスの暗号化(パスのみ、値なし) |
| DEBUG | フィールドパスの復号化(パスのみ、値なし) |
| エラー | 暗号化操作に失敗しました |
| エラー | 復号化操作が失敗 |
| エラー | 暗号化サブシステムで予期しないエラーが発生しました |
| DEBUG | KMIP TLS 接続を確立しました |
| エラー | KMIP TLS 接続に失敗しました(サーバー、ポート、再試行回数を含む) |
| DEBUG | KMIP操作が完了しました(操作タイプ、キーID、期間) |
| エラー | KMIP操作に失敗しました(操作タイプ、キーID、エラー) |
| INFO | KMIPサーバーで作成された新しいキー(キーID) |
| DEBUG | 既存の KMIP キーが再利用されました(キーID、ソース) |
| DEBUG | KMIP TLS 構成(証明書パス、パスワード保護フラグ) |
注意
Ops Manager は機密値をログに記録しません。