sql >> データベース >  >> RDS >> Sqlserver

SQLServerデータベースのバックアップ暗号化

    ファイルシステムによってデータベースバックアップファイルとしてバックアップされたデータセキュリティを管理するために、SQLServerはバックアップ暗号化機能を提供します。この記事では、データベースバックアップ用にSQLServerで使用できる暗号化オプションについて説明します。バックアッププロセス中にSQLServerデータベースのバックアップを暗号化するための使用法の詳細、利点、および推奨される方法について詳しく見ていきます。

    データベースバックアップ暗号化とは何ですか?

    データを安全に保つ必要性は劇的に高まっています。データに加えて、データベースのバックアップファイル、特にサーバーファイルシステム上のファイルも保護されていることを確認する必要があります。ネイティブSQLServerバックアップファイル内のデータは、ファイルシステムにプレーンテキストとして保存されます。テキストエディタを使用すると、簡単に読むことができます。
    テーブルで使用されているデータ型によっては、一部のデータが他のデータよりもはるかに読みやすくなっています。次の図は、メモ帳のテキストエディタで開いたバックアップファイルを示しています。

    ご覧のとおり、T-SQLコードは表示されており、読みやすいです。ただし、暗号化を使用してバックアップを作成すると、内部に侵入する機会はありません。

    次の図は、暗号化された同じAdventureWorks2014.bakを示しています。

    SQL Server 2014以降、データベースエンジンは、バックアップファイルの作成中にデータを暗号化できます。バックアップの作成中に、暗号化アルゴリズムと暗号化機能(証明書または非対称キー)を指定できます。バックアップ暗号化機能はセキュリティを向上させ、SQLServer自体を利用できるすべてのドメインで機能します。

    何が必要ですか?

    データベースのバックアップを暗号化するには、暗号化アルゴリズムと暗号化機能を指定する必要があります。サポートされている暗号化オプションは2つあります:

    • 暗号化アルゴリズム:AES_128、AES_192、AES_256、およびTriple_DES_3Key
    • 暗号化:証明書または非対称鍵

    誤って証明書または非対称キーを紛失した場合、バックアップファイルを復元する機会はありません。したがって、証明書または非対称キーを安全な場所に保管することが非常に重要です。

    データベースバックアップの暗号化のメリット

    • データの保護に役立ちます。
    • 透過的データ暗号化(TDE)を使用して暗号化されたデータベースに適用できます。
    • オフサイトバックアップのセキュリティを強化するMicrosoftAzureへのSQLServer管理バックアップによって作成されたバックアップをサポートします。
    • AES256ビットまでの多数の暗号化アルゴリズムをサポートします。これにより、要件を満たすアルゴリズムを選択できます。
    • 暗号化キーを拡張キー管理(EKM)プロバイダーと統合することが可能です。

    システムテーブルの変更

    暗号化されたバックアップの作成中に、一部の情報が MSDBに記録されます システムデータベース:使用される主要なアルゴリズム、暗号化タイプ、暗号化拇印。
    バックアップセット 表には、各バックアップセットの情報が含まれています。バックアップセットには、1回の正常なバックアップ操作のバックアップが含まれています。
    次の列: key_algorithm encryptor_thumprint encryptor_type このDMVには、バックアップが暗号化されているかどうか、暗号化の種類、暗号化の拇印に関する情報が格納されています。

    SELECT TOP 5
        name,
        key_algorithm,
        encryptor_thumbprint,
        encryptor_type
    FROM msdb.dbo.backupset AS backupset with (NOLOCK)
    WHERE type IN ('D', 'I') AND database_name = 'AdventureWorks2014'
    ORDER BY backupset.backup_start_date  DESC
    GO
    

    表示される内容は次のとおりです。

    バックアップセットテーブルの詳細については、次のMSDNドキュメントページを参照してください:バックアップセット(Transact-SQL)

    バックアップメディアセット 表には、各バックアップメディアセットの情報が含まれています。 is_encrypted列は、バックアップが暗号化されているかどうかを示します。 0 –暗号化されていません。1–暗号化されています。最初、この値はNULLに設定されており、暗号化されていないバックアップメディアセットを示します。

    SELECT TOP 5
        media_set_id,
        is_encrypted, 
        is_compressed
    FROM msdb.dbo.backupmediaset AS mediaset with (NOLOCK)
    ORDER BY mediaset.media_set_id DESC
    GO
    

    結果セット:

    データベースバックアップの暗号化方法

    1。 dbForge Studio forSQLServerの助けを借りて

    SSMSを使用してデータベースのバックアップ暗号化を作成することは可能ですが、個人的には、SQL Serverの管理、管理、開発、データレポート、および分析のための強力なIDEであるdbForge Studio forSQLServerを好みます。このIDEは、データベース開発者にとってスイスのナイフのようなものです。このツールは、適切に設計された直感的なGUIにまとめられた重要な機能を提供します。主な機能については、dbForge Studio for SQL Server –概要の紹介ビデオ(04:03分)を参照してください。

    ツールをダウンロードしてインストールしたら、データベース接続を作成する必要があります。

    バックアップ暗号化機能はSQLServer2014で導入されていることに注意してください。SQLServerExpressはバックアップ中の暗号化をサポートしていません。

    1.必要なSQLServerインスタンスに接続したら、データベースエクスプローラーで 、サーバー名をクリックしてサーバーツリーを展開します。

    2.必要なデータベースを右クリックし、[タスク]をポイントして、[バックアップ]をクリックします。 。 [データベースのバックアップ]ダイアログボックスが表示されます。

    接続 リストボックスで、接続名をチェックします。オプションで、リストから別の接続を選択できます。

    3. [次へ]をクリックして、メディアオプションに進みます 。

    バックアップデータベースウィザードの[メディアオプション]ページで既存のバックアップセットオプションに追加することを選択した場合、暗号化オプションは無効になります。新しいメディアセットへのバックアップを選択し、既存のバックアップセットをすべて消去します。
    プロセスを開始する前に、証明書/キーを作成します。データベースのバックアップウィザードを開始する前に作成された証明書または非対称キーがドロップダウンに一覧表示されます。

    [新しいメディアセットにバックアップし、既存のすべてのバックアップセットを消去する]を選択します 新しいバックアップを作成するオプション。 メディアセット名に名前を入力します テキストボックス、およびオプションで、メディアセットの説明でメディアセットを説明します テキストボックス。

    4. [次へ]をクリックして、バックアップオプションに進みます 。

    このページで、[バックアップの暗号化]オプションを選択します。アルゴリズムと証明書または非対称キーを選択します。 バックアップをクリックします 。私の場合、このプロセスには数秒かかります。

    2。 Transact-SQLステートメントの使用

    B ACKUP DATABASEを使用します データベースバックアップとバックアップログを作成するステートメント トランザクションログのバックアップファイルを作成します。

    データベースの完全バックアップ

    このタイプのバックアップは、データベース全体をバックアップします。トランザクションログの一部が含まれているため、データベースの完全バックアップが復元された後、データベース全体を回復できます。

    次のコードは、暗号化された完全なデータベースを作成します 指定された証明書と暗号化アルゴリズムを使用して、提供された場所でバックアップします。

    BACKUP DATABASE AdventureWorks2014
    TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014.bak'
    WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, Full',
        FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 5, COMPRESSION,
    ENCRYPTION
    (
        ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1
    )
    GO
    

    注:暗号化に使用された証明書が一度もバックアップされていない場合、バックアップが完了すると次の警告が発生します。証明書に関連付けられている秘密鍵と一緒に証明書のバックアップを取るようにしてください:

    警告 :データベース暗号化キーの暗号化に使用した証明書がバックアップされていません。証明書と、証明書に関連付けられている秘密鍵をすぐにバックアップする必要があります。証明書が使用できなくなった場合、またはデータベースを別のサーバーに復元または接続する必要がある場合は、証明書と秘密鍵の両方のバックアップが必要です。そうしないと、データベースを開くことができなくなります。

    差分データベースのバックアップ

    このタイプのバックアップを作成している間、データベースまたはファイルのバックアップは、最後の完全バックアップ以降に変更されたデータベースまたはファイルの部分のみで構成されます。また、このタイプのバックアップは通常、完全バックアップよりも少ないスペースで済みます。

    次のコードは、暗号化された差分データベースを作成します 指定された証明書と暗号化アルゴリズムを使用して、指定された場所でバックアップします。

    BACKUP DATABASE AdventureWorks2014
    TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak'
    WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, Differential',
        FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 5,
     COMPRESSION, DIFFERENTIAL,
    ENCRYPTION
    (
        ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1
    )
    GO
    

    データベーストランザクションログのバックアップ

    SQL Serverデータベースには、データファイルに加えて、すべてのトランザクションと各トランザクションによって行われたデータベースの変更を記録する1つ以上のトランザクションログファイルが含まれています。トランザクション情報は、データベースリカバリモードがフルに設定されているデータベースでのみ収集されます。 回復または一括ログ 回復。

    次のコードは、データベーストランザクションログを暗号化して作成します 指定された証明書と暗号化アルゴリズムを使用して、指定された場所でバックアップします。

    BACKUP LOG AdventureWorks2014
    TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014_LOG.bak'
    WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, TLog',
        FORMAT, INIT, SKIP, STATS = 5, COMPRESSION, ENCRYPTION
    (
        ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1
    )
    GO
    

    3。 PowerShellの使用

    SQL Server 2014では、WindowsPowershellを使用してデータベースをバックアップできます。次のコードは、暗号化オプションを作成し、それをBackup-SqlDatabaseコマンドレットのパラメーター値として使用します。

    $encryptionOption=New-SqlBackupEncryptionOption –Algorithm Aes256 –EncryptorType ServerCertificate –EncryptorName “Cert1”
    Backup-SqlDatabase –ServerInstance Server_name –Database “AdventureWorks2014” –BackupFile “D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak” –CompressionOption On –EncryptionOption $encryptionOption
    

    上記のアプローチを比較すると、 dbForge Studio for SQL Server などの適切なツールがあれば、暗号化されたデータベースバックアップの作成が非常に簡単な作業であることは間違いありません。 Devartから。

    追加の読み物

    私の友人であるPinalDave– SQL Serverテクノロジー愛好家、独立コンサルタント、さまざまなSQL Serverブックの著者、およびPluralsightコースは、優れた記事を書いています。SQLSERVER –バックアップ暗号化の実用的な使用


    1. 64ビットマシンで32ビットモードでOracleClientを実行する

    2. SQLiteでワードラップを有効にする2つの方法

    3. Datetimeを使用して文字列として保存された日付を比較する

    4. foreach%dopar%+ RPostgreSQL