プライベートにしたいファイルやバケットが、プライベートになっていることを確認したいです。Amazon S3のリソースへのアクセスを制限し、Amazon S3のリソースやパーミッションを監視するにはどうすればよいですか?

AWSの利用において、リソースへのアクセス制限が重要で、絶対に必要とされる要員にのみアクセス権(最低限の特権原則)を与えるのがベストプラクティスです 。

デフォルトではすべてのS3バケットがプライベートであり、明示的にアクセスを許可されたユーザーのみがアクセスできます。ほとんどのユースケースでは、S3で公的な資産をホストする(例えば、公開しているウェブサーバーで画像をホストする)のでなければ、S3バケットのファイルを読み込むような広い範囲のパブリックなアクセスは必要ありません。一般には公開しないのが最善の方法です。バケットのACLIAMとバケットポリシーを組み合わせて、S3リソースへのアクセスを制御できます。

またAWSは、サーバーのアクセスログやAmazon CloudWatch Log、AWS CloudTrail、AWS Trusted Advisorなど、セキュリティ構成の監視や監査を支援するサービスを提供しています。

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

S3バケットやIAMポリシーを使って、どのユーザーが、どの特定のバケットやオブジェクトにアクセスできるのかを定義した、独自のパーミッションをJSONベースで作成できます。例として、「ユーザーポリシーの例」 and 「バケットポリシーの例」をご覧ください。また、ユーザーやバケットのポリシーを作成、またはテストするために、AWS Policy GeneratorIAM Policy Simulatorを使うことができます。

S3コンソールを使用して、バケットやオブジェクトにACLを設定できます。ACLを使用してリソースを安全にするには、以下の手法を検討してください。

  • バケットへの読み書き可能なアクセスを、誰に対して許可するのかを厳格にしてください。バケットやオブジェクトに誰でもアクセスできるようになるので、Read アクセスをEveryoneグループに許可する前に、どのように使われるのかを注意深く検討してください。
  • バケット(課金されます)に誰でもオブジェクトを追加できるようになるため、また保持しておきたいバケット中のオブジェクトを誰でも削除できるようになるため、Write アクセスをEveryoneグループに決して許可するべきではありません。
  • アカウント上のIAMユーザーだけでなく、アクティブなAWSアカウントなら誰でも含まれる、Any authenticated AWS user groupについても同様です。アカウントのIAMユーザーのアクセスを制御するには、IAMポリシーを代わりに使用してください。IAMポリシーがAmazon S3でどのように評価されるかについては、「Amazon S3 がリクエストを許可する方法」をご覧ください。
  • もっときめ細やかな制御が必要ならば、カスタムのパーミッションセットで独自のACLを作成できます。

ポリシーやACLに加えて、MFA Deleteを有効にして、バケットやオブジェクトを削除する前には多要素認証デバイス(MFA)を使った認証が必要とすることもできます。削除したファイルを元に戻せるように Amazon S3 バケットを設定する方法を教えてください。

S3リソースを監視する

どのような処理がS3バケットに対して実行されたのかを追跡するには、S3リソースのログ記録を有効にすることが最も良い方法です。以下のオプションを検討してください。

生ログの提供に加えて、CloudTrailをCloudWatchやAWS Lambdaといったサービスと併せて使うと、あるS3の処理が実行された時に、特定の処理をトリガーできます(例えば、オブジェクトが削除された時に、セキュリティ管理者にメールするようSNS通知をトリガーする)。詳しくは、「Log S3 Data Event」をご覧ください。

もしビジネスサポートプランまたはエンタープライズサポートプランをお持ちなら、Trusted Advisorによる Amazon S3 Bucket Permissions checkを使って、オープンなバケットのパーミッションについての通知を受けられます。

ひとことこのTrusted Advisor checkは、バケットのACLを上書きしたバケットポリシーを監視しません。

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

もしお客様のユースケースで送信中の暗号化が必要ならば、S3はHTTPSプロトコルに対応しており、S3とのやり取りを暗号化できます。AWSのツールとSDKのすべては、デフォルトでHTTPSを使用します。

ひとことサードパーティー製のツールをお使いの場合、ツールがHTTPSプロトコルにも対応しているかどうかは、ツールの開発者に確認してください。

お客様のユースケースでRESTのデータを暗号化する必要がある場合は、S3はサーバーサイド暗号化(SSE) を提供します。バケットにオブジェクトを書き込むときに、S3 SSEのパラメーターを指定できます。S3はSSE-S3SSE-KMS、またはSSE-Cを提供します。

クライアントサイド暗号化が必要な場合は、「クライアント側の暗号化を使用したデータの保護」をご覧ください。


このページは役に立ちましたか? はい | いいえ

AWS サポートナリッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。

公開日: 2017 年 7 月 3 日