Cyberduck(サイバーダック)は、FTP、SFTP、WebDAV、AWS S3、Google Cloud Storage などさまざまなプロトコルやストレージサービスに対応したクライアントソフトです。macOS と Windows に対応しています。黄色いアヒルのアイコンが印象的ですね。
Google Cloud Storage を GUI(グラフィカルユーザインターフェース)で使えるクライアントソフトを探していたのですが、現在(2017年7月14日)のところこの Cyberduck くらいしか無いようです。そこで今回は、Cyberduck で Google Cloud Storage に接続するまでの手順と、他のユーザーとバケットを共有するための権限「アクセス制御リスト(ACL)」の設定方法をまとめてみました。
Cyberduck のインストール
Cyberduck のインストーラーは公式のWEBサイトからダウンロードできます。Cyberduck は基本的には無料で使うことができますが、Microsoftストアまたは MacAppストアから購入することもできますので、セキュリティ的にも安心して利用できます。
macOS の場合は、ダウンロードして解凍すると Cyberduckアプリそのものになりますので、アプリケーションフォルダに移動すればインストール完了です。
下は Cyberduck(バージョン6.1.0)が対応しているプロトコルやストレージサービスです。よく使われているサービスにはほぼ対応していますね。
Cyberduck で Google Cloud Storage に接続
Google Cloud Storage は OAuth 2.0 を使って認証と承認を行いますので、アクセスキーなどを発行する必要はありません。Cyberduckに「x-goog-project-id」とよばれる番号を入力するだけでOKです。
接続のテスト用に「sample-20170713」というバケットを1つ作成しています。
まず Google Cloud Platform のコンソールで「x-goog-project-id」を確認します。コンソール左上の「≡」メニューから「Storage」→「設定」を選択してください。
「プロジェクトアクセス」タブを選択すると「x-goog-project-id」が確認できますので、この番号を控えておきます。
Cyberduck を起動して「ブックマーク」→「新規ブックマーク」を選択します。(「新規接続」でも接続できますが詳細設定ができませんので、ブックマークからの接続をオススメします)
「Google Cloud Storage」を選択して、先ほど控えた x-goog-project-id の番号を「Project ID or Number」に入力したら、このウィンドウを閉じます。
Google Cloud Storage への接続ブックマークが作成されますので、クリックして接続します。
ブラウザが開き OAuth 2.0 認証処理が行われます。複数のアカウントが表示されている場合は Google Cloud Platform で使っているのと同じ Googleアカウントを選択します。
Cyberduckからの権限リクエストを許可しますので「許可」をクリックします。
認証コードが表示されますので、コピーします。
Cyberduckに戻って「Authorization code」に先ほどコピーした認証コードをペーストして「ログイン」をクリックします。
Google Cloud Storage のバケットが表示されていればログイン完了です。これで Cyberduck からファイルのアップロードやダウンロードなどを行うことができます。
Google Cloud Storage のアクセス制御リスト(ACL)の設定
複数のユーザーで Google Cloud Storage のバケットを共有する場合は、バッケットのアクセス制御リスト(ACL)を設定します。アクセスを許可するユーザーは、Googleアカウントや Googleグループなどの色々な方法で指定することができます。(アクセスを許可するユーザーは、Googleアカウントを持っている必要があります)
今回は Googleグループで、バッケットのアクセス制御リスト(ACL)を設定してみます。
Googleグループの作成
適当な Googleグループを作成します。グループのメールアドレスをアクセス制御リストに設定しますのでメモしておきましょう。
右上の設定メニューから「グループ設定」を選択します。
「メンパー」→「メンバーを直接追加」を選択し、バケットへのアクセスを許可する Googleアカウントのメールアドレスと簡単な招待メッセージを入力して「追加」をクリックします。
Googleグループの作成は以上です。Google Cloud Platform のコンソールに戻ります。
バケットのアクセス制御リスト(ACL)の設定
バケットのアクセス制御リスト(ACL)の設定は、コンソールの「バケットの権限を設定」でできるのですが、デフォルトオブジェクトACLの設定はコンソールからはできないため、gsutil コマンドでバケットのアクセス制御リストを設定します。
コンソールのメニューバーから Google Cloud Shell を開きます。
はじめに gcloud コマンドで、プロジェクトを Google Cloud Storage バケットを作成したプロジェクトに切り替えます。
先ほど作成した Googleグループのメールアドレス(sample-20170713@googlegroups.com)にバケットの所有者権限(OWNER)を追加します。
gsutil defacl ch -g sample-20170713@googlegroups.com:OWNER gs://sample-20170713
(参考)権限を削除する場合は、次のようなコマンドになります。
gsutil defacl ch -d sample-20170713@googlegroups.com gs://sample-20170713
Cyberduck の接続設定にバケット名を指定
Cyberduckからアクセス制御リストに設定したユーザーでバケットに接続する場合は、必ず接続先のバケット名をパスに指定してください。
バケット名を指定しない場合、Google Cloud Storage のルートに接続する権限はないため、下のようなエラーが発生します。
おわりに
Google Cloud Storage は AWS S3 のように静的ウェブサイトをホスティングすることもできます。もし興味がありましたら「Google Cloud Storage 独自ドメインで静的ウェブサイトをホストする」の記事も読んでみてくださいね。
コメント