Amazon Web Services ブログ
暗号化技術を使用して個人データを保護しながら、Amazon Aurora の MySQL 互換版に移行する
AWS ではセキュリティが最優先です。また、お客様にとってもこれは同じことです。私たちは個人データを保護するために膨大な量のリソースを使用し、当社のお客様にとってデータの保護が容易になるよう継続的に機能強化を図っています。Amazon Aurora の MySQL 互換版を含め、AWS のサービスはすべて、EU の一般データ保護規則 (GDPR) に準拠しています。 詳細については、Amazon のウェブサイトで一般データ保護規則 (GDPR) センターを参照してください。
Amazon の主要データストレージと処理サービスの 1 つである、Amazon Aurora の MySQL 互換版では、幅広い暗号化とデータアクセスコントロールオプションを提供しています。これらはこうしたサービス上で保存した個人データを保護しやすいように設計されています。データ保護の責任は現在進行中の運用に限られたものではなく、データの移動や移行といったアクティビティにも伴います。
今日のお客様は個人データの保護方法に大きな関心を寄せており、彼らが保存および処理するデータにも目を配っています。この結果、暗号化されたデータベースへデータを移行したり、データの転送時に暗号化形式を使用したりといった決定を下すことが増えています。このブログ記事では、Amazon Aurora の MySQL 互換版と安全な移行を実行する様々なパターンと、それを可能にするサービス機能についてご紹介します。
Amazon Aurora の MySQL 互換版の暗号化データストレージと処理機能
Amazon Aurora の MySQL 互換版では、次に示すように、お客様が暗号化技術を使用して個人データを保存および処理できるようにするいくつかの機能を提供しています。
- Amazon Aurora では AWS Key Management Service (AWS KMS) を通じて管理するキーを使用してデータベースを暗号化することが可能です。Amazon Aurora データベースで暗号化が有効になると、保存されているデータ、自動化されたバックアップ、スナップショットが暗号化されます。
- Amazon Aurora の MySQL 互換版を使用することで、データベースインスタンスに暗号化された接続を確立でき、またクライアントに暗号化された接続を使用するよう強制することもできます。
- 復元時には自分の望む AWS KMS マスターキーを指定して、非暗号化クラスターのスナップショットから暗号化された Aurora クラスターを作成することもできます。また、KMS マスターキーをコピーし、提供することで、クラスタースナップショットを暗号化することもできます。
- MySQL 5.5 と 5.6 版を実行するソースデータベースから KMS による暗号化が実行される、Amazon S3 ホストのデータベースバックアップファイルから Aurora クラスターを復元できます。
- 移行中のダウンタイムを最小化するために、外部の MySQL ソースデータベースから Aurora クラスターへ binary logs (binlogs) を使用して暗号化されたレプリケーションを構成できます。
- また、Amazon RDS MySQL DB インスタンスの暗号化された Aurora クラスターリードレプリケーションを作成することもできます。このユースケースでは、RDS MySQL ソースインスタンスと Aurora クラスター間の論理的、binary log レプリケーショントラフィックは、TLS を使用して自動的に暗号化されます。
- AWS Database Migration Service (AWS DMS) は移動中と保存中の両方でデータの安全を確保するメカニズムを複数提供しています。
これらの機能を併用することで、データの転送中もデータを保護し、宛先で保存中のデータを暗号化する一方、Amazon Aurora の MySQL 互換版にデータを移行することができます。ソースデータベースも暗号化されている場合は、データ移行時に完全なるエンドツーエンド暗号化を実現できます。これらの機能を使用すると、レプリケーションを使用して差分を取り戻すことにより最小のダウンタイムで移行を実行可能です。
共通の暗号化移行パターン
前述の機能に基づいて使用できる移行メカニズムは複数あります。
前述のワークフローで紹介した方法は、暗号化するかしないかを決定することに似ています。一部のケースでは暗号化を使用することで、追加的なステップが増えることがあります。しかし、より重要なことは開始点、つまり、移行元です。
1.自己管理型の MySQL データベースからの移行
外部から AWS であるか、Amazon EC2 上でホストされているものかに関係なく、自己管理型の MySQL データベースから移行する場合、物理データベースバックアップファイルを使用するようお勧めします。私たちがこの手法をお勧めするのは、通常、論理エクスポートやインポートを使用するよりも高速であるためです。
私たちは Amazon S3 にアップロードされた XtraBackup ファイルを使用する移行をサポートします。バックアップファイルが生成されると、TLS 暗号化データ転送を使用して、S3 にファイルをアップロードできます。その後、サーバー側の暗号化 (SSE) を使用してそれらを暗号化された状態で S3 バケットに保存します。そこから、S3 オブジェクトに正しいアクセス許可を提供し、関連する KMS 暗号化キーへアクセスするのであれば、Amazon Aurora は新しいクラスターにバックアップを保存できます。
Amazon S3 ベースのバックアップファイルを使った詳細な移行プロセスは、ドキュメントでご覧いただけます。
現時点では、XtraBackup を使用した MySQL 5.7 以降を実行するソースデータベースからの移行に対するマネージドエクスペリエンスは提供されていません。これらのユースケースでは、または、他の理由によりバックアップファイルを使用できない場合には、論理データベースエクスポートを使用し、新しい Aurora クラスターにインポートします。
初期のデータロードの実行方法に関係なく、ダウンタイムを最小限に抑えるには、暗号化 binary log レプリケーションを有効化する必要があります。このアプローチを使用することで、切り替え前にソースで起こった変更を Aurora クラスターで取り戻せるようになります。これを実行するために、ソース MySQL データベースを binary log レプリケーション用に再構成し、Aurora がソースに安全に接続できるようにするキーを生成する必要があります。ソースデータベースで主要な素材を生成したあとは、次のストアドプロシージャを使用してそれを Aurora クラスターへインポートできます。
2.MySQL または他のデータベースエンジンからの AWS DMS を使用した移行
AWS DMS は、データベースを Amazon Aurora に迅速かつ安全に移行するのに役立ちます。ソースデータベースは移行中も完全に動作し続けるため、データベースに依存するアプリケーションのダウンタイムを最小限に抑えることができます。AWS DMS は、最も広く使用されている商用データベースとオープンソースデータベースからデータを移行できます。また、前述のように、物理バックアップや自己管理型のデータベースエクスポートを使用できない場合は、MySQL データベースから移行する代わりのアプローチとして、AWS DMS を使用することもできます。
AWS DMS での作業には、暗号化接続を使用するため、また、変更されたデータを取り戻せるようにするために、ソースデータベースエンジンに適切な機能を有効かする構成が必要です。
DMS を使用するには、ソースとターゲットデータベースに必要な SSL 証明書をインポートします。その後、ソースデータベースにソースエンドポイントとターゲットエンドポイントと、新しい Aurora クラスターをそれぞれ作成します。接続用に関連する SSL モードを有効化し、レプリケーションストレージの暗号化に使用する KMS マスターキーを構成します。
暗号化固有の設定を超えて、このワークフローではほとんどの普及したソースデータベースエンジンで利用できる、Amazon 文書の AWS Database Migration Service のステップバイステップチュートリアルに従います。
3.Amazon RDS MySQL DB インスタンスからの移行
Amazon RDS MySQL DB インスタンスから移動する暗号化された移行ワークフローは、ソースが暗号化されているかに関係なく、管理はシンプルです。AWS マネジメントコンソールで数回クリックするだけで、ソースデータベースのリードレプリカとして機能する Amazon Aurora クラスターを作成できます。代わりに、AWS CLI でコマンドを使用するか、SDK を使用して Amazon RDS API を呼び出す方法でも、これを実行できます。プロビジョニングプロセスの一部で、リードレプリカを暗号化するよう AWS に指定することもできます。ソースの Amazon RDS MySQL DB インスタンスからの Binary log レプリケーションは、TLS 暗号化を自動的に使用するよう構成されています。
次のステップでは、AWS マネジメントコンソールを使用するプロセスについて説明します。
- RDS インスタンスリストから、必要な MySQL DB インスタンスを選択し、[インスタンスの操作] を選択し、[Create Aurora read replica] (Aurora リードレプリカの作成) を選択します。
- 構成画面で Encryption (暗号化) セクションの暗号化が有効になっていること、またご使用の環境に固有の他のパラメータが設定されていることを確認してください。使用したい KMS マスターキーを選択し、構成画面の下部で、[Create read replica] (リードレプリカの作成) を選択します。
- レプリカが作成され、ソースとの差分を取り戻したら、切り替えの準備は完了です。Aurora リードレプリカをスタンドアロンのクラスターにプロモートし、使用を開始します。
4.暗号化されていない Amazon Aurora データベースクラスターからの移行
Amazon Aurora データベースを既に運用中で、データセキュリティ強化のため、あるいは、コンプライアンス要件を満たすためにデータベースクラスターの暗号化が必要なときは、スナップショットを使用してこれを実現できます。データベースクラスターの手動スナップショットを作成し、そのスナップショットをベースにした KMS マスターキーを使用し、暗号化を有効にした状態で新しいデータベースをプロビジョニングします。
また、ドキュメントの詳細な手順に従って、2 つの Aurora クラスター間で手動で binlog レプリケーションをセットアップすることもできます。しかし、このレプリケーション構成では暗号化はサポートされていません。
まとめ
データベースワークロードを暗号化したり、暗号化された Amazon Aurora データベースターゲットに移行したりするために使用可能な移行パスがいくつかあります。機密性の高いデータを含むワークロードでは、移行プロセスのエンドツーエンドで、データの暗号化を実現することができます。
最高の結果を得るために、選択した移行プロセス全体をテストし、移行ステップに問題が生じたときにロールバックできる方法を用意しておく必要があります。Amazon Aurora の MySQL 互換版への移行ワークロードに関するより総合的なガイドについては、Amazon Aurora Migration Handbook を参照してください。
著者について
Vlad Vlasceanu はアマゾン ウェブ サービスのスペシャリストソリューションアーキテクトです。 AWS の顧客と協力してデータベースプロジェクトに関する助言や技術支援を行い、AWS を使用する場面でソリューションの価値を向上させる手助けをしています。
Chayan Biswas は、アマゾン ウェブ サービスのプロダクトマネージャーです。