S3 に保存されている機密リソースの署名付き URL にユーザーをリダイレクトすることを計画しています。これらはユーザーの権限を確認した後に生成され、積極的なタイムアウト (30 秒) があります。ただし、クライアントのマシンに存在するマルウェアによって、URL をキャプチャし、URL の有効期限内にファイルをダウンロードできるかどうかが心配です。それとも、私はあまりにも偏執的ですか?
これが以前に回答されている場合は、その方向に向けてください。あなたの助けに感謝。
有効期限が切れる前に URL を取得した人は誰でも、それを使用してデータにアクセスできます。S3 は、データへのアクセスを許可する IP アドレスを制限するバケット ポリシーをサポートしています。
http://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html
ただし、この場合、クライアント マシン上のマルウェアが心配です。だから、それは役に立ちません。クライアント プロセスだけがデータを復号化できるように、データを暗号化することを検討しましたか?
安全でない/不注意なクライアントが何らかの方法でデータをリークすることに対して、依然として脆弱です。
これを見つけました - http://docs.aws.amazon.com/AmazonS3/latest/dev/AuthUsingTempFederationTokenRuby.html 試してみました。うまくいくようです。ドキュメントからのコードの言い換え -
# Start a session with restricted permissions.
sts = AWS::STS.new()
policy = AWS::STS::Policy.new
policy.allow(
:actions => ["s3:ListBucket"],
:resources => "arn:aws:s3:::#{bucket_name}"
).condition.add(:like, :referer, "domain.com")
session = sts.new_federated_session(
'User1',
:policy => policy,
:duration => 2*60*60)
したがって、作成するポリシーには、クライアントがダウンロードする元の IP アドレス、またはアプリのドメインに設定された aws:Referer フィールドを含めることができます。これにより、リソースに少なくとも 1 レベルの障害が生じると思います。IPアドレスまたはリファラーは簡単に偽装できることがわかりました。しかし、保護がまったくないよりはましです。