
ユーザーがウェブ アプリケーションにアップロードするファイルを Google クラウド バケットでホストしたいのですが、問題は、ユーザーが特定のページにアクセスしたときにファイルを取得する必要もあるため、権限を一般に公開する必要があることです。
これは明らかに大きなセキュリティ リスクです。ファイル パスに uid を含むファイル名 (つまり、「attachments/user_id/some_other_id/individual_file_uid/NameOfFile」) を付けたとしても、攻撃者がその場所に移動するだけでhttps://www.googleapis.com/storage/v1/b/my_bucket/o/attachments
、パブリックにアクセス可能なバケット内にあるすべてのディレクトリとファイルが一覧表示されるからです。ただし、タグを使用してこれらのファイルを Web アプリに含めるには<img/>
、 の邪魔をせずにこれらのファイルへのアクセスを制限する別の方法がわかりませんimg src
。
私が思いついた唯一の方法は、これらのファイルの GET を個々のドメイン名で制限することです。つまり、Web アプリケーションが application.example.com でホストされている場合、ファイルに application.example.com からのみアクセスできるように制限します。ここでいくつかの情報を見つけました:https://cloud.google.com/resource-manager/docs/organization-policy/restricting-domainsしかし、これはドメイン名によるアクセス制限ではなく、組織ドメインによるアクセス制限について言及していると思います。
私の質問は実際には 2 つあると思います。
- 私の見方は間違っていますか? これらの画像を安全に保存し、同時に Web アプリケーションからアクセスできるようにするより良い方法はありますか?
- これらのファイルへのアクセスをドメイン名で制限するにはどうすればよいですか?
答え1
私の見方は間違っていますか? これらの画像を安全に保存し、同時に Web アプリケーションからアクセスできるようにするより良い方法はありますか?
はい、あなたが提供したドキュメントリンクに関しては、これを間違って見ています。
DNS ドメイン名で Cloud Storage へのアクセスを制限または許可することはできません。Cloud Storage バケットを公開するか、署名付き URL を使用してアクセスを許可するか、Cloud SDK API を使用するか、ID ベースのアクセス制御を使用することができます。
これらのファイルへのアクセスをドメイン名で制限するにはどうすればよいですか?
できません。この機能は Cloud Storage の一部ではありません。詳細については、以前のコメントを参照してください。
唯一の選択肢は(セキュリティを考慮すると)署名付き URL を使用することです。