世界中に公開された
「顧客名簿.csv」
「便利だから」とクラウドストレージ(S3)を全公開設定にしていませんか?
URLを知っている人だけが見られる? いいえ、検索エンジンは全てを知っています。
公園のベンチに顧客名簿を置き忘れるのと同じ、致命的な過ちです。
- S3バケットのポリシーに `"Principal": "*"` という記述がある
- 画像を表示するために、バケット全体を「Webサイトホスティング」設定にしている
- 開発環境だからと、誰もが読み書きできる設定(Public Read/Write)にしている
- アップロードされたファイル名が連番(001.pdf, 002.pdf)で推測可能だ
あなたの会社の重要書類は、今まさにダウンロードされています。
01. 公園のファイルキャビネット
クラウドストレージはデフォルトで「非公開(Private)」です。
しかし、開発者が「アクセス権限とか面倒くさいから」という理由で、安易に「Public」スイッチをオンにします。
その瞬間、認証の壁は消え去り、世界中の誰でもURLさえ分かればファイルにアクセスできるようになります。
そして悪いことに、攻撃者は辞書攻撃でURLを総当たりしてきます。
「全員に見せたい」時だけ使え。
02. 署名付きURLの活用
ユーザーだけに特定の画像やPDFを見せたい場合、バケットを公開する必要はありません。
「署名付きURL(Presigned URL)」という機能を使いましょう。
これは「5分間だけ有効な特別なチケット(URL)」を発行する仕組みです。
これなら、S3を非公開に保ったまま、必要な人にだけ安全にファイルを渡せます。
03. Block Public Access
AWS S3には「Block Public Access」という、うっかり公開を防ぐ最強の盾があります。
これをアカウントレベル、バケットレベルで有効にしてください。
そうすれば、間違った設定をしようとしてもS3が「拒否」してくれます。
人間はミスをする。だからシステム側で「ミスできない」ようにするのです。