‹ 概要 に戻る

Amazon Lightsail オブジェクトストレージのセキュリティのベストプラクティス

最終更新日: 2022 年 2 月 22 日

Amazon Lightsail オブジェクトストレージには、独自のセキュリティポリシーを開発および実装する際に考慮する必要のあるいくつかのセキュリティ機能が用意されています。以下のベストプラクティスは一般的なガイドラインであり、完全なセキュリティソリューションに相当するものではありません。これらのベストプラクティスはお客様の環境に適切ではないか、十分ではない場合があるため、これらは処方箋ではなく、有用な考慮事項と見なしてください。

目次

予防的セキュリティのベストプラクティス

以下のベストプラクティスは、Lightsail バケットでセキュリティ問題を防ぐのに役立ちます。

重要

現在、Lightsail オブジェクトストレージリソースに対する許可は Lightsail 以外では設定できませんが、これは 2022 年 3 月 8 日から変更され、Lightsail オブジェクトストレージリソースは、パブリックアクセスを許可または拒否するときに、Lightsail バケットのアクセスルールと Amazon S3 のアカウントレベルのブロックパブリックアクセス設定の両方を考慮するようになります。詳細については、「Amazon Lightsail 内のバケットに対するブロックパブリックアクセス」を参照してください。

最小特権アクセスの実装

アクセス許可を付与する場合、どのユーザーにどの Lightsail リソースに対するアクセス許可を付与するかは、お客様が決定します。つまり、該当リソースに対して許可する特定のアクションを有効にするということです。このため、タスクの実行に必要な許可のみを付与する必要があります。最小限の特権アクセスの実装は、セキュリティリスクはもちろん、エラーや悪意ある行動によってもたらされる可能性のある影響を減らす上での基本となります。

バケットを管理するための IAM ポリシーの作成の詳細については、「Amazon Lightsail でバケットを管理する IAM ポリシー」を参照してください。Lightsail バケットでサポートされている Amazon S3 アクションの詳細については、Amazon Lightsail API リファレンスの「オブジェクトストレージのアクション」を参照してください。

Lightsail バケットがパブリックにアクセス可能ではないことを確認する

デフォルトでは、 バケットとオブジェクトはプライベートです。バケットのアクセス許可セットをすべてのオブジェクトはプライベートに設定して、バケットをプライベートに保ちます。大部分のユースケースでは、バケットや個々のオブジェクトをパブリックにする必要はありません。詳細については「Amazon Lightsail のバケット内の個々のオブジェクトに対するアクセス許可の設定」を参照してください。

Lightsail コンソールでのバケットアクセス許可

ただし、バケットを使用してウェブサイトやアプリケーションのメディアをホストしている場合は、特定のシナリオでは、バケットまたは個々のオブジェクトをパブリックにする必要があります。次のいずれかのオプションを設定して、バケットまたは個々のオブジェクトをパブリックにすることができます。

  • バケット内のオブジェクトの一部のみをインターネット上の誰にでもパブリック (読み取り専用) する必要がある場合は、バケットのアクセス許可を個々のオブジェクトをパブリックにして読み取り専用にするに変更し、パブリックにする必要があるオブジェクトのみをパブリック (読み取り専用)に変更します。このオプションはバケットをプライベートにしますが、個々のオブジェクトをパブリックにするオプションも提供します。パブリックにアクセスしたくない機密情報または秘密情報が含まれている場合は、個々のオブジェクトを公開しないでください。個々のオブジェクトをパブリックにする場合は、個々のオブジェクトのパブリックアクセシビリティを定期的に検証する必要があります。

    Lightsail コンソールでのバケットアクセス許可
  • バケット内のすべてのオブジェクトをインターネット上の誰にでもパブリック(読み取り専用)する必要がある場合は、バケットのアクセス許可をすべてのオブジェクトはパブリックで読み取り専用に変更します。バケット内のいずれかのオブジェクトに機密情報または秘密情報が含まれている場合は、このオプションを使用しないでください。

    Lightsail コンソールでのバケットアクセス許可
  • 以前にバケットをパブリックに変更した場合、または個々のオブジェクトをパブリックに変更した場合は、バケットのアクセス許可をすべてのオブジェクトはプライベートに変更することで、バケットとそのすべてのオブジェクトをプライベートにすばやく変更できます。

    Lightsail コンソールでのバケットアクセス許可

バケットにインスタンスを添付して、プログラムによる完全なアクセスを付与する

Lightsail オブジェクトストレージバケットにインスタンスを添付するのは、バケットへのアクセスを提供する最も安全な方法です。リソースアクセス機能は、インスタンスをバケットに添付する方法であり、インスタンスにバケットへの完全なプログラムによるアクセスを付与します。この方法では、バケット認証情報をインスタンスまたはアプリケーションに直接保存する必要はなく、定期的に認証情報をローテーションする必要もありません。例えば、一部の WordPress プラグインは、インスタンスがアクセスできるバケットにアクセスできます。詳細については、「Amazon Lightsail でバケットのリソースアクセスを設定する」および「チュートリアル: WordPress インスタンスを Amazon Lightsail バケットに接続する」を参照してください。

