次の表に、特定のリソースで Cloud Storage の各 gsutil コマンドを実行する場合に必要な Identity and Access Management(IAM)権限を示します。IAM 権限は、ロールを作成するためにバンドルされています。ユーザーとグループにロールを付与します。
このページでは、次の情報も確認できます。
均一なバケットレベルのアクセスが無効になっているバケットにのみ適用される追加のコマンドの使用
-u
フラグを使用した請求先プロジェクトの指定-m
フラグを使用したオペレーションの並列実行
コマンド | サブコマンド | 必要な IAM 権限 |
---|---|---|
autoclass |
get |
storage.buckets.get |
autoclass |
set |
storage.buckets.update |
cat |
storage.objects.get |
|
compose |
storage.objects.get storage.objects.create storage.objects.delete 1 |
|
config |
なし | |
cors |
get |
storage.buckets.get |
cors |
set |
storage.buckets.update |
cp |
storage.objects.list 2storage.objects.get storage.objects.create storage.objects.delete 3 |
|
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.create 4cloudkms.cryptoKeys.setIamPolicy |
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.get 5cloudkms.cryptoKeys.setIamPolicy 5 |
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.getIamPolicy 6 |
|
ls (オブジェクトの一覧表示) |
storage.objects.list storage.objects.getIamPolicy 7 |
|
ls -b |
storage.buckets.get storage.buckets.getIamPolicy 6 |
|
mb |
storage.buckets.create |
|
mv |
storage.objects.list 2(宛先バケットの場合)storage.objects.get (ソース オブジェクトの場合)storage.objects.create (宛先バケットの場合)storage.objects.delete (ソースバケットの場合)storage.objects.delete 3(宛先バケットの場合) |
|
notification |
create |
storage.buckets.update pubsub.topics.get (Pub/Sub トピックを含むプロジェクトの場合)pubsub.topics.create 8(Pub/Sub トピックを含むプロジェクトの場合)pubsub.topics.getIamPolicy (通知を受信する Pub/Sub トピックの場合)pubsub.topics.setIamPolicy 8(通知を受信する 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.setIamPolicy |
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.createBillingAssignment 9 |
retention |
clear 、event-default 、lock 、または 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.delete 11storage.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.list astorage.objects.get storage.objects.create storage.objects.delete bstorage.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.list astorage.objects.get storage.objects.create storage.objects.delete storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
rsync -a rsync -p |
オブジェクト | storage.objects.get storage.objects.create storage.objects.delete cstorage.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 を適用しよう試すことで発生するエラーを記録しますが、オペレーションは続行します。
次のステップ
- プロジェクト レベルとバケットレベルで IAM ロールを割り当てる。
- Cloud Storage の権限を含む IAM ロールを確認する。