パブリックアクセスのブロックとバケットポリシー
S3オブジェクトが誤って公開されるのを防ぎます。
「パブリックアクセスのブロックとバケットポリシー」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
最も一般的な侵害
設定を誤ったS3(Simple Storage Service)バケットからのデータ漏えいは、クラウドで最も一般的な侵害の一つです。たった 1 つの誤った設定で、何百万ものオブジェクトがインターネット全体に公開される可能性があります。
S3 はデフォルトでは非公開ですが、複数の権限レイヤーによって誤って公開されることがあります。これらのレイヤーを理解することは、不可欠なセキュリティ知識です。
S3 のアクセスレイヤー
S3 オブジェクトへのアクセスは、複数の仕組みによって許可できます。
- ユーザーとロールに設定するIAM ポリシー
- バケットにアタッチするバケットポリシー
- バケットとオブジェクトに設定するACL(アクセスコントロールリスト)
- 他の設定より優先されるパブリックアクセスブロックの設定
公開状態になる原因の多くは、バケットポリシーまたは ACL の設定ミスです。
パブリックアクセスをブロックする
S3 Block Public Access(BPA)は、全体を保護する安全スイッチです。有効にすると、バケットポリシーや ACL の内容にかかわらず、パブリックアクセスを許可する設定を上書きします。
AWS は現在、新しいバケットで BPA をデフォルトで有効にしています。1 つの設定ミスでデータが公開されないよう、アカウントレベルでも有効にしておきます。
BPA の仕組み
BPA には、パブリック ACL をブロックする設定、既存のパブリック ACL を無視する設定、パブリックなバケットポリシーをブロックする設定、アクセスポイント経由のパブリックアクセスを制限する設定の 4 つがあります。
これらを組み合わせると強固な上限として機能します。誰かがパブリックな読み取りを許可するポリシーを書いても、BPA が拒否します。偶発的な公開に対する最も強力な安全策です。
バケットポリシー
バケットポリシーは、バケットにアタッチするリソースベースの JSON ポリシーです。誰(プリンシパル)が、どのオブジェクトに対して、どのアクションを、どの条件で実行できるかを定義します。
バケットポリシーは、アカウント間アクセスや細かな制御に有効ですが、Principal に "*" を指定すると、全世界にアクセスを許可してしまいます。慎重に確認してください。
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}危険なワイルドカード
先ほど見たスニペットは、データ漏えいがどのように起きるかを正確に示しています。Principal "*" と s3:GetObject の組み合わせにより、匿名ユーザー全員にすべてのオブジェクトへの読み取りアクセスが与えられます。
意図的に公開コンテンツをホストしているのでなければ、これは設定ミスです。パブリックアクセスブロックが上書きしてくれるため、BPA が安全網になります。
ポリシーで暗号化を強制する
バケットポリシーはアクセスを許可するだけでなく、セキュリティ条件を必須にすることもできます。一般的な方法は、暗号化されていないアップロードや TLS を使用していないアップロードを拒否することです。
aws:SecureTransport または s3:x-amz-server-side-encryption を条件にした Deny を使用すると、すべての put 操作で安全なデータ取り扱いを強制できます。
条件で制限する
条件を使うと、特定の VPC エンドポイント、既知の IP 範囲、または aws:PrincipalOrgID で指定した組織からのみアクセスを許可するなど、コンテキストに応じてポリシーを厳格化できます。
これらの条件キーによって、ワークロードに必要なアクセスだけを正確に許可し、それ以上の権限を与えずに済みます。認証情報が悪用された場合の影響範囲も小さくできます。
露出を監査する
ツールを使うと、攻撃者に悪用される前にリスクを見つけられます。IAM Access Analyzerは、アカウント外で共有されているバケットを検出し、S3コンソールでは各バケットの公開・非公開インジケーターを確認できます。
AWS ConfigルールとSecurity Hubを使うと、すべてのバケットでBlock Public Accessが有効になっているかを継続的に確認できます。
アカウントレベルでの強制
Block Public Accessはバケットごとではなくアカウントレベルで適用し、既存および将来作成されるすべてのバケットを自動的に対象にします。
アカウント全体への適用により、新しく作成されたバケットが対象から漏れる隙間をなくせます。AWS ConfigとSCPを使って、誰も設定を無効にできないようにすれば、公開による露出を構造的に不可能にできます。
多層防御
単一の制御だけでは十分ではありません。アカウントレベルのBlock Public Access、最小権限のバケットポリシー、デフォルト暗号化、継続的な監査を組み合わせてください。
1つの層の設定に誤りがあっても、ほかの層がデータを保護します。このように層を重ねることで、S3を頻繁な情報漏えいの原因から、確実に非公開なストレージへと変えられます。
クイックチェック
最も強力な保護策を見つけてください。
まとめ
S3の設定ミスは、情報漏えいの主な原因です。アクセスはIAM、バケットポリシー、ACL、そしてマスターとなるBlock Public Accessスイッチによって多層的に制御されます。Block Public Accessは公開許可を上書きするため、アカウント全体で有効にしておく必要があります。Principal "*"を指定したポリシーはデータを漏えいさせるため、代わりに条件を使ってTLS、暗号化、対象を限定したアクセスを強制してください。Access Analyzer、Config、Security Hubで継続的に監査し、多層防御によって単一のミスでオブジェクトが露出しないようにしてください。
よくある質問
「パブリックアクセスのブロックとバケットポリシー」レッスンは無料ですか?
はい。「パブリックアクセスのブロックとバケットポリシー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「パブリックアクセスのブロックとバケットポリシー」で何を学びますか?
S3オブジェクトが誤って公開されるのを防ぎます。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「パブリックアクセスのブロックとバケットポリシー」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- パブリックアクセスのブロックとバケットポリシー
- アクセスポイントとオブジェクト所有権
- Amazon Macieによる機密データの検出
- データライフサイクルと安全な削除