developer's diary

最近はc#のエントリが多いです

【調査】AWS SDK for JavaScript in the Browserを利用してS3のセキュリティを確認する

要旨

Facebookでログインしたアカウントを利用してAmazonのs3にファイルをアップロードした場合、 他ユーザ(別アカウントでFacebookからログインしたユーザ)からどう見えるかを検証。

詳細

  • プライベートなバケットを用意(CORS Configuration EditorでCROSを許可しておく)
  • AWS.WebIdentityCredentialsを利用してFacebookのアカウントにAMIを発行する
  • 発行したAMIのアカウントでS3に対してプライベートなバケットにファイルをアップロード
  • 他のユーザでログインして確認した場合どのように表示されるか。
  • S3からファイルを表示する際は、有効期限付きのURLを生成する(getSignedUrl)

AWS SDK for JavaScript in the Browser

※【AWS SDK for JavaScript in the Browser】はDeveloper Previewです。

ブラウザ内の AWS SDK for JavaScript

権限の種類

権限 意味
private 所有者に FULL_CONTROL が付与される。
public-read 所有者に FULL_CONTROL 、All Users に READ が付与される。
public-read-write 所有者に FULL_CONTROL 、All Users に READ/WRITE が付与される。
authenticated-read 所有者に FULL_CONTROL 、Authenticated Users に READ が付与される。
bucket-owner-read オブジェクト所有者に FULL_CONTROL 、バケット所有者に READ が付与される。
bucket-owner-full-control バケット所有者とオブジェクト所有者に FULL_CONTROL が付与される。

権限の参考

結果

本人が表示

f:id:mitsugi-bb:20141025132923j:plain

他人が表示

f:id:mitsugi-bb:20141025132822j:plain

結果

private、bucket-owner-read、bucket-owner-full-controlで保存したファイルは

ログインユーザまたは、バケット所有者しかアクセスできない。

参考

http://devlog.mitsugeek.net/entry/2014/03/08/AWS_SDK_for_JavaScript_in_the_Browser%E3%81%A7s3%2Bjs%2Bfacebook%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6

http://fb.dev-plus.jp/reference/getstart/website/auth/