gsutil copy が GCE から「AccessDeniedException: 403 権限不足」を返す 質問する

gsutil copy が GCE から「AccessDeniedException: 403 権限不足」を返す 質問する

SSH 経由で GCE インスタンスにログインしています。そこからサービス アカウントを使用してストレージにアクセスしたいと思います。

GCE> gcloud auth list
Credentialed accounts:
 - [email protected] (active)

まず、このサービス アカウントが、自分が作業しているプロジェクトの権限で「編集可能」のフラグが付けられていることを確認しました。また、ファイルをコピーするバケットに対する書き込み ACL を付与していることも確認しました。

local> gsutil acl ch -u [email protected]:W gs://mybucket

しかし、次のコマンドは失敗します。

GCE> gsutil cp test.txt gs://mybucket/logs

(「mybucket」の下に「logs」が作成されていることも確認しました)。

表示されるエラーメッセージは次のとおりです:

Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission               0 B  

何が足りないのでしょうか?

ベストアンサー1

他に注意すべき点は、GCE VM を作成するときに適切なスコープを設定することです。VM にサービス アカウントがアタッチされている場合でも、GCS にアクセスするには devstorage スコープを割り当てる必要があります。

たとえば、devstorage.read_onlyスコープ付きで VM を作成した場合、サービス アカウントにバケットへの書き込み権限があっても、バケットへの書き込みは失敗します。devstorage.full_controlまたは が必要になりますdevstorage.read_write

のセクションを参照してくださいサービス アカウントを使用するインスタンスの準備詳細については。

注: デフォルトのコンピューティング サービス アカウントのスコープは非常に制限されています (GCS への読み取り専用を含む)。これは、デフォルトのサービス アカウントにプロジェクト エディターの IAM 権限があるためです。任意のユーザー サービス アカウントを使用する場合、ユーザーが作成したサービス アカウントはデフォルトですべてのスコープ アクセスを取得するため、これは通常問題にはなりません。

VMに必要なスコープを追加した後も、gsutil新しいスコープを持たないキャッシュされた認証情報がまだ使用されている可能性があります。gsutil~/.gsutilコマンドを再度実行する前に削除してください。(フォローコメントでこの点を指摘していただきありがとうございます。

おすすめ記事