3

AppEngineアプリケーションがオブジェクトを作成しました。現在、gsutilを使用してaclsを変更しようとしていますが、プロジェクトの所有者であるにもかかわらず、変更できません。

$ gsutil getacl gs://mybucket/3c3765c2e7d4bfe6320c54fa4c8538dc.png
GSResponseError: status=403, code=AccessDenied, reason=Forbidden.

$ gsutil ls -L gs://mybucket/3c3765c2e7d4bfe6320c54fa4c8538dc.png
gs://mybucket/3c3765c2e7d4bfe6320c54fa4c8538dc.png:
    Creation time:  Mon, 31 Dec 2012 00:17:06 GMT
    Cache-Control:  public, max-age=3600, no-transform
    Content-Length: 30317
    Content-Type:   image/png
    ETag:           3df68afeffcba39dbfdf568d78bb4c72
    ACL:            ACCESS DENIED. Note: you need FULL_CONTROL permission
                    on the object to read its ACL.
TOTAL: 1 objects, 30317 bytes (29.61 KB)

このオブジェクトにFULL_CONTROLがないのはなぜですか?

https://groups.google.com/d/msg/gs-discussion/-aQISyaeeFo/9L_ML2SnV0MJから

4

1 に答える 1

3

App Engineは通常、アプリのサービスアカウントを使用してGoogleCloudStorageにアクセスします。サービスアカウントは、gsutilで使用するGmailアカウントとは異なるユーザーです。

バケットを持っている、WRITEまたはFULL_CONTROLバケットにアクセスできるということは、オブジェクトを削除できることを意味します。オブジェクトを読み取ったり、オブジェクトのACLを変更したりできるという意味ではありません。このためには、オブジェクトが必要であるREADFULL_CONTROL、オブジェクトにアクセスします。オブジェクトACLはバケットACLに直交しています。

したがって、何が起こっているのかは次のとおりです。

  • バケットACLを使用すると、ユーザーとサービスアカウントの両方がバケットに書き込むことができます。
  • サービスアカウントは、バケットのデフォルトオブジェクトACLを適用して、新しいオブジェクトを作成します。
  • バケットのデフォルトオブジェクトaclは、このオブジェクトに対する完全な制御を許可しません。

実行gsutil getdefacl gs://mybucketして、デフォルトのオブジェクトaclがあなたまたはあなたのグループの1つFULL_CONTROLに新しいオブジェクトを許可することを確認します。

そうでない場合は、xmlドキュメントを編集して、次のようなものを含めて実行しますgsutil setdefacl acl.xml gs://mybucket

<?xml version="1.0" ?>
<AccessControlList>
 <Entries>
  <Entry>
   <Scope type="UserByEmail">
    <EmailAddress>example@gmail.com</EmailAddress>
   </Scope>
   <Permission>FULL_CONTROL</Permission>
  </Entry>
  <Entry>
   <Scope type="GroupByEmail">
    <EmailAddress>foo@googlegroups.com</EmailAddress>
   </Scope>
   <Permission>FULL_CONTROL</Permission>
  </Entry>
  <Entry>
   <Scope type="GroupByEmail">
    <EmailAddress>group@mydomain.com</EmailAddress>
   </Scope>
   <Permission>FULL_CONTROL</Permission>
  </Entry>
 </Entries>
</AccessControlList>
于 2013-01-02T22:51:36.933 に答える