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 HMAC キー storage.hmacKeys.create
hmacKeys delete HMAC キー storage.hmacKeys.delete
hmacKeys get HMAC キー storage.hmacKeys.get
hmacKeys list HMAC キー storage.hmacKeys.list
hmacKeys update HMAC キー 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 バケット、プロジェクト 5 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.buckets.delete
storage.objects.delete
storage.objects.list
rm オブジェクト 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 を適用しようとした場合は発生するエラーを記録しますが、そうでない場合にはオペレーションを続行します。

次のステップ