S3 バージョニング、S3 オブジェクトロック、S3 レプリケーションを使用して、Amazon S3 上のデータを偶発的な削除やアプリケーションのバグから保護する

チュートリアル

概要

Amazon S3 は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、パフォーマンス、および 99.999999999% (イレブンナイン) のデータ耐久性を備えたオブジェクトストレージサービスです。ただし、最も耐久性の高いストレージであっても、アプリケーションの破損や偶発的なデータの削除の原因となる人為的なエラーやソフトウェアのバグを防ぐことはできません。ランサムウェアの被害が増加する中、さまざまな規模のお客様が、Amazon S3 の重要なデータを悪意を持って改ざんされることに対して追加の保護策を検討しています。

どのようなデータであっても、バックアップを作成し、悪意のあるユーザーや偶発的な削除に対して十分な保護策を施すことがベストプラクティスです。この Amazon S3 入門ガイドでは、Amazon S3 バケットに保存されているすべてのオブジェクトのすべてのバージョンを保持、取得、復元できる Amazon S3 バージョニングのベストプラクティスに従う方法について説明しています。Amazon S3 オブジェクトロックを S3 バージョニング上に追加して、一定期間または無期限にデータが削除または上書きされないようにすることができます。マルチリージョンの保護の目的で、他の AWS リージョンにデータの追加のコピーを作成する場合、Amazon S3 レプリケーション は S3 バージョニングと S3 オブジェクトロックの両方と連携して、AWS リージョンおよび個別の AWS アカウント間でオブジェクトを自動的にコピーします。最後に、Amazon S3 ストレージレンズを使用すると、現在のデータ保護レベルとこれらの機能の使用状況をすべて 1 つのダッシュボードにまとめて表示できます。

実行する内容

  • Amazon S3 バケットを作成する
  • S3 バージョニングを有効にして、オブジェクトの上書きを防止する
  • S3 オブジェクトロックを設定して、偶発的なオブジェクトの削除を防止する
  • S3 ストレージレンズを使用して S3 バケットのデータ保護の状態を確認する

前提条件

このチュートリアルを完了するには、AWS アカウントが必要です。新しい AWS アカウントを作成し、有効化する方法の詳細については、このサポートページにアクセスします

注: S3 オブジェクトロックのデモンストレーションを行っているため、このラボのデータは作成後の翌日まで削除できません。

 AWS エクスペリエンス

初心者

 所要時間

30 分

 完了までのコスト (無料のメトリクスを使用)

1 USD 未満 (Amazon S3 料金ページ)

 必要なもの

AWS アカウント

 利用するサービス

 最終更新日

2022 年 10 月 3 日

実装

ステップ 1: Amazon S3 バケットを作成する

1.1 – Amazon S3 コンソールにサインインする

  • まだ作成していない場合は AWS アカウントを作成します。
  • アカウント情報を使用して、AWS マネジメントコンソールにログインします。
  • AWS コンソールのサービス検索バーで、S3 と入力します。 サービス検索結果セクションで、[S3] を選択します。

このチュートリアルの各スクリーンショットをクリックすると拡大表示されます。

1.2 – S3 バケットを作成する

  • 左側のナビゲーションペインで、[バケット] を選択し、[バケット] セクションで [バケットを作成する] を選択します。

1.3

  • バケットにわかりやすい名前を入力します。バケット名は、すべての AWS アカウントでグローバルに一意です。選択した名前でエラーが発生した場合は、別の組み合わせを試してください。次に、バケットを作成する [AWS リージョン] を選択します。

1.4

  • 次に、[オブジェクト所有権] セクションで、ACL を無効とするデフォルト設定のままにします。オブジェクトごとに個別にアクセスを制御する必要があるような特殊な状況を除いて、ACL (アクセスコントロールリスト) を無効にすることをお勧めします。オブジェクト所有権を使用すると、ACL を無効にし、ポリシーに基づいてアクセスを制御できます。詳細については、「Amazon S3 ユーザーガイド」を参照してください。

 1.5

  • このバケットのブロックパブリックアクセス設定では、デフォルトのブロックパブリックアクセス設定がこのワークロードに適しているため、デフォルト設定のままにしてください。

