gsutil コマンドに必要な IAM 権限

次の表に、特定のリソースで Cloud Storage の各 gsutil コマンドを実行する場合に必要な Identity and Access Management(IAM)権限を示します。IAM 権限は、ロールを作成するためにバンドルされています。ユーザーとグループにロールを付与します。

このページでは、次の情報も確認できます。

コマンド サブコマンド 必要な IAM 権限
autoclass get storage.buckets.get
autoclass set storage.buckets.update
cat storage.objects.get
compose storage.objects.get
storage.objects.create
storage.objects.delete1
config なし
cors get storage.buckets.get
cors set storage.buckets.update
cp storage.objects.list2(宛先バケットの場合)
storage.objects.get(ソース オブジェクトの場合)
storage.objects.create(宛先バケットの場合)
storage.objects.delete3(宛先バケットの場合)
defstorageclass get storage.buckets.get
defstorageclass set storage.buckets.update
du storage.objects.get
hash storage.objects.get
help なし
hmacKeys create storage.hmacKeys.create
hmacKeys delete storage.hmacKeys.delete
hmacKeys get storage.hmacKeys.get
hmacKeys list storage.hmacKeys.list
hmacKeys update storage.hmacKeys.update
iam get storage.buckets.get
storage.buckets.getIamPolicy
iam set または ch storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKeys.setIamPolicy(認可対象の Cloud KMS 鍵の場合)
kms encryption storage.buckets.get
kms encryption -d storage.buckets.get
storage.buckets.update
kms encryption -k storage.buckets.get
storage.buckets.update
resourceManager.projects.get5
cloudkms.cryptoKeys.setIamPolicy5
kms serviceaccount resourceManager.projects.get
label get storage.buckets.get
label set/ch storage.buckets.update
lifecycle get storage.buckets.get
lifecycle set/ch storage.buckets.update
logging get storage.buckets.get
logging set storage.buckets.update
ls(バケットの一覧表示) storage.buckets.list
storage.buckets.getIamPolicy6
ls(オブジェクトの一覧表示) storage.objects.list
storage.objects.getIamPolicy7
ls -b storage.buckets.get
storage.buckets.getIamPolicy6
mb storage.buckets.create
mv storage.objects.list2(宛先バケットの場合)
storage.objects.get(ソース オブジェクトの場合)
storage.objects.create(宛先バケットの場合)
storage.objects.delete(ソースバケットの場合)
storage.objects.delete3(宛先バケットの場合)
notification create storage.buckets.update
pubsub.topics.get(Pub/Sub トピックを含むプロジェクトの場合)
pubsub.topics.create8(Pub/Sub トピックを含むプロジェクトの場合)
pubsub.topics.getIamPolicy(通知を受信する Pub/Sub トピックの場合)
pubsub.topics.setIamPolicy8(通知を受信する Pub/Sub トピックの場合)
notification create -s storage.buckets.update
notification delete storage.buckets.get
storage.buckets.update
notification list storage.buckets.get
notification watchbucket storage.buckets.update
notification stopchannel storage.buckets.update
pap get storage.buckets.get
pap set storage.buckets.get
storage.buckets.update
storage.buckets.setIamPolicy10
perfdiag storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
storage.objects.get
rb storage.buckets.delete
requesterpays get storage.buckets.get
requesterpays set on storage.buckets.update
requesterpays set off storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clearevent-defaultlock、または set storage.buckets.update
retention event または temp storage.objects.get
storage.objects.list
storage.objects.update
retention get storage.buckets.get
rewrite -k storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
rewrite -s storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
rm storage.objects.delete
rm -a storage.objects.delete
storage.objects.list
rm -r(バケットの削除) storage.buckets.delete
storage.objects.delete
storage.objects.list
rpo get storage.buckets.get
rpo set storage.buckets.get
storage.buckets.update
rsync storage.objects.get(ソース オブジェクトと宛先バケットの場合)
storage.objects.create(宛先バケットの場合)
storage.objects.delete11(宛先バケットの場合)
storage.objects.list(ソースバケットと宛先バケットの場合)
rsync -n storage.objects.list(ソースバケットと宛先バケットの場合)
setmeta storage.objects.get
storage.objects.list
storage.objects.update
signurl なし。ただし、このコマンドの一部として鍵が使用されているサービス アカウントには、署名付き URL にエンコードされたリクエストを実行する権限が必要です。
stat storage.objects.get
test なし
ubla set storage.buckets.get
storage.buckets.update
ubla get storage.buckets.get
update なし
version なし
versioning get storage.buckets.get
versioning set storage.buckets.update
web get storage.buckets.get
web set storage.buckets.update

1 この権限は、作成されたオブジェクトと同じ名前のオブジェクトがバケット内に存在している場合にのみ必要です。

2 この権限は、コマンドの宛先にオブジェクトのパスが含まれている場合にのみ必要です。

3 この権限は、並列複合アップロードを使用する場合や、-n フラグを使用せずにバケット内にすでに存在しているオブジェクトと同じ名前のオブジェクトを挿入する場合にのみ必要です。

4 この権限は、プロジェクトに既存の Cloud Storage サービス アカウントが関連付けられていない場合にのみ必要です。

