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