Lightsail コンソールでのバケットリソースアクセス

ただし、アプリケーションが Lightsail インスタンスにない場合は、バケットアクセスキーを作成して設定することができます。バケットアクセスキーは、自動的にローテーションされない長期的な認証情報です。

Lightsail コンソールでのバケットアクセスキー

アクセスキーを作成して使用し、アプリケーションまたはプラグインにバケット内のオブジェクトへの完全なプログラムによるアクセスを付与できます。バケットでアクセスキーを使用する場合は、キーを定期的にローテーションし、既存のキーのインベントリを作成する必要があります。アクセスキーが最後に使用された日付と、そのキーが使用された AWS リージョンが、キーの使用方法に関する期待に沿っていることを確認します。アクセスキーが最後に使用された日付は、バケットの管理ページの [許可] タブのアクセスキーセクションの Lightsail コンソールに表示されます。使用されていないアクセスキーを削除します。

シークレットアクセスキーを誤ってパブリックと共有した場合は、削除して新しいシークレットアクセスキーを作成する必要があります。バケットごとに最大 2 つのアクセスキーを持つことができます。同時に 2 つの異なるアクセスキーを使用できますが、バケットで 1 つのアクセスキーを使用しないことは、最小限のダウンタイムでキーをローテーションする必要がある場合に役立ちます。アクセスキーをローテーションするには、新しいキーを作成し、ソフトウェアで設定してテストしてから、以前のキーを削除します。アクセスキーを削除すると、永久に削除されるため、再度取得することはできません。新しいアクセスキーでのみ置き換えることができます。詳細については、「Amazon Lightsail でのバケットのアクセスキーの作成」を参照してください。

クロスアカウントアクセスを使用して、バケット内のオブジェクトへのアクセスを他の AWS アカウントに付与する

クロスアカウントアクセスを使用すると、バケットとそのオブジェクトをパブリックにすることなく、AWS アカウントを持つ特定の個人がバケット内のオブジェクトにアクセスできるようになります。クロスアカウントアクセスを設定している場合は、リストされているアカウント ID が、バケット内のオブジェクトへのアクセスを許可する正しいアカウントであることを確認してください。詳細については、「Amazon Lightsail でのバケットのクロスアカウント アクセスの設定」を参照してください。

Lightsail コンソールでのバケットクロスアカウントアクセス

データの暗号化

Lightsail は、Amazon マネージドキーを使用したサーバー側の暗号化と HTTPS (TLS) の強制による転送中のデータの暗号化を実行します。サーバー側の暗号化は、別のサービスに保存されているキーを使用してデータを暗号化することで、データへのリスクを軽減するのに役立ちます。さらに、送信中のデータの暗号化は、潜在的な攻撃者が中間者攻撃または同様の攻撃を使用してネットワークトラフィックを盗聴または操作することを防止するのに役立ちます。

バージョニングの有効化

バージョニングとは、同じバケット内でオブジェクトの複数のバリアントを保持する手段です。バージョニングを使用して、Lightsail バケットに保存されたあらゆるオブジェクトのあらゆるバージョンを保存、取得、復元することができます。バージョニングを使用すれば、意図しないユーザーアクションからもアプリケーション障害からも、簡単に復旧できます。詳細については、「Amazon Lightsail バケットでのオブジェクトのバージョニングの有効化と一時停止」を参照してください。

ベストプラクティスのモニタリングと監査

以下のベストプラクティスは、Lightsail バケットの潜在的なセキュリティ上の弱点とインシデントを検出するのに役立ちます。

アクセスログ記録を有効にし、セキュリティとアクセス監査を定期的に実行する

アクセスのログ記録には、バケットに対するリクエストの詳細が記録されます。この情報には、リクエストタイプ (GETPUT)、リクエストで指定したリソース、リクエストを処理した日時などが含まれます。バケットのアクセスログ記録を有効にし、セキュリティとアクセス監査を定期的に実行して、バケットにアクセスしているエンティティを特定します。デフォルトでは、Lightsail によってバケットへのアクセスのログは収集されません。アクセスログ記録を手動で有効にする必要があります。詳細については、「Amazon Lightsail オブジェクトストレージサービスでバケットへのアクセスをログ記録する」および「Amazon Lightsail オブジェクトストレージサービスでのバケットへのアクセスログ記録の有効化」を参照してください。

Lightsail バケットの特定、タグ付け、および監査

IT アセットの特定はガバナンスとセキュリティの重要な側面です。セキュリティ体制を評価し、潜在的な弱点に対処するには、すべての Lightsail バケットを可視化する必要があります。

タグ付けを使用してセキュリティまたは監査で注意を要するリソースを識別してから、それらのタグを、リソースを検索する必要があるときに使用します。詳細については、「Amazon Lightsail のタグ」を参照してください。

AWS モニタリングツールによるモニタリングの実装

