Amazon Web Services ブログ

Amazon S3 Block Public Access – アカウントとバケットのさらなる保護

新規で作成される Amazon S3 バケットとオブジェクトは、デフォルトでは (常に継続して) プライベートであり、保護されていますが、アクセスコントロールリスト (ACL) と バケットポリシーを利用すると、他の AWS アカウントに対し、あるいはパブリック (匿名) のリクエストに対し、アクセス権を付与することができます。ACL と ポリシーにより柔軟性が大きく向上します。複数のアカウントへのアクセス許可の付与特定の IP アドレスへのアクセスの制限Multi-Factor Authentication (MFA) の使用要求、他のアカウントがバケットに新規オブジェクトをアップロードすることの許可の他、さらに多くのことが可能です。

私たちには、ユーザーがパブリックのバケットやオブジェクトを必要に応じて確実に使用できるようにしたいとの思いがあります。そのため、くれぐれも単純ミスや誤解が原因でバケットやオブジェクトがパブリックでアクセス可能になってしまうことのないよう、ツールを提供しています。例えば、昨年は [パブリック] インジケータ―を提供し、どのバケットがパブリックアクセス可能なのか一目でわかるようにしました。

バケットの表示は、デフォルトでパブリックバケットがページ上部に表示されるようソートされます。

また、Trusted Advisor のバケットアクセス権限チェックを無料にしました。

新しい Amazon S3 Block Public Access
今日は、Amazon S3 Block Public Access の紹介を通して、皆さんがバケットとオブジェクトをより簡単に保護できるようにしたいと思います。これは新しいレベルの保護であり、アカウントレベルで、また今後作成するものを含めた個々のバケットに対して機能します。ACL やポリシーで指定された既存のパブリックアクセスをブロックしたり、新規に作られたアイテムへのパブリックアクセス付与を確実に防止したりできます。AWS アカウントをデータレイクや他のビジネスアプリケーションのホストに使用している場合、パブリックアクセスをブロックすることで、意図せぬ公開をアカウントレベルで防ぐのに役立ちます。パブリックアクセスはウェブホスティングに役立つことをぜひ理解していただきたいと思います。

この機能は簡単に使えるよう設計されており、S3 コンソール、CLI、S3 API、CloudFormation テンプレートでアクセスできます。S3 コンソールとパブリック設定のバケットから始めましょう。

[このアカウントのパブリックアクセス設定] をクリックすると、アカウントレベルでの制御を行うことができます。

パブリック ACL を管理するためのオプションが 2 つと、パブリックバケットポリシーを管理するためのオプションが 2 つあります。それぞれを詳しく見ていきましょう。

新規のパブリック ACL と、パブリックオブジェクトのアップロードをブロックする – このオプションは、新規のバケットとオブジェクトについてパブリック ACL の使用を禁止するものです。このオプションを使用すると、今後の PUT リクエストにパブリック ACL が含まれている場合、そのリクエストを確実に失敗させます。既存のバケットやオブジェクトには影響しません。バケットやオブジェクトを、ACL でパブリックにしようとする今後の試みから保護するには、この設定を使用します。アプリケーションがパブリック ACL のオブジェクトをアップロードしようとするか、管理者がバケットにパブリックアクセス設定を適用しようとすると、この設定によりバケットやオブジェクトのパブリックアクセス設定をブロックします。

パブリック ACL を通じて付与されたパブリックアクセスを削除する – このオプションは、S3 によるリクエストの承認時に一切のパブリックアクセスを評価させないようにするもので、ACL を使用してバケットとオブジェクトをパブリックにすることを確実に防止します。この設定は、バケット内の現在および今後のオブジェクトに対するパブリックアクセス設定を上書きします。既存のアプリケーションがパブリック ACL のオブジェクトをバケットにアップロードするようになっている場合、この設定はオブジェクトの設定を上書きします。

新規のパブリックバケットポリシーをブロックする – このオプションは、新規のパブリックバケットポリシーの使用を禁止するものです。このオプションを使用すると、今後は PUT リクエストにパブリックバケットポリシーが含まれている場合、そのリクエストを確実に失敗させます。これも同様に、既存のバケットやオブジェクトには影響しません。この設定は、パブリックアクセスを与えるようにバケットポリシーを更新することを確実に防止します。

