TDE (透過的データ暗号化) は、データ I/O をリアルタイムで暗号化および復号します。データをディスクに書き込む前に暗号化し、メモリに読み込むときに復号します。TDE はデータファイルサイズを増加させず、アプリケーションの変更も必要ありません。データセキュリティを強化するために、コンソールで TDE を有効にしてインスタンスデータを暗号化できます。
前提条件
アーキテクチャ:レプリカセットインスタンスまたはシャードクラスターインスタンス。
ストレージエンジン:WiredTiger。
ストレージタイプ:ローカル SSD。
データベースバージョン:4.0 または 4.2。データベースバージョンがこれより古い場合は、データベースのメジャーバージョンをアップグレードできます。
説明TDE を有効にする前に、バージョン 4.0 または 4.2 の従量課金インスタンスを作成して、アプリケーションの互換性をテストできます。テスト完了後、インスタンスをリリースできます。
ご利用のインスタンスがアーキテクチャまたはストレージエンジンの要件を満たしていない場合は、インスタンスの構成を変更できます。
影響
TDE を有効にするとインスタンスが再起動し、一時的な接続中断が発生します。この操作はオフピーク時に実行し、アプリケーションに再接続メカニズムがあることを確認することを推奨します。
TDE を有効にすると、インスタンスの CPU 使用率が増加します。
暗号化されたコレクションは、物理バックアップを使用して自己管理データベースに復元することはできません。このような復元を実行するには、論理バックアップを使用します。詳細については、「論理バックアップを使用して自己管理データベースにデータを復元する」をご参照ください。
注意事項
一度有効にすると、TDE は無効にできません。
TDE が有効になっているリリース済みのインスタンスは、[ごみ箱] から復元できません。
TDE はインスタンスレベルで有効になり、コレクションレベルの暗号化のみをサポートします。フィールドレベルの暗号化については、「クライアントサイドフィールドレベル暗号化」をご参照ください (MongoDB 4.2 インスタンスでのみ利用可能です)。
説明特別なビジネス要件がある場合は、コレクション作成時に暗号化しないように指定できます。詳細については、「暗号化からのコレクションの除外」をご参照ください。
TDE を有効にすると、新しく作成されたコレクションのみが暗号化されます。既存のコレクションは暗号化されません。
Key Management Service (KMS) が、TDE で使用されるキーを生成および管理します。ApsaraDB for MongoDB は、暗号化に必要なキーや証明書を提供しません。
説明現在、サポートされているのはデフォルトの KMS キーのみです。
キーのローテーションはサポートされていません。キーを変更するには、DTS を使用して新しいインスタンスにデータを移行する必要があります。データ移行の詳細については、「ApsaraDB for MongoDB インスタンス間のデータ移行」をご参照ください。
手順
レプリカセットインスタンス または シャードクラスターインスタンス のページに移動します。上部のナビゲーションバーで、対象インスタンスが属するリソースグループとリージョンを選択します。次に、インスタンスを見つけてインスタンス ID をクリックします。
インスタンス詳細ページの左側のナビゲーションウィンドウで、 を選択します。
TDE ステータス: の右側にあるスイッチをオンにします。
TDE の有効化 ダイアログボックスで、キー生成方法を選択します。
自動作成されたキーを使用:システムが生成したキーを使用します。
カスタムキーを使用:ドロップダウンリストからキーを選択します。使用したいキーが存在しない場合は、まずキーを作成してから選択できます。キーの作成方法の詳細については、「キーの作成」をご参照ください。
[OK] をクリックします。
インスタンスのステータスが [TDE を更新中] に変わります。ステータスが [実行中] に戻ると、操作は完了です。
暗号化からのコレクションの除外
TDE を有効にすると、新しく作成されたコレクションはすべてデフォルトで暗号化されます。暗号化せずにコレクションを作成するには、以下の手順に従ってください。
mongo シェルを使用してデータベースに接続します。詳細については、「レプリカセットインスタンスへの接続」または「シャードクラスターインスタンスへの接続」をご参照ください。
次のコマンドを実行して、暗号化されていないコレクションを作成します。
構文:
db.createCollection("<collection_name>",{ storageEngine: { wiredTiger: { configString: "encryption=(name=none)" } } })例:
db.createCollection("customer",{ storageEngine: { wiredTiger: { configString: "encryption=(name=none)" } } })