こんにちは、技術3課の峯です。
今回はCyberduckを利用しS3にファイルをアップロードする時の注意点について紹介したいと思います。
Cyberduckとは?
CyberduckとはFTPクライアントソフトで、GUIで簡単に操作できることが魅力です。公式サイトからダウンロードすると無料で使うことができます。
CyberduckでS3バケットに接続
あらかじめIAMユーザーを作成し、Cyberduckから接続します。「新規接続」からAmazon S3を選択し設定します。アクセスキー・シークレットキーを入力、またパスには「/"バケット名"」を入力します。接続を
クリックすると接続できます。IAMユーザーの権限は「"Action": "s3:*"」で権限をつけることが多いかと思います。
注意点
さて、注意点ですが、Cyberduckのデフォルト設定でファイルをアップロードすると、なんと「Everyone」と「Any AWS user」にオブジェクトの読み取りが許可されてしまいます。これはつまりURLを知っていれば誰でも、もしくはAPIが叩ければ誰でもオブジェクトが読み取り可能な状態です。
対処法
Cyberduckのデフォルト設定ではアップロードするファイルのアクセス権限が以下の画像のようになっています。この設定は編集>環境設定>転送>アクセス権限から確認できます。「グループ」と「その他」の読みのチェックを外すことで解決します。
以下が、設定後にアップロードしたファイルになります。「Everyone」と「Any AWS user」にオブジェクトの読み取りは許可されていません。
補足
『IAMユーザーの権限は「"Action": "s3:*"」で権限をつけることが多いかと思います』と前述しましたが、PutObjectAcl権限をつけなければCyberduckの設定はデフォルトでも、アップロードするファイルに「Everyone」と「Any AWS user」にオブジェクトの読み取りは許可されません。しかし、それではインターネットに公開したいオブジェクトをアップロードしたい場合にそれができなくなってしまいます。ですので、Cyberduckの設定を適切に変更するのが対処法と言えます。