1.6 – バージョニングを有効にする

  • 次に、[バケットのバージョニング] セクションで、バージョニングが有効になっていることを確認します Amazon S3 のバージョニングとは、オブジェクトの複数のバリアントを同じバケットに保持する手段です。S3 バージョニング機能を使用して、バケットに保存されたあらゆるオブジェクトのあらゆるバージョンを保持、取得、復元することができます。S3 バージョニングを使用すると、意図せぬユーザー操作からもアプリケーションの障害からも簡単に回復できます。バケットのバージョニングを有効にすると、Amazon S3 が同じオブジェクトに対する複数の書き込みリクエストを同時に受け取った場合でも、それらのオブジェクトはすべて保存されます。

1.7 – デフォルトの暗号化を有効にする

  • 次に、[デフォルト暗号化] セクションで、バケットのデフォルト暗号化を有効にします。これらの設定は、アップロード処理で保管時の暗号化の詳細を定義していないバケットにアップロードされたオブジェクトに適用されます。このワークロードでは、[サーバー側の暗号化][有効化] を選択します。次に、[暗号化キータイプ][Amazon S3 管理キー (SSE-S3)] を選択します。ワークロード要件が SSE-S3 で満たされない場合、AWS Key Management Service (AWS KMS) を使用することもできます。Amazon S3 が AWS KMS を使用する方法の詳細については、「AWS Key Management Service デベロッパーガイド」を参照してください。

1.8

  • 次に、[詳細設定] セクションの [オブジェクトロック] で、[有効化] を選択します。
  • S3 オブジェクトロックを使用して、write-once-read-many (WORM) モデルを使用してオブジェクトを保存できます。S3 オブジェクトロックは、一定期間、または無期限にオブジェクトの削除や上書きを防止するのに役立ちます。S3 オブジェクトロックを使用すると、WORM ストレージを必要とする規制要件を満たすことも、オブジェクトの変更と削除に対する保護の別のレイヤーを追加することもできます。
  • このステップでは、バケットのオブジェクトロックが有効になっただけであることに注意してください。[保存モード][保存期間] などの固有の設定は、チュートリアルの後半で設定します。
  • [バケットの作成] を選択して S3 バケットを作成します。

ステップ 2: S3 バージョニングを設定する

2.1 – オブジェクトをアップロードする

  • ワークステーションで、「Version 1」というテキストを含むテキストファイルを作成し、ワークステーションに保存します。

2.2

  • Amazon S3 コンソールから、ステップ 1 で作成したバケットを検索し、バケット名を選択します。
  • 次に、[オブジェクト] タブを選択します。そして、[オブジェクト] セクション内から [アップロード] を選択します。

2.3

  • 次に、[アップロード] セクションで、[ファイルを追加] を選択します。ローカルファイルシステムに移動して、上記で作成したテストファイルを見つけます。適切なファイルを選択し、[開く] を選択します。ファイルは、[ファイルとフォルダ] セクションに表示されます。残りのオプションはデフォルト設定のままで、[アップロード] ボタンを選択します。

2.4

  • ファイルのアップロード操作が完了すると、アップロードが成功したかどうかを示すステータスメッセージが表示されます。この場合、ファイルは正常にアップロードされました。次に、[閉じる] を選択します。
  • S3 コンソールにオブジェクトが表示されます。

2.5

  • ワークステーションで、作成済のファイルを編集します。テキストを「Version 2」に変更し、同じファイル名で保存します。ステップ 2.2~ステップ 2.4 を繰り返して、更新したファイルを Amazon S3 にアップロードします。

2.6

  • バケット内のオブジェクトのバージョンのリストを表示するには、[バージョンの表示] を選択します。コンソールには、オブジェクトバージョンごとに固有のバージョン ID、オブジェクトバージョンが作成された日付と時刻、およびその他のプロパティが表示されます。 

S3 オブジェクトのバージョニングを有効にしたので、そのオブジェクトのすべてのバージョンは引き続き Amazon S3 バケットに保存され、取得または復元できるようになりました。S3 バージョニングを有効化すると、Amazon S3 バケットの所有者だけがバージョンを完全に削除できます。オブジェクトに対して DELETE 操作をすると、それ以降の単純な (バージョン管理に含めない) リクエストではオブジェクトが取得できなくなりますが、以前のバージョンとして S3 に保存されます。

