Amazon S3 バケット内のファイルを保護する方法を教えてください。

最終更新日: 2019 年 5 月 17 日

Amazon Simple Storage Service (Amazon S3) バケットとオブジェクトが安全であることを確認したいです。プライベートにしたいリソースは、プライベートである必要があります。Amazon S3 リソースへのアクセス許可を制限する方法を教えてください。 これらのリソースへのアクセスをモニタリングする方法を教えてください。

解決方法

S3 リソースへのアクセスを制限する

デフォルトでは、すべての S3 バケットがプライベートであり、明示的にアクセスが許可されているユーザーのみがアクセスできます。AWS を使用するときは、リソースへのアクセスを絶対に必要とする人にリソースへのアクセスを制限することをお勧めします。最小権限.の原則に従う。

次の方法で、S3 バケットまたはオブジェクトへのアクセスを制限します。

  • 特定のバケットとオブジェクトにアクセスできるユーザーを指定する AWS Identity and Access Management (IAM) ユーザーポリシーを作成します。IAM ポリシーはプログラムをを使って、複数のユーザーに対する Amazon S3 のアクセス許可を管理します。ユーザーポリシーの作成とテストの詳細については、 AWS Policy GeneratorIAM Policy Simulator をご参照ください。
  • 特定のバケットとオブジェクトへのアクセスを定義するバケットポリシーの作成バケットポリシーを使用すれば、AWS アカウント間でアクセスを許可し、パブリックまたは匿名のアクセス許可を付与し、条件に基づいてアクセスを許可またはブロックできます。バケットポリシーの作成とテストの詳細については、AWS Policy Generator をご参照ください。
    注: ユーザーが IAM ポリシーでアクセスを許可されている場合でも、バケットポリシーで拒否ステートメントを使用して特定の IAM ユーザーへのアクセスを制限できます。
  • パブリックアクセスを制限するため一元的な方法として、Amazon S3 Block Public Access を使用するBlock Public Access の設定はバケットポリシーとオブジェクトのアクセス許可を上書きします。一般に公開したくないアカウントやバケットに対しては、必ず Block Public Access を有効にしてください。
  • バケットとオブジェクトのアクセスコントロールリスト (ACL)を設定する。
    注: プログラムを使ってアクセス許可を管理する必要がある場合は、ACL ではなく IAM ポリシーまたはバケットポリシーを使用してください。ただしバケットポリシーが最大 20 KB のファイルサイズを超える場合には、ACL を使用できます。あるいは ACL を使用して、Amazon S3サーバーアクセスログまたは Amazon CloudFront ログへのアクセス許可を付与できます。

リソースを保護するのに ACL を使用するときは、以下を実行することをお勧めします。

  • 必ずバケットまたはオブジェクトに対する Amazon S3 のアクションを許可する ACL アクセス許可を確認してください。ACLの権限とそれらが許可するアクションのリストについては、What Permissions Can I Grant? をご参照ください。
  • 誰がバケットへの読み取りおよび書き込みのアクセス権を取得するかの設定は、厳重に行いましょう。
  • 読み取りアクセスを Everyone のグループに許可する前に、ユースケースを慎重に検討してください。この行為により、誰でもバケットまたはオブジェクトにアクセスできるようになるためです。
  • 書き込み アクセスを Everyone グループに許可しないでください。この設定により、誰でもバケットにオブジェクトを追加できるようになります。この設定により、誰でもバケット内のオブジェクトを削除できるようになります。
  • 書き込みアクセスを Any authenticated AWS user グルーにプ許可しないでください。このグループにはアカウント内の IAM ユーザーだけでなく、アクティブな AWS アカウントを持つユーザーも含まれます。アカウントの IAM ユーザーのアクセスを制御するには、代わりに IAM ポリシーを使用します。Amazon S3 が IAM ポリシーを評価する方法の詳細については、Amazon S3 がリクエストを許可する方法をご参照ください。

ポリシー、Block Public Access、ACL の使用に加えて、以下の方法で特定のアクションへのアクセスを制限することもできます。

  • MFA Delete を有効にします。これで、オブジェクトを削除したりバケットのバージョン管理を無効にする前に、ユーザーが Multi-Factor Authentication (MFA) デバイスを使用して認証することが必要になります。
  • MFA で保護された API アクセスを設定します。これで、ユーザーが特定の Amazon S3 API オペレーションを呼び出す前に AWS MFA デバイスで認証することが必要になります。
  • 一時的に S3 オブジェクトを他のユーザーと共有する場合は、そのオブジェクトへの期限付きアクセスを許可するための署名済みURL を作成します。詳細については、他ユーザーとのオブジェクトの共有をご参照ください。

S3 リソースのモニタリング

バケットとオブジェクトに対してどのようなアクションが実行されたかを追跡するには、次の方法でログ記録を有効にし、リソースをモニタリングします。

暗号化を使用してデータを保護する

ユースケースで送信中に暗号化が必要な場合に、Amazon S3 は HTTPS プロトコルをサポートしています。これは Amazon S3 との間で送受信されるデータを暗号化するものです。すべての AWS SDK と AWS ツールはデフォルトで HTTPS を使用します。
注: サードパーティのツールを使用して Amazon S3 とやり取りする場合は、開発者に連絡し、そのツールが HTTPS プロトコルもサポートしているかどうかを確認してください。

ユースケースが保存データの暗号化を必要とする場合、Amazon S3 ではサーバー側暗号化 (SSE) をご用意しています。SSE には SSE-S3SSE-KMS、または SSE-C のオプションがあります。オブジェクトをバケットに書き込むときに、SSE パラメータを指定できます。SSE-S3 または SSE-KMS を使用して、バケットでデフォルトの暗号化を有効にすることもできます。

ユースケースでクライアント側の暗号化が必要な場合は、クライアント側の暗号化を使用したデータの保護をご参照ください。