Amazon S3 バケット内のファイルを保護するにはどうすればよいですか?

所要時間2分
0

Amazon Simple Storage Service (Amazon S3) リソースへのアクセス権限を制限し、これらのリソースへのアクセスを監視したいと考えています。

簡単な説明

ファイルと Amazon S3 バケットが安全であることを確認するには、以下のベストプラクティスに従ってください。

解決方法

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

デフォルトでは、すべての S3 バケットはプライベートで、明示的にアクセスを許可されたユーザーのみがアクセスできます。

以下を実行して、S3 バケットまたはオブジェクトへのアクセスを制限します。

  • 特定のバケットやオブジェクトにアクセスできるユーザーを指定する IAM ユーザーポリシーの作成。IAM ポリシーは、複数のユーザーの Amazon S3 アクセス権限をプログラムにより管理する方法を提供します。ユーザーポリシーの作成とテストの詳細については、「AWS ポリシージェネレーター」と「IAM ポリシーシミュレーター」を参照してください。
  • 特定のバケットやオブジェクトへのアクセスを定義するバケットポリシーを書く。バケットポリシーを使用して、AWS アカウント全体へのアクセスを許可したり、公開または匿名のアクセス権限を付与したり、条件に基づいてアクセスを許可またはブロックしたりできます。バケットポリシーの作成とテストの詳細については、「AWS Policy Generator」を参照してください。
    **注:**バケットポリシーで拒否ステートメントを使用して、特定の IAM ユーザーへのアクセスを制限できます。IAM ポリシーでユーザーにアクセス権限が付与されている場合でも、アクセスを制限できます。
  • Amazon S3 パブリックアクセスブロックを使って、パブリックアクセスを一元的に制限する方法として使用しています。パブリックアクセスブロックの設定は、バケットポリシーとオブジェクト権限よりも優先されます。公開したくないすべてのアカウントとバケットについて、必ず [公開アクセスをブロック] を有効にしてください。
  • バケットとオブジェクトにアクセス制御リスト (ACL) を設定します。
    **注:**権限をプログラム的に管理する必要がある場合は、ACL の代わりに IAM ポリシーまたはバケットポリシーを使用してください。ただし、バケットポリシーが最大ファイルサイズの 20 KB を超える場合は ACL を使用できます。または、ACL を使用して Amazon S3 サーバーアクセスログまたは Amazon CloudFront ログへのアクセスを許可することもできます。

ACL を使用してリソースを保護する場合は、次のベストプラクティスを考慮してください。

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

ポリシー、ブロックパブリックアクセス、ACL を使用する以外に、次の方法で特定のアクションへのアクセスを制限することもできます。

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

S3 リソースを監視

ログ記録を有効にして S3 リソースを監視するには、次の方法があります。

  • AWS CloudTrailログを設定します。デフォルトでは、CloudTrail はバケットレベルのアクションのみを追跡します。オブジェクトレベルのアクション (GetObject など) を追跡するには、Amazon S3 データイベントを有効にします。
  • Amazon S3 サーバーアクセスログを有効にします。これらのログを確認する方法の詳細については、「Amazon S3 サーバーアクセスログ形式」を参照してください。
  • AWS Config を使用して、パブリックの読み取りまたは書き込みアクセスを許可する違反がないか、バケットの ACL とバケットポリシーを監視します。詳細については、「s3-bucket-public-read-prohibited 」および「s3-bucket-public-write-prohibited」を参照してください。
  • AWS IAM Access Analyzer を使用すると、別の AWS アカウントから S3 リソースへのアクセスを許可するバケットまたは IAM ポリシーを確認するのに役立ちます。
  • Amazon Macie を使用すると、バケットに保存されている機密データの識別、バケットへの幅広いアクセス、アカウント内の暗号化されていないバケットの識別を自動化できます。
  • CloudTrail を CloudWatch や AWS Lambda などの他のサービスと併用すると、S3 リソースに対して特定のアクションが実行されたときに特定のプロセスを呼び出すことができます。詳細については、「CloudWatch イベントを使用して Amazon S3 オブジェクトレベルのオペレーションをログに記録する」を参照してください。
  • ビジネスサポートプランまたはエンタープライズサポートプランをお持ちの場合は、AWS Trusted Advisor の S3 バケット権限チェックを使用できます。このチェックにより、オープンアクセス権限のあるバケットについて通知されます。
    **注:**この Trusted Advisor チェックは、バケット ACL をオーバーライドするバケットポリシーを監視しません。

暗号化を使用してデータを保護してください

ユースケースで転送中の暗号化が必要な場合、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 を使用してバケットのデフォルト暗号化を有効にすることもできます。

ユースケースでクライアント側の暗号化が必要な場合は、「クライアント側の暗号化によるデータの保護」を参照してください。


関連情報

Amazon SES における ID およびアクセス管理

Amazon S3 におけるデータ保護

他の AWS アカウントのユーザーに Amazon S3 バケットへのアクセスに MFA の使用を義務付けるにはどうすればよいですか?

Amazon S3 のバケットとオブジェクトに誰がアクセスしたかを確認する方法を教えてください。

AWS公式
AWS公式更新しました 2年前