バージョニングが有効になっている場合、単純な DELETE ではオブジェクトを完全に削除することができません。代わりに、Amazon S3 はバケットに削除マーカーを挿入し、そのマーカーは新しい ID を持つオブジェクトの最新バージョンになります。 

最新以外のバージョンのオブジェクトを保持すると、ストレージコストが増加する可能性があります。[ライフサイクルルール] を設定して、複数のバージョンのオブジェクトを保存する存続期間とコストを管理できます。ライフサイクル ルールを設定して、これらの古いバージョンを完全に削除したり、より低コストのストレージで保護期間を追加したりすることができます。また、以前のすべてのバージョンを低コストの Amazon S3 Glacier Instant Retrieval または Amazon S3 Glacier Flexible Retrieval ストレージクラスにアーカイブし、100 日後に削除するルールを設定することで、ストレージコストを抑えつつ、データ変更のロールバックのために 100 日間のウィンドウを設けることができます。

最上位オブジェクトの左側にあるチェックボックスを選択し、[開く] を選択します。このオブジェクトはファイルの最新バージョンを表し、「Version 2」と表示されます。古いバージョンのオブジェクトでも同じ処理を繰り返し、「Version 1」と表示されていることを確認します。

2.7 – オブジェクト削除のデモンストレーション

  • バージョンのリストを折りたたむには、[バージョンの表示] をオフにします。 

テキスト入力フィールドに「delete」と入力し、[オブジェクトの削除] ボタンを選択します。

  • [閉じる] を選択します。
  • 次に、[オブジェクト] タブで、オブジェクトが削除されたことを確認できます。
  • [バージョンの表示] をオンにします。 最上位のオブジェクトが [タイプ] 列の下に 削除マーカーとしてリストされていますが、オブジェクトの両方のバージョンが引き続き使用できます。

2.8 – オブジェクトの復元をデモンストレーション

  • オブジェクトを復元するには、最上位オブジェクトのチェックボックスを選択して 削除マーカー を削除します。その後、[削除] を選択します。
  • テキスト入力フィールドに「permanently delete」(完全に削除) と入力し、[オブジェクトの削除] を選択します。
  • [閉じる] を選択します。
  • 削除マーカーを削除すると、オブジェクトが復元されました。
  • 最上位オブジェクトの左側にあるチェックボックスを選択し、[開く] を選択します。このオブジェクトは Version 2 として開きます。
  • 古いバージョンのオブジェクトの左側にあるチェックボックスを選択し、[開く] を選択します。このオブジェクトは、Version 1 として開きます。

2.9 – 特定のバージョンのオブジェクトを完全に削除する

削除マーカーを作成せずに特定のバージョンのオブジェクトを削除することもできます。次のステップでは、オブジェクトの最新バージョンを削除します。

  • [バージョンの表示] のトグルをオンの状態で、最上位オブジェクトの左側にあるチェックボックスを選択して、[削除] を選択します。
  • テキスト入力フィールドに「permanently delete」(完全に削除) と入力し[オブジェクトの削除] を選択します。
  • オブジェクトの最新バージョンが削除されました。
  • これを確認するには、残りのオブジェクトの左側にあるチェックボックスを選択して、[開く] を選択します。 
  • 上記の選択を行うと、ブラウザに新しいタブが開き、「Version 1」 というテキストが表示されます。

ステップ 3: S3 オブジェクトロックを設定する

3.1

  • バケットレベルで詳細な機能を表示します。バケットから [プロパティ] を選択します。

3.2

  • [オブジェクトロック] セクションに移動します。次に、[編集] を選択します。

3.3

  • [デフォルト保存] セクションで、[有効化] を選択します。
  • [デフォルトの保存モード][コンプライアンス] に設定します。
  • デフォルトの保存期間の場合、テキスト入力フィールドに 「1」を入力し、ドロップダウンボックスは [日数] のままにします。その後、[変更を保存] を選択します。

これで、デフォルトのオブジェクトロック設定が、バケットにアップロードされるすべての新しいオブジェクトに適用されました。バケット内の既存のオブジェクトは、これらの設定の影響を受けません。既存のオブジェクトをロックするには、S3 バッチ操作を使用できます。

