透過的データ暗号化 (TDE) は、ディスクへの書き込み前にデータを暗号化し、メモリへの読み込み時に復号します。ファイルサイズの増加やアプリケーションの変更は不要です。ApsaraDB for MongoDB コンソールで TDE を有効にすることで、インスタンスデータを保護できます。
前提条件
-
インスタンスのストレージタイプとアーキテクチャが、以下の要件を満たしている必要があります。
-
ローカルディスクインスタンス:レプリカセットとシャードクラスターに対応、データベースバージョン 4.0 または 4.2。
-
クラウドディスクインスタンス:レプリカセットに対応、データベースバージョン 4.2 から 8.0 (すべてのバージョン)。
-
-
インスタンスで WiredTiger ストレージエンジンが使用されている必要があります。
インスタンスがこれらの要件を満たしていない場合は、インスタンス構成を変更してください。
影響
-
TDE を有効にすると、インスタンスが再起動され、一時的な接続中断が発生します。この操作はオフピーク時に実行し、アプリケーションに再接続メカニズムが実装されていることを確認してください。
-
TDE は CPU 使用率を増加させます。
-
暗号化されたコレクションは、物理バックアップを使用して自己管理型データベースに復元することはできません。代わりに論理バックアップを使用してください。論理バックアップを使用して自己管理型データベースにデータを復元するをご参照ください。
考慮事項
-
一度有効にすると、TDE を無効にすることはできません。
-
解放済みの TDE が有効なインスタンスは、リサイクル から復元することはできません。
-
TDE はインスタンスレベルで暗号化を行い、コレクションにのみ適用されます。特定のフィールドを暗号化するには、クライアントサイドフィールドレベル暗号化 (MongoDB 4.2 のみ) を使用してください。
説明特定のコレクションを暗号化から除外する方法については、コレクションを暗号化から除外するをご参照ください。
-
TDE は、有効化後に作成された新しいコレクションのみを暗号化します。既存のコレクションは暗号化されません。
-
KMS が TDE キーを生成および管理します。ApsaraDB for MongoDB は暗号化キーや証明書を提供しません。Key Management Service とはをご参照ください。
-
TDE 有効化後、暗号化キーを変更することはできません。別のキーを使用する場合は、Data Transmission Service (DTS) を使用して、新しいキーが設定された新規インスタンスにデータを移行してください。ApsaraDB for MongoDB インスタンス間でデータを移行するをご参照ください。
-
TDE で使用される KMS キーが常に利用可能であることを確認してください。キーが無効化、削除、または期限切れになると、インスタンスがロックされて使用できなくなり、既存のバックアップも復旧に使用できなくなります。
手順
-
レプリカセットインスタンス または シャードクラスターインスタンス ページに移動します。上部メニューで、リソースグループとリージョンを選択し、対象のインスタンス 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)" } } })
-