モニタリングは、Lightsail バケットおよびその他のリソースの信頼性、セキュリティ、可用性、パフォーマンスを維持する上で重要です。バケットサイズ (BucketSizeBytes) と Lightsail での Number of objects (NumberOfObjects) バケットメトリクスの通知アラームを作成してモニタリングすることができます。例えば、バケットのサイズが特定のサイズに増減したとき、またはバケット内のオブジェクト数が特定の数に増減したときに通知を受け取ることができます。詳細については、「Amazon Lightsail でのバケットメトリクスアラームの作成」を参照してください。

AWS CloudTrail の使用

AWS CloudTrail では、Lightsail でユーザー、ロール、または AWS のサービスによって実行されたアクションの記録を確認できます。CloudTrail で収集された情報を使用して、Lightsail に対するリクエスト、リクエスト元の IP アドレス、リクエストの実行者、リクエスト日時などの詳細を把握できます。例えば、データアクセスに影響するアクション (特に CreateBucketAccessKeyGetBucketAccessKeysDeleteBucketAccessKeySetResourceAccessForBucket および UpdateBucket) の CloudTrail エントリを特定できます。AWS アカウントをセットアップすると、CloudTrail はデフォルトで有効になっています。CloudTrail コンソールで最近のイベントを確認できます。Lightsail バケットのアクティビティとイベントの継続的なレコードを作成するには、CloudTrail コンソールで追跡作成できます。詳細については、AWS CloudTrail ユーザーガイドの「証跡のデータイベントのログ記録」を参照してください。

AWS セキュリティ勧告のモニタリング

AWS アカウントに登録されているプライマリ E メールアドレスを積極的にモニタリングします。AWS は、ユーザーにに影響する可能性のある新たなセキュリティ問題について、この E メールアドレスを使用してユーザーに連絡します。

広範な影響を与える AWS の運用上の問題は、AWS Service Health Dashboard に投稿されます。運用上の問題は Personal Health Dashboard を介して個々のアカウントにも投稿されます。詳細については、AWS Health ドキュメントを参照してください。

Lightsail でのバケットとオブジェクトの管理

Lightsail オブジェクトストレージバケットを管理するための一般的なステップは次のとおりです。

  1. Amazon Lightsail オブジェクトストレージサービスのオブジェクトとバケットについて説明します。詳細については、「Amazon Lightsail のオブジェクトストレージ」を参照してください。

  2. Amazon Lightsail でバケットに付けることができる名前について説明します。詳細については、「Amazon Lightsail のバケットの命名規則」を参照してください。

  3. バケットを作成することにより、Lightsail オブジェクトストレージサービスの使用を開始します。詳細については、「Amazon Lightsail でのバケットの作成」を参照してください。

  4. バケットのセキュリティに関するベストプラクティスと、バケットに対して設定できるアクセス許可について説明します。バケットのすべてのオブジェクトをパブリックまたはプライベートにすることも、個別のオブジェクトをパブリックにすることもできます。また、アクセスキーを作成し、バケットにインスタンスをアタッチし、他の AWS アカウントへのアクセスを許可して、バケットへのアクセスを許可することもできます。詳細については、「Amazon Lightsail オブジェクトストレージのセキュリティのベストプラクティス」と「Amazon Lightsail のバケットアクセス許可について」を参照してください。

    バケットのアクセス許可について学習したら、次のガイドを参照してバケットへのアクセスを許可します。

  5. バケットのアクセスログ記録を有効にする方法と、アクセスログを使用してバケットのセキュリティを監査する方法について説明します。詳細については、以下のガイドを参照してください。

  6. Lightsail のバケットの管理をユーザーに許可する IAM ポリシーを作成します。詳細については、「Amazon Lightsail のバケットを管理する IAM ポリシー」を参照してください。

  7. バケットのオブジェクトのラベル付けと識別方法について説明します。詳細については、「Amazon Lightsail のオブジェクトのキー名について」を参照してください。

  8. バケットでファイルをアップロードする方法と、オブジェクトを管理する方法について説明します。詳細については、以下のガイドを参照してください。

  9. オブジェクトのバージョニングを有効にして、バケットに保存されたあらゆるオブジェクトのあらゆるバージョンを保存、取得、復元することができます。詳細については、「Amazon Lightsail のバケットでのオブジェクトのバージョニングの有効化と一時停止」を参照してください。

  10. オブジェクトのバージョニングを有効にすると、バケットのオブジェクトの以前のバージョンを復元できるようになります。詳細については、「Amazon Lightsail のバケットのオブジェクトの以前のバージョンの復元」を参照してください。

  11. バケットの使用率をモニタリングします。詳細については、「Amazon Lightsail のバケットのメトリクスの表示」を参照してください。

  12. バケットの使用率がしきい値を超えたときにバケットメトリクスが通知されるようにアラームを設定します。詳細については、「Amazon Lightsail のバケットメトリクスアラームの作成」を参照してください。

  13. ストレージおよびネットワーク転送で不足している場合は、バケットのストレージプランを変更します。詳細については、「Amazon Lightsail のバケットのプランを変更する」を参照してください。

  14. バケットを他のリソースに接続する方法について説明します。詳細については、以下のチュートリアルを参照してください。

  15. バケットを使用しなくなった場合は、バケットを削除します。詳細については、「Amazon Lightsail のバケットの削除」を参照してください。