5 gsutil kms encryption -k を使用する場合、プロジェクトのサービス アカウントにリクエスト対象の Cloud KMS 鍵にアクセスする権限がなければ、gsutil が gsutil kms authorize を実行して、必要な権限をそのサービス アカウントに付与します。

6 この権限は、詳細の中に IAM ポリシーを含める場合にのみ必要です。

7 この権限は、詳細の中に IAM ポリシーを含める場合にのみ必要です。この権限は、均一なバケットレベルのアクセスが有効になっているバケットには適用されません。

8 この権限は、トピックがすでに存在し、当該サービス アカウントにそのトピックへのアクセス権がある場合は必要ありません。

9 この権限は、リクエストに請求先プロジェクトを含めない場合にのみ必要になります。詳細については、リクエスト元による支払いの使用条件とアクセス要件をご覧ください。

10 コマンドでバケットの設定を変更しない場合、この権限は必要ありません。

11 この権限は、-d フラグを使用する場合や、バケット内にすでに存在しているオブジェクトと同じ名前のオブジェクトと同じ名前で、別のデータを持つオブジェクトを挿入する場合にのみ必要です。

ACL 関連メソッド

次の表に、ACL の管理に特化した gsutil コマンドの実行に必要な IAM 権限を示します。これらのコマンドは、均一なバケットレベルのアクセスが無効になっているバケットにのみ適用されます。

コマンド サブコマンド 対象リソース 必要な IAM 権限
acl get バケット storage.buckets.get
storage.buckets.getIamPolicy
acl set または ch バケット storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
acl get オブジェクト storage.objects.get
storage.objects.getIamPolicy
acl set または ch オブジェクト storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
cp -a または cp -p オブジェクト storage.objects.lista(宛先バケットの場合)
storage.objects.get(ソース オブジェクトの場合)
storage.objects.create(宛先バケットの場合)
storage.objects.deleteb(宛先バケットの場合)
storage.objects.getIamPolicy(ソース オブジェクトの場合)
storage.objects.setIamPolicy(宛先バケットの場合)
defacl get バケット storage.buckets.get
storage.buckets.getIamPolicy
defacl set または ch バケット storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
iam get オブジェクト storage.objects.get
storage.objects.getIamPolicy
iam set または ch オブジェクト storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
mv -a または mv -p オブジェクト storage.objects.lista(宛先バケットの場合)
storage.objects.get(ソース オブジェクトの場合)
storage.objects.create(宛先バケットの場合)
storage.objects.delete(ソースバケットの場合)
storage.objects.deleteb(宛先バケットの場合)
storage.objects.getIamPolicy(ソース オブジェクトの場合)
storage.objects.setIamPolicy(宛先バケットの場合)
rsync -a または rsync -p オブジェクト storage.objects.get(ソース オブジェクトと宛先バケット)
storage.objects.create(宛先バケットの場合)
storage.objects.deletec(宛先バケットの場合)
storage.objects.list(ソースバケットと宛先バケット)
storage.objects.getIamPolicy(ソース オブジェクトの場合)
storage.objects.setIamPolicy(宛先バケットの場合)

a この権限は、コマンドの宛先にオブジェクトのパスが含まれている場合にのみ必要です。

b この権限は、並列複合アップロードを使用する場合や、-n フラグを使用せずにバケット内にすでに存在しているオブジェクトと同じ名前のオブジェクトを挿入する場合にのみ必要です。

c この権限は、-d フラグを使用する場合や、バケット内にすでに存在しているオブジェクトと同じ名前のオブジェクトと同じ名前で、別のデータを持つオブジェクトを挿入する場合にのみ必要です。

-u トップレベル フラグ

-u グローバル フラグを使用して、リクエストの料金の請求先プロジェクトを指定する場合は、指定するプロジェクトに対する serviceusage.services.use 権限が必要です。たとえば、リクエスト元による支払いが有効にされているバケットにアクセスするには、-u フラグが必要です。

ワイルドカードと再帰フラグ

1 つのコマンドの中で URI ワイルドカードを使用して複数のオブジェクトを選択する場合は、それらのオブジェクトを含むバケットに対する storage.objects.list 権限が必要です。同じように、1 つのコマンドの中で URI ワイルドカードを使用して複数のバケットを選択する場合は、それらのバケットが含まれるプロジェクトに対する storage.buckets.list 権限が必要です。

再帰フラグ(-r-R)を使用する場合は、使用している特定のコマンドに必要な権限に加えて、関連するバケットに対する storage.objects.list 権限が必要です。

-m トップレベル フラグ

通常、複数のオブジェクトまたはバケットに作用する gsutil コマンドを使用する場合、最初にエラーが発生した時点でコマンドは失敗します。ただし、-m グローバル フラグを使用すると、gsutil は発生したすべてのエラーを記録したうえで、オペレーションを続行します。

たとえば、一連のオブジェクトに対して acl set コマンドを実行しようとした際、必要な権限が与えられていたのは一部のオブジェクトだけだったとします。-m フラグを使用しない場合、gsutil は ACL を適用する権限のないオブジェクトに到達する時点までは、ACL を正常に適用します。権限のないオブジェクトの時点で、gsutil は失敗します。-m フラグを使用すると、gsutil は、権限を与えられていないオブジェクトに ACL を適用しよう試すことで発生するエラーを記録しますが、オペレーションは続行します。

次のステップ