Amazon Web Services ブログ
AWS Backup によるデータレイク保護のベストプラクティス
このブログは 2023 年 6 月 6 日に Brian Benscoter (Pricipal Solutions Architect) によって執筆された内容を日本語化したものです。原文はこちらを参照してください。
Amazon Simple Storage Service (Amazon S3) で構築したデータレイクは、より深いインサイトを得るための最新の分析アプローチに必要な可用性、俊敏性、柔軟性を組織に提供します。これらの Amazon S3 バケットに保存されている機密情報やビジネス上重要な情報を保護することは、組織にとって最優先事項です。 AWS Backup for Amazon S3 を使用すると、Amazon S3 を利用したデータレイク内の重要なデータのバックアップとリカバリを簡単に一元的に自動化できます。
このブログでは、AWS Backup を使用して Amazon S3 で構成したデータレイクに格納されたデータを保護するためのベストプラクティスについて説明します。まず、データレイクのユーザーのペルソナと、AWS Backup for Amazon S3 が Amazon S3 のネイティブ機能と一致する箇所を確認します。次に、AWS Backup を使用して保護する重要なデータを特定し、保護されたデータへの安全なアクセスを確立する方法について説明します。最後に、重要なデータを確実に保護するための監査の重要性についても説明します。このブログで紹介する情報は、Amazon S3 を用いたデータレイクを保護するための AWS Backup ベースのソリューションを設計する際に役立つ、人員、コスト、セキュリティ、ガバナンスの考慮事項に焦点を当てています。
アーキテクチャ
図 1 は、Amazon S3 で構築したデータレイクを保護するための AWS Backup アーキテクチャを示しています。このアーキテクチャは、「Data Protection Reference Architectures with AWS Backup」で詳述されているパターンに従い、AWS Backup のボールトロックを使用して改変不可なバックアップを作成します。このアーキテクチャには、以下のセクションで説明するデータレイク固有の構成が適用されます。
図 1: Amazon S3 で構築したデータレイクの AWS Backup アーキテクチャ
データレイクユーザーのペルソナと AWS Backup
一般的なデータレイク環境には、データレイク管理者、データエンジニア、ストレージ管理者、バックアップ管理者など、複数のユーザーのペルソナが含まれる場合があります。データレイクに必要な Amazon S3 の設定と管理は、ストレージ管理者に任されています。組織によっては、ストレージ管理者が独立した役割を担っている場合もあれば、アプリケーションの所有者や他のグループにその責任が及ぶ場合もあります。ストレージ管理者は、バケットにあるデータを保護するために次のような Amazon S3 の機能を設定できます:
- Amazon S3 バージョニングにより、Amazon S3 バケットに保存されたすべてのオブジェクトのすべてのバージョンを保存、取得、復元できます。
- 同一リージョンレプリケーションまたはクロスリージョンレプリケーションにより、同じ AWS リージョンまたは異なるリージョンの Amazon S3 バケットにオブジェクトを自動的かつ非同期的にコピーします。
- Amazon S3 オブジェクトロックにより、オブジェクトが一定期間または無期限に削除または上書きされるのを防ぎます。
データ保護に必要な機能の設定は、重要なデータを含む Amazon S3 バケットごとに行う必要があります。Amazon S3 オブジェクトロックなどの一部の機能は、バケット作成時に設定する必要があり、作成後に適用することはできません。
バックアップ管理者は、複数の AWS サービスにわたるアプリケーションのバックアップ、復元、および関連するコンプライアンスを担当します。組織は、中核となるデータレイクチームとは別にバックアップ管理者の役割を定義することで、重要なデータの保護に関連する職務分掌要件に対応できます。AWS Backup を使用すると、バックアップ管理者は、AWS Organizations を使用して、単一または複数アカウントの AWS リソースのバックアップの頻度と保存期間を定義するバックアッププランを作成できます。データはバックアップボールトに保存され、整理されます。バックアップボールトには、Amazon S3 のオブジェクトレベルまたはバケットレベルで定義されたものとは別に、独自のアクセスポリシー、暗号化キー、およびボールトロックのポリシーがあります。AWS IAM Identity Center を使用すると、異なるデータレイクユーザーのペルソナに対する適切なユーザー権限を従業員の ID へマッピングできます。上記の AWS Backup 機能と AWS IAM Identity Center を組み合わせることで、悪意のある、または偶発的な変更や削除から重要なデータを保護することができます。
バックアップ対象の重要なデータを特定する
データレイクには通常、複数のソースとさまざまな開発段階のデータが含まれます。たとえば、ソースシステムからの生データは、最初は 1 つのバケットに格納され、変換後キュレーションされたバケットに保存され、分析処理結果として集約したデータの一部として別のバケットに格納される場合があります。これらのデータはすべてビジネスに価値をもたらす可能性がありますが、長期的にすべてのデータを保護することは重要ではない場合があります。変換および集約したデータは生データから再現できるため、特に長期保存の対象となりうる金融取引のカテゴリでは、生データを含むバケットをバックアップすることが最適な選択肢です。ただし、PII 情報を含む生データなどの場合は、代わりに匿名化されたデータをバックアップする方が望ましい場合があります。バックアップ対象の重要なデータを特定するプロセスでは、保護対象のデータを保存するためのコストとともに、復旧時間がビジネスに与える影響を考慮する必要があります。
バックアップ対象のデータを特定した後、重要なデータを格納する Amazon S3 バケットに、必要なデータ保護レベルを示すキー/値のペアをタグ付けできます。たとえば、「DataProtectionLevel」のキーと「Critical」の値のタグは、バックアップを必要とする Amazon S3 バケットにのみ適用します。バックアッププランにリソースを割り当てる際、管理者はこれらのタグを使用することで必要な Amazon S3 バケットのみを選択することに集中できます。バックアッププランの作成時に指定したバックアップの頻度と保存期間によって、ジョブの実行時期とデータの保存期間が決まります。これらのパラメータは、組織のコンプライアンス要件によって決定する必要があります。
AWS Backup for Amazon S3 を使用する場合、バックアップの管理者は継続的または定期的なバックアップを作成するバックアッププランを定義できます。継続的なバックアップは、ポイントインタイムリストア (PITR) に役立ちます。データレイク内の Amazon S3 バケットには何千ものオブジェクトを格納できるため、ネイティブの Amazon S3 バージョニング機能だけを使用している場合は、バケットを特定の時点に復元する作業が複雑になります。ただし、AWS Backup では継続的なバックアップを使用して、最大 35 日間の保存期間内に Amazon S3 のデータを特定の日付と時刻に復元できます。社内または規制の遵守をサポートするために長期間の保存が必要な場合は、定期的なバックアップをバックアッププランのバックアップルールに追加できます。定期的なバックアップのバックアップルールでは、PITR に利用するバックアップルールと同じ対象のバックアップボールトを使用して、コンプライアンス要件に必要な頻度と保存期間を定義します。さらに、データを分離して保護するには、コピーを使用して、別の AWS アカウントまたは別のリージョンにあるバックアップボールトにスナップショットをコピーできます。
図 2: クロスアカウントでのコピー先の設定
データレイクのバックアップ戦略を定義する際には、コストを考慮する必要があります。前述のように、データレイク内のすべてのデータがビジネスにとって同じレベルの重要性を持っているわけではありません。バックアップルールとリソース割り当ては、データストレージと転送のコストを最小限に抑えるために、ある程度具体的に作成する必要があります。同様に、Amazon S3 リソースには、バックアップ対象のバージョニング対応バケットのライフサイクルの有効期限ルールを設定する必要があります。
保護されたデータへの安全なアクセス
AWS Backup により保護されたデータは、バックアップボールトを使用して保存および管理されます。バックアップボールトには、サービスによって生成された復旧ポイントへのアクセスを保護し、削除を防ぐための 3 つの重要な機能があります。アクセスポリシー、暗号化キー、AWS Backup のボールトロックです。
AWS Backup にアクセスポリシーを設定すると、誰がバックアップボールト内のデータにアクセスでき、誰がバックアップボールトの設定を変更できるかを定義できます。これらのポリシーにより、バックアップ管理者とデータレイクアカウント内の他の担当者とのアクセス権の分離がさらに強化されます。次のポリシーでは、バックアップ管理者権限のみがバックアップボールトを更新または削除できます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"backup:DeleteBackupVault",
"backup:DeleteBackupVaultAccessPolicy",
"backup:DeleteBackupVaultLockConfiguration",
"backup:DeleteBackupVaultNotifications",
"backup:DeleteRecoveryPoint",
"backup:PutBackupVaultAccessPolicy",
"backup:PutBackupVaultLockConfiguration",
"backup:PutBackupVaultNotifications",
"backup:UpdateRecoveryPointLifecycle"
],
"Resource": "*",
"Condition": {
"ArnNotEquals": {
"aws:PrincipalArn": [
"arn:aws:iam::{AccountId}:role/{Backup_Administrator_Role}"
]
}
}
}
]
}
Amazon S3 などの一部のサービスは、AWS Backup を使用することでバックアップを独立した暗号化ができます。つまり、Amazon S3 のバックアップは、バックアップボールトに関連付けられた AWS Key Management Service (AWS KMS) キーを使用して暗号化されます。AWS KMS キーは、顧客管理の CMK でも、AWS Backup に関連付けられた AWS 管理の CMK でもかまいません。この機能は、データレイク保護のユースケースに 2 つのメリットがあります。まず、AWS Backup は、バックアップの対象となる Amazon S3 バケットが暗号化されていない場合でも、すべてのバックアップを暗号化します。2 つ目は、この AWS KMS キーへのアクセスと管理をバックアップ関連の AWS IAM プリンシパルのみに制限できるため、保護対象のデータが意図せず削除されることを防ぐことができます。
最後に、AWS Backup のボールトロックは、バックアップボールト内の復旧ポイントを、不注意または悪意のある削除操作や保存期間を短縮する更新から保護する防御層をさらに追加できます。この機能をコンプライアンスモードに設定すると、最小または最大の保存期間を設定でき、特権ユーザー (AWS アカウントのルートユーザーも含む) がバックアップボールト内の復旧ポイントを早期に削除することを防ぐことができます。
監査機能の有効化
データ保護ソリューションにおいて、継続的に運用上の一貫性を確保することは、戦略の重要な要素です。AWS Backup Audit Manager では、データ保護ポリシーのコンプライアンスを監査および報告できるため、ビジネスや規制のコンプライアンス要件を満たすことに役立ちます。先に特定した Amazon S3 リソースのバックアップアクティビティを監視するには、AWS Backup Audit Manager で対象を絞ったコントロールを設定したカスタムフレームワークを作成できます。
使用可能なコントロールとその設定可能なパラメータと範囲の全リストは、AWS Backup Audit Manager のコントロールと修正に記載されています。定期的なバックアップを定義するバックアップルールを適用するデータレイクのバックアップ環境に限れば、データが存在する AWS アカウントとリージョンには、以下のコントロールセットを備えた AWS Backup Audit Manager フレームワークをお勧めします:
- リソースはバックアッププランによって保護されています
- バックアッププランの最小頻度と最小保持期間
- バックアップボールトは復旧ポイントを手動で削除できないようにします
- 復旧ポイントは暗号化されています
- 復旧ポイントの最小保持期間が確立されました
- AWS Backup のボールトロックによって保護されるバックアップ
- 最後に作成された復旧ポイント
バックアッププランで Amazon S3 リソースに PITR を使用する必要がある場合は、AWS Backup Audit Manager フレームワークに最後に作成された復旧ポイントを含めないようにしてください。PITR バックアップでは、新しいバックアップジョブごとに新しい復旧ポイントを作成するのではなく、1 つの復旧ポイントを使用するため、このコントロールは正しく評価されません。
組織のコンプライアンス基準に従って追加のコピーが必要な場合は、次のコントロールのいずれか、または両方を追加してください:
- クロスアカウントバックアップコピーがスケジュールされました
- クロスリージョンバックアップコピーがスケジュールされました
さらに、コピー先となるバックアップボールトを配置する AWS アカウントとリージョンに AWS Backup Audit Manager フレームワークを作成する必要があります。このフレームワークには次のコントロールが含まれている必要があります:
- バックアップボールトは復旧ポイントを手動で削除できないようにします
- 復旧ポイントは暗号化されています
- 復旧ポイントの最小保持期間が確立されました
- AWS Backup のボールトロックによって保護されるバックアップ
前述のように、各コントロールには、監視するリソースとその評価方法を定義するパラメーターと対象を関連付けることができます。データレイクのユースケースに合わせて上記のコントロールを設定する方法の例をいくつか見てみましょう。
リソースはバックアッププランによって保護されています
このコントロールは、定義されたリソースセットがバックアッププランによって保護されているかどうかを評価します。データレイク環境の場合、重要なリソースを格納していると特定された Amazon S3 バケットが評価されていることを確認する必要があります。このコントロールを設定するには、評価するリソースとしてタグが付けられたリソースを選択し、保護対象の Amazon S3 バケットのタグのキーと値を指定し、リソースタイプとして Amazon S3 を指定します。
図 3: リソースはバックアッププランによって保護されています
復旧ポイントは暗号化されています
コントロールは、暗号化されていない復旧ポイントがあるかどうかを評価します。デフォルトでは、コントロールはフレームワークが設定されている AWS アカウントとリージョンのすべての復旧ポイントに適用されます。ただし、バックアッププランを定義する際に復旧ポイントにタグを付けることで、このコントロールの範囲を、指定したタグのキーと値を含む復旧ポイントのみを評価するように絞り込むことができます。
図 4: 復旧ポイントは暗号化されています
最後に作成された復旧ポイント
このコントロールは、指定した頻度の範囲内に少なくとも 1 つの復旧ポイントが存在することを確認します。このコントロールにより、バックアッププランがコンプライアンス要件に従って設定および運用されていることを確認できます。このコントロールは、時間単位または日単位で表されるバックアップの頻度の値を提供するパラメータを提供します。ここでも、このコントロールの範囲をバックアップ用にタグ付けされた Amazon S3 バケットに限定します。
図 5: 最後に作成された復旧ポイント
リソースの削除
このアーキテクチャの評価に関連するコストが発生しないようにするには、AWS Backup リソースと AWS Backup Audit Manager リソースを手動で削除する必要があります。リソースをクリーンアップする手順は、AWS Backup デベロッパーガイドに記載されています。AWS Backup のボールトロックが適用されていた場合は、他のリソースのクリーンアップに進む前に AWS Backup のボールトロックを解除する必要があります。
まとめ
このブログでは、AWS Backup を使用して Amazon S3 で構築されたデータレイクのデータ保護戦略を設計する際の主な考慮事項を紹介しました。組織は、AWS Backup のポリシーベースの計画、きめ細かなアクセス制御、監査機能を利用して、Amazon S3 に保存されている重要なデータの管理と保護を一元化できます。このブログで紹介したベストプラクティスに従うことで、Amazon S3 で構築したデータレイクを AWS Backup で保護するための、安全でコストが最適化された、運用効率の高いソリューションを設計できます。
データ保護の詳細については、AWS Backup のドキュメントをご覧ください。
翻訳はソリューションアーキテクトの佐藤真也が担当しました。