ガバナンスモードでは、s3: BypassGovernanceRetention 権限がない限り、オブジェクトバージョンを上書きまたは削除したり、ロック設定を変更したりできません。S3 コンソールには、デフォルトで x-amz-bypass-ganance-retention: true ヘッダーが含まれています。ガバナンス モードで保護されているオブジェクトを削除しようとした場合、s3:BypassGovernanceRetention 権限を持っていれば操作は成功します。このため、このチュートリアルではコンプライアンスモードを使用しています。

コンプライアンスモードを使用してオブジェクトにロックが設定されている場合、保持期間が終了するまで、ルートユーザーを含むいずれのユーザーもオブジェクトのバージョンを削除できません。また、保存モードを変更したり、保存期間を短縮したりすることはできません。

このチュートリアルでは、管理者権限を持つユーザーでもコンプライアンスモードで保護されているオブジェクトを削除できない理由を説明します。ロックされていて削除できないオブジェクトは、引き続き請求対象になることに注意してください。このチュートリアルでのコストを最小限に抑えるには、デフォルトの保存期間を 1 日に設定し、小さなファイルのみをアップロードするようにしてください。

3.4 – 新しいオブジェクトをアップロードする

  • [オブジェクト] タブから、[アップロード] を選択します。 

3.5

  • 次に、[アップロード] セクションの[ファイルとフォルダー] で、[ファイルを追加] を選択します。ローカルファイルシステムに移動し、テスト用に小さいファイルを選択して、[開く] を選択します。ファイルは、[ファイルとフォルダ] セクションに表示されます。残りのオプションはデフォルト設定のまま、[アップロード] を選択します。

3.6

  • ファイルのアップロード操作が完了すると、アップロードが成功したかどうかを示すステータスメッセージが表示されます。この場合、ファイルは正常にアップロードされました。次に、[閉じる] を選択します。

3.7

  • [オブジェクト] タブから、アップロードした新しいテストオブジェクトを選択します。

オブジェクトの [プロパティ] タブで、[オブジェクト管理の概要] セクションを確認します。設定したオブジェクトロックのデフォルトがオブジェクトに適用されていることに注意してください。新しいオブジェクトをアップロードするときにこれらのデフォルトを上書きし、ロックされたオブジェクトに適用される保存期間を延長することもできます (ただし、短縮はできません)。

3.8 – オブジェクトを削除する

このセクションでは、削除マーカーを作成せずに特定のバージョンのオブジェクトを完全に削除する別の方法を説明します。 

  • [バージョン] タブを選択します。  
  • オブジェクトの左側にあるチェックボックスを選択し、[削除] を選択します。

テキスト入力フィールドに「permanently delete」(完全に削除) と入力し、[オブジェクトの削除] を選択します。

  • オブジェクトを削除できないというエラーメッセージが表示されるはずです。これは、オブジェクトロックをコンプライアンスモードで使用した場合に想定される動作です。このオブジェクトを削除するには、保存期間 (1 日に設定) の期限が切れるまで待つ必要があります。
  • 次に、[Close] を選択してこのウィンドウを終了します。

ステップ 4: その他の S3 データ保護機能を確認する

このチュートリアルでは対象外ですが、他にも 2 つの S3 データ保護に関する注意すべきトピックがあります。

Amazon S3 レプリケーションを使用すると、Amazon S3 バケット間でオブジェクトを自動で非同期的にコピーできます。オブジェクトのレプリケーション用に設定されたバケットは、同じ AWS アカウントが所有することも別のアカウントが所有することもできます。オブジェクトは、1 つの送信先バケットまたは複数の送信先バケットにレプリケートできます。送信先バケットは、異なる AWS リージョンに置くことも、ソースバケットと同じリージョン 内に置くこともできます。

S3 レプリケーションでは、ソースバケットとターゲットバケットの両方で S3 バージョニングを有効にする必要があります。  

ソースバケットで S3 オブジェクトロックが有効になっている場合は、送信先バケットでも S3 オブジェクトロックが有効になっている必要があります。オブジェクトロックが有効になっているバケットでレプリケーションを有効にするには、まず AWS サポートに問い合わせする必要があります。Amazon S3 は、保持情報が適用されたオブジェクトをレプリケートするときに、同じ保持制御をレプリカに適用し、送信先バケットに設定されているデフォルトの保持期間を上書きします。ソースバケット内のオブジェクトに保持制御が適用されておらず、またデフォルトの保持期間が設定されている送信先バケットにレプリケートする場合、送信先バケットのデフォルトの保持期間がオブジェクトレプリカに適用されます。 

