質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Amazon CloudFront

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1099閲覧

一般的なAWSでのスマホアプリでの画像配信について

pen_ari

総合スコア50

Amazon CloudFront

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/05/21 06:16

編集2021/05/21 06:21

一般的なSNSのようなユーザが投稿した画像を閲覧可能なサイトがあったとして、その画像は限られた範囲にしか公開できないものだとしたいときに
どのような制限で限られたユーザのみ閲覧可能を実現するのがベストプラクティスでしょうか
現状は以下のように考えております

サーバアプリケーション:ec2, lambda, ecs等 DB:RDS ユーザがアップしたコンテンツ:S3 サーバアプリにて画像がpostされたときにランダム文字列を生成しファイル名とする。 S3へアプリからputObjectを行い、RDSへランダム文字列を公開範囲と紐付けて保存する cloudFrontまたはS3をパブリック公開し、直接のURLでのアクセスを可能とする サーバアプリは画像をリクエストされたときに、公開範囲内のユーザからのリクエストであればその画像のS3内のパスを返却する

上記実装でランダム文字列を当てられない限りは外部からのアクセスは不可かと思いますが、URLさえ当ててしまえば誰でも画像が取得できてしまうのは如何なものかと思い。。
なにか正しいやり方が他にあるのでしょうか?
サーバアプリでbase64エンコードして返却してクライアントアプリで画像に戻したりするべきなんですかね?
助言や参考になるサイトなどありましたらお願い致します

追記
試しにtwitterで鍵アカの人の画像urlコピーしてログアウト後アクセスしたら画像取得できたので
そういうものだと考えて良さそうな気がしてきました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ベストプラクティスかどうかわかりませんが、pre-signed URLを使うとある程度絞れるのではないでしょうか。
認証済みのユーザ
もちろん、発行したpre-signed URLが有効なうちに漏れたらアクセスできちゃいますけどね…。

下記はアップロードの場合の話ですが、Cognitoと連携して認証済みユーザのみpre-signed URLを発行できるようにすればある程度目的に近いことができそうだなとは思います。
【 AWS 】Amazon Cognitoで認証を行って、S3にファイルをアップロードする仕組みを実装してみた(1)

もしかしたらpre-signed URLを使わないで、単純に認証済みユーザのみアクセス出来るように権限コントロールすれば行けるかもしれませんが、細かくはきちんと設計してみないとちょっとわからないですね。

投稿2021/05/21 08:08

yu_1985

総合スコア7447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pen_ari

2021/05/21 14:10

ご回答ありがとうございます。 ちなみに世間一般のwebアプリとしては 私が最初に提示したようなURLさえ知っていれば誰でも閲覧可能だが、そもそもURLの推定が実質不可能になるようにする というのが一般的なのでしょうか
mike2mike4

2021/05/21 14:34

暗号もキーを「たまたま当てれば」復号化できるので、同じような物かと。
yu_1985

2021/05/22 11:23

そのようなユースケースが一般的かどうかはちょっとわかりません。 というか、まずそういう要件のWEBアプリが世の中にどの程度あるかですね。 正直要件次第としか言いようがありません。「世間一般」が何を指しているのかわかりかねます。 衝突の可能性が限りなく低いパスを使用することによって他社からの閲覧の可能性をほぼゼロにすることで問題ないならそうすればいいですし、そうでないなら何らかの形で明確に権限を要求すればいいでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問