パブリックポリシーを持つバケットへのパブリックアクセスとクロスアカウントアクセスをブロックする – このオプションを設定すると、パブリックにアクセス可能なバケットへのアクセスが、バケット所有者と AWS のサービスに制限されます。このオプションを使用すると、パブリックポリシーのあるバケットを保護すると同時に、そのポリシーを削除することができます。AWS のサービスでバケットに記録された情報が、パブリックにアクセス可能になることを防ぐのに役立ちます。

変更するには、[編集] をクリックし、目的のパブリックアクセス設定を確認して、[保存] をクリックします。

内部使用の AWS アプリケーションに使用するすべてのアカウントで、これらの設定を利用するよう推奨します。

次に意図通り動作することを確認します。

ここまで終えたら、アプリケーションとスクリプトをテストして、すべてが想定通りに機能していることを確認する必要があります。

アカウントレベルでこれらの設定を行うと、この設定は現在のバケットと、今後作成するバケットに適用されます。ただし、アクセスコントロールをより詳細に実施する場合には、これらのオプションを個別のバケットに対して設定することも可能です。アカウントレベルで設定したオプションと、バケットに対して設定したオプションが混在する場合、念のために保護を追加します。バケットを選択し、[パブリックアクセス設定を編集する] をクリックします。

次に目的のオプションを選択します。

すでにアカウントレベルで全パブリックアクセスを拒否しているため、実際には余分な設定ですが、バケットレベルで制御可能だということは覚えておいてください。バケットレベルでオプションを変更しても、アカウントレベルでの設定は上書きできません。この点に留意してください。

すべてのバケットについて、パブリックアクセスのステータスが一目でわかります。

プログラムアクセス
この機能は、S3 API を呼び出すことでも利用できます。これが関数です。

GetPublicAccessBlock – アカウントまたはバケットに対するパブリックアクセスのブロックオプションを取得します。

PutPublicAccessBlock – アカウントまたはバケットに対するパブリックアクセスのブロックオプションを設定します。

DeletePublicAccessBlock – アカウントまたはバケットからパブリックアクセスのブロックオプションを削除します。

GetBucketPolicyStatus – バケットのアクセスポリシーがパブリックか否かを調べます。

バケットを CloudFormation テンプレートを介して作成する場合は、そのバケットのオプションを設定することもできます。

{
   "Type":"AWS::S3::Bucket",
   "Properties":{
      "PublicAccessBlockConfiguration":{
         "BlockPublicAcls":true,
         "IgnorePublicAcls":false,
         "BlockPublicPolicy":true,
         "RestrictPublicBucket":true
      }
   }
}

知っておくべきこと
S3 Block Public Access を利用する際には、以下のことを覚えておきましょう。

新規バケット – 今後、S3 コンソールで作成するバケットには 4 つの設定がすべて使用可能であり、ウェブホスティング以外のあらゆるアプリケーションに推奨されています。バケットをパブリックにするためには、1 つ以上の設定を無効化する必要があります。

自動推論 – 与えられたポリシーと ACL のどちらを考慮するかは、Zelkova Automated Reasoning システムを使用して判断します (詳細については、How AWS Uses Automated Reasoning to Help You Achieve Security at Scale をご覧ください)。

組織AWS Organizations を使用している場合、Service Control Policy (SCP) を使って、組織内の AWS アカウントに対し利用できる設定を制限することができます。例えば、任意のアカウントに対して任意のパブリックアクセス設定を行い、その後 SCP を使用して、アカウントの所有者により設定が変更されることがないよう設定できます。

料金 – この機能を利用するのに料金はかかりません。支払は、S3 API へのリクエストに対する通常の料金となります。

今すぐ利用可能です!
Amazon S3 Block Public Access は、すべての商用 AWS リージョンですでに利用可能で、今日からすぐに使用を開始できます。ぜひご利用ください。

Jeff;