ロギングオプション

Amazon S3 は、Amazon S3 内のユーザー、ロール、または AWS サービスによって実行されたアクションの記録を提供するサービスである AWS CloudTrail と統合されています。CloudTrail は、Amazon S3 コンソールからの呼び出しや Amazon S3 API へのコード呼び出しなど、Amazon S3 の API コールのサブセットをイベントとしてキャプチャします。

サーバーアクセスログは、バケットに対して行われたリクエストの詳細な記録を提供します。サーバーアクセスログは、多くのアプリケーションに役立ちます。例えば、アクセスログ情報はセキュリティやアクセス監査に役立ちます。また、顧客ベースについて学び、Amazon S3 の請求額を理解するのにも役立ちます。

AWS Backup を使用して、AWS のサービスとハイブリッドワークロード全体でデータ保護を一元化および自動化できます。AWS Backup は、費用効果が高く、ポリシーベースのフルマネージドサービスを提供し、大規模なデータ保護をさらに簡素化します。また、AWS Backup は、データ保護に関する規制コンプライアンスやビジネスポリシーのサポートにも役立ちます。  

Amazon S3 は、サポートするさまざまな AWS Backup リソースの 1 つです。AWS Backup は、S3 バージョニングも活用しています。

ステップ 5: Amazon S3 ストレージレンズを使用して S3 データ保護メトリクスを表示する

Amazon S3 ストレージレンズは、Amazon S3 に保存されているデータのデータ保護の状態を組織全体で可視化します。S3 Storage Lens では、暗号化、バージョン管理、レプリケート、オブジェクトロックされているデータの割合を簡単に表示できます。S3 Storage Lens は、複数の Amazon S3 バケット、AWS アカウント、 AWS Organizations のデータに対するデータ保護可視性を追加料金なしで表示でき、14 日間の履歴データ保護レベルをすぐに開始できます。

S3 ストレージレンズを使用すると、データ保護メトリクスの概要を、データの総量に対するパーセンテージで表示できます。これらには、現在のバージョンのバイト数、最新バージョン以外のバイト数、暗号化されたバイト数、複製されたバイト数、およびオブジェクトロックのバイト数が含まれる。

5.1

  • [S3 コンソール] のナビゲーションペインで [ストレージレンズ] を見つけます。
  • [ダッシュボード] を選択し、次に [default-account-dashboard] を選択します。

5.2

  • [データ保護] タブを選択すると、バージョニング、暗号化、レプリケーション、およびオブジェクトロックに関する統計が表示されます。

ステップ 6: クリーンアップ

次のステップでは、このチュートリアルで作成したリソースをクリーンアップします。意図しない料金が発生しないように、使用しなくなったリソースを削除するのがベストプラクティスです。

これらの手順を実行するには、S3 オブジェクトロックの有効期限が切れるまで 1 日待つ必要があることに注意してください。

6.1 - テストオブジェクトを削除する

  • AWS マネジメントコンソールセッションからログアウトした場合、ログインし直します。S3 コンソールに移動し、ナビゲーションペインで [バケット] を選択します。最初に、テストバケットからテストオブジェクトを削除する必要があります。このチュートリアルのために作成したバケットの左側にあるラジオボタンを選択し、[空] を選択します。
  • [空のバケット] ページで、[すべてのオブジェクトを完全に削除] の確認ボックスに「permanently delete」(永久に削除) と入力します。次に、[空] を選択して続行します。
  • 次に、削除が成功したかどうかを示すバナーが表示されます。[終了] を選択します。

6.2 – テストバケットを削除する

  • 最後に、作成したテストバケットを削除する必要があります。アカウント内のバケット一覧に戻ります。このチュートリアル用に作成したバケットの左側にあるラジオボタンを選択し、[削除] を選択します。
  • 警告メッセージを確認します。このバケットの削除を続行する場合は、テキスト入力フィールドの確認ボックスにバケット名を入力し、 [バケットの削除] を選択します。

まとめ

お疲れ様でした。 S3 バージョニングと S3 オブジェクトロックを使用して Amazon S3 のデータを保護する方法を学び、S3 ストレージレンズを使用してこれらの設定の確認を行いました。

このページはお役に立ちましたか?

次のステップ

Amazon S3 の詳細については、次のリソースをご参照ください。