このトピックでは、ApsaraDB RDS for MySQLインスタンスのバックアップ暗号化機能を有効にする方法について説明します。 バックアップファイルは、Percona XtraBackupユーティリティを使用して暗号化されます。 このユーティリティにより、アプリケーションを変更する必要がなくなります。 暗号化されたバックアップファイルを使用する場合は、バックアップファイルをダウンロードする必要があります。 次に、解凍時にバックアップファイルを復号化できます。
前提条件
RDSインスタンスは次の要件を満たしています。
RDSインスタンスは、MySQL 8.0、MySQL 5.7、またはMySQL5.6を実行します。
RDSインスタンスはRDS High-availability Editionを実行します。
RDSインスタンスはローカルディスクを使用しています。
キー管理サービス (KMS) が有効化されています。 詳細については、「専用KMSインスタンスの購入」をご参照ください。
背景情報
バックアップ暗号化に使用されるキーは、KMSによって作成および管理されます。 ApsaraDB RDSは、バックアップ暗号化に必要なキーまたは証明書を提供しません。 自動生成されたキーまたはカスタムキーを使用できます。
カスタムキーを使用する場合は、まずサービスにリンクされたロールを作成する必要があります。 ApsaraDB RDSは、サービスにリンクされたロールを使用して、KMSからキーとキーの属性およびエイリアスを取得します。 これにより、ApsaraDB RDSはApsaraDB RDSコンソールにキーを表示できます。 カスタムキーを使用してバックアップファイルを暗号化した後、ApsaraDB RDSは関連する暗号化情報も表示できます。 詳細については、「サービスにリンクされたロール」をご参照ください。
バックアップ暗号化機能を有効にすると、ApsaraDB RDSは選択したキーをマークします。 次に、ApsaraDB RDSはキーを使用して、サービスにリンクされたロールに基づいてバックアップファイルを暗号化します。
使用上の注意
バックアップ暗号化機能を有効にすると、無効にすることはできません。
バックアップ暗号化機能を有効にすると、キーは変更できません。
バックアップ暗号化機能を有効にすると、新しいバックアップファイルのみが暗号化されます。 既存のバックアップファイルは暗号化されません。
バックアップ暗号化機能を有効にした後、RDSインスタンスのデータをオンプレミスデータベースに復元する場合は、バックアップファイルをダウンロードした後、RDSインスタンスのバックアップファイルを復号化する必要があります。 詳細については、「バックアップファイルの復号化」をご参照ください。
説明ApsaraDB RDSコンソールを使用してバックアップファイルからRDSインスタンスのデータを直接復元する場合、バックアップファイルを復号化する必要はありません。 バックエンドは復元を実行する前に、バックアップファイルを自動的に復号化します。 詳細については、「完全データの復元」をご参照ください。
バックアップ暗号化に既存のカスタムキーを使用する場合は、次の項目に注意してください。
キーを無効にするか、キーを削除する計画を設定するか、キーマテリアルを削除すると、キーは使用できなくなります。 この場合、O&M操作で、利用できないキーを使用して暗号化されたバックアップファイルが必要な場合、O&M操作は失敗します。 これにより、インスタンスの可用性が低下する可能性があります。 unavailableキーを使用して暗号化されたバックアップファイルからデータを復元すると、データの復元も失敗します。
Alibaba Cloudアカウントまたは次の権限を持つRAMユーザーを使用する必要があります。
{ "Version": "1", "Statement": [ { "Action": [ "ram:CreateServiceLinkedRole" ], "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "backupencryption.rds.aliyuncs.com" } } }, { "Action": [ "kms:ListResourceTags" 、 「kms:TagResource」 ], "Effect": "Allow", "Resource": [ "acs:kms:*:*:*" ] } ] }
説明RAMコンソールを使用して、権限を設定し、RAMユーザーに権限を付与できます。 詳細については、「ApsaraDB RDSインスタンスの管理権限付与」をご参照ください。
バックアップ暗号化機能の有効化
- [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、[バックアップと復元] をクリックします。
On theバックアップと復元ページをクリックし、バックアップ戦略タブをクリックします。
クリック編集で、バックアップ暗号化設定オンにするセクションバックアップ暗号化ステータス.
では、バックアップセット暗号化情報ダイアログボックスの値を選択します。バックアップマスターキーパラメーターをクリックし、OK.
自動生成キーの使用
このオプションを選択すると、Alibaba Cloudはバックアップファイルの暗号化に使用できるキーを生成します。
既存のカスタムキーの使用
このオプションを選択した場合、KMSを使用して作成されたキーが使用されます。 キーが存在しない場合は、KMSを使用してキーを作成できます。 詳細については、「CMKの作成」をご参照ください。
説明KMSを使用してカスタムキーを作成するのが初めての場合は、プロンプトに従って承認を取得する必要があります。
バックアップ暗号化機能を有効にすると、RDSインスタンスのバックアップファイルが暗号化されます。 Alibaba Cloudでこれらのバックアップファイルを使用する場合、これらのバックアップファイルを手動で復号化する必要はありません。 バックエンドは、データの復元などの操作を実行する前に、これらのバックアップファイルを自動的に復号します。 これらのバックアップファイルをコンピュータにダウンロードする場合は、これらのバックアップファイルを手動で復号化する必要があります。 これらのバックアップファイルを復号化する方法の詳細については、「バックアップファイルの復号化」をご参照ください。
バックアップファイルの復号化
このセクションでは、例としてUbuntu 16.04を使用してバックアップファイルを復号化する方法を示します。
前提条件
Percona XtraBackupがインストールされています。 Percona XtraBackupをインストールしない場合は、「Percona XtraBackup 2.4のインストール」または「Percona XtraBackup 8.0の概要」に記載されている手順に従って、Percona XtraBackupをインストールします。
qpress解凍ツールがインストールされています。 ツールをインストールしない場合は、次のコマンドを実行します。
wget "http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/183466/cn_zh/1608011575185/qpress-11-linux-x64.tar" tar xvf qpress-11-linux-x64.tar chmod 775 qpress cp qpress /usr/bin
Python 3がインストールされています。
手順
バックアップファイルの暗号化に使用される暗号文とアルゴリズムを取得します。
[インスタンス] ページへ移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
表示されるページの左側のナビゲーションウィンドウで、[バックアップと復元] をクリックします。
表示されるページで、[基本バックアップ] タブをクリックし、[データバックアップ] タブをクリックします。
バックアップセットの [操作] 列のアイコンをクリックし、[暗号化情報の表示] をクリックして暗号文と暗号化アルゴリズムを取得します。
Decrypt操作を呼び出し、CiphertextBlobパラメーターを手順1で取得した暗号文に設定して、Plaintextパラメーターの値を取得します。 値はBase64-encodedバイナリ文字列です。
Base64を使用してPlaintextパラメーターの値をデコードし、バイナリ文字列の各バイナリ値を16進値に変換します。 その後、パスワードを取得できます。 このセクションでは、Python 3コードを使用してこの操作を実装します。
CLIで
vi decrypt.py
コマンドを実行して、viエディターを開きます。キーボードの
i
キーを押して編集モードを有効にし、次の内容を入力し、ESC
キーを押してから、:wq
と入力して変更を保存し、編集モードを無効にします。インポートbase64 binasciiのインポート plaintex='S14dTbl6i4Qo ******** '# 前の手順で取得したプレーンテキストパラメータの値を単一引用符 ('') で入力します。 password = binascii.b2a_hex(base64.b64decode(plaintex)) # 復号化のパスワードを取得し、パスワードパラメーターを取得した値に設定します。 print(str(password, 'utf-8 ')) # パスワードを文字列として画面に印刷します。
CLIで
python decrypt.py
コマンドを実行すると、復号化のパスワードが画面に表示されます。 例:4b5e1d4db97a ********************
暗号化されたバックアップデータをダウンロードし、データを復号化します。
バックアップデータをコンピュータにダウンロードします。 詳細については、「ApsaraDB RDS For MySQLインスタンスのデータを物理バックアップファイルから自己管理型MySQLデータベースに復元する」をご参照ください。
CLIで次のコマンドを実行して、バックアップデータを保存するディレクトリ (
/home/mysql/data
など) を作成します。mkdir /home/mysql/data
物理バックアップパッケージを解凍します。 物理バックアップパッケージの解凍に使用されるコマンドは、パッケージ名の拡張子によって異なります。
バックアップファイルの種類
解凍に使用されるコマンド
.tar.gz
tar -izxvf test1.tar.gz -C /home/mysql/data
.xb.gz
gzip -d -c test1.xb.gz | xbstream -x -v -C /home/mysql/data
_qp.xb
## 物理バックアップファイルを解凍します。 cat test1_qp.xb | xbstream -x -v -C /home/mysql/data ## 物理バックアップファイルを解凍します。 ### RDSインスタンスがMySQL 5.6またはMySQL 5.7を実行する場合は、次のコマンドを実行します。innobackupex -- 解凍 -- remove-original /home/mysql/data ### RDSインスタンスがMySQL 8.0を実行する場合は、次のコマンドを実行します。xtraabackup -- 解凍 -- remove-original -- target-dir=/home/mysql/data
_xb.qp
qpress -do test1_xb.qp | xbstream -x -v -C /home/mysql/data
解凍後、すべてのデータの接尾辞は
. xbcrypt
. サフィックスは、データが暗号化されていることを示します。次のコマンドを実行してデータを復号します。
xtraabackup -- 解凍 -- remove-original -- decrypt=AES256 -- encrypt-key=4b5e1d4db97a ******************** -- target-dir=/home/mysql/data
上記のコマンドを実行した後、
. xbcrypt
バックアップファイルのサフィックスが消え、バックアップファイルが解読されます。