The following page discusses the Identity and Access Management (IAM) permissions required to perform actions within the Cloud Storage portion of the Google Cloud console. IAM permissions are bundled together to make roles , and you grant roles to users and groups .
Common permissions required for using the Google Cloud console
Certain permissions are broadly necessary in order to use the Google Cloud console:
-  All actions involving buckets should include resourcemanager.projects.getandstorage.buckets.listpermissions at the project level.These permissions allow you to access the Buckets page, where you create, view, and update buckets. 
-  All actions that include a billing project in the request require serviceusage.services.usepermission for the project that's specified.This permission ensures you are authorized to bill the project you specify. Including a billing project is used, for example, when accessing a bucket with Requester Pays enabled. 
Permissions required for specific actions
storage.buckets.create 
storage.buckets.enableObjectRetention 
 1 
storage.buckets.createTagBinding 
storage.buckets.listTagBindings 
storage.buckets.listEffectiveTags 
- Location, replication status, and default storage class
- Protection settings
- Bucket labels
- Object lifecycle policies
- Public access prevention status
- Uniform bucket-level access status
- Autoclass status
- Website configuration
storage.buckets.get 
- Protection settings
- Default storage class
- Bucket labels
- Object lifecycle policies
- Uniform bucket-level access status
- Autoclass status
- Website configuration
- Object retention configurations
storage.buckets.get 
storage.buckets.update 
storage.buckets.enableObjectRetention 
 1 
storage.buckets.get 
storage.buckets.update 
storage.buckets.get 
storage.buckets.update 
resourcemanager.projects.createBillingAssignment 
 3 
storage.buckets.get 
storage.buckets.setIamPolicy 
storage.buckets.update 
storage.buckets.get 
storage.buckets.getIamPolicy 
storage.buckets.setIamPolicy 
storage.buckets.update 
storage.buckets.delete 
storage.objects.list 
storage.buckets.delete 
storage.objects.delete 
storage.objects.list 
storage.buckets.deleteTagBinding 
storage.folders.create 
storage.folders.get 
storage.folders.list 
storage.folders.rename 
(for the source bucket)storage.folders.create 
(for the destination bucket)storage.folders.delete 
storage.objects.create 
storage.objects.delete 
 2 
storage.objects.setRetention 
 4 
storage.objects.get 
storage.objects.list 
storage.objects.get 
storage.objects.list 
storage.objects.get 
storage.objects.list 
storage.objects.list 
storage.buckets.getIamPolicy 
storage.objects.list 
storage.objects.getIamPolicy 
 7 
storage.objects.create 
storage.objects.delete 
storage.objects.get 
storage.objects.list 
storage.objects.getIamPolicy 
 7 
storage.objects.setIamPolicy 
 7 
storage.objects.create 
storage.objects.delete 
 2 
storage.objects.get 
storage.objects.list 
storage.objects.getIamPolicy 
 7,8 
storage.objects.setIamPolicy 
 7,8 
storage.objects.create 
storage.objects.delete 
 2 
storage.objects.delete 
storage.objects.get 
storage.objects.list 
storage.objects.getIamPolicy 
 7,8 
storage.objects.setIamPolicy 
 7,8 
storage.objects.get 
storage.objects.list 
storage.objects.getIamPolicy 
storage.objects.get 
storage.objects.list 
storage.objects.getIamPolicy 
storage.objects.setIamPolicy 
storage.objects.update 
storage.objects.get 
storage.objects.list 
storage.objects.update 
storage.objects.get 
storage.objects.list 
storage.objects.update 
storage.objects.setRetention 
storage.objects.overrideUnlockedRetention 
 9 
storage.objects.get 
storage.objects.list 
storage.objects.update 
storage.objects.delete 
storage.objects.list 
storage.objects.create 
storage.objects.delete 
 2 
storage.objects.list 
storage.objects.restore 
storage.objects.create 
storage.objects.delete 
 10 
storage.objects.restore 
storage.buckets.restore 
storage.objects.setIamPolicy 
 7 
 ,11 
resourcemanager.projects.get 
resourcemanager.projects.get 
storage.hmacKeys.list 
resourcemanager.projects.get 
storage.hmacKeys.list 
storage.hmacKeys.create 
resourcemanager.projects.get 
storage.hmacKeys.list 
storage.hmacKeys.update 
resourcemanager.projects.get 
storage.hmacKeys.list 
storage.hmacKeys.delete 
resourcemanager.projects.get 
storage.intelligenceConfigs.update 
storage.intelligenceConfigs.get 
storage.anywhereCaches.create 
storage.anywhereCaches.list 
storage.anywhereCaches.update 
storage.anywhereCaches.pause 
storage.anywhereCaches.resume 
storage.anywhereCaches.get 
storage.anywhereCaches.disable 
1 This permission is only required when enabling a bucket to support object retention configurations .
2 This permission is only required if an object with the same name already exists in the destination bucket.
3 This permission is only required if you do not include a billing project in your request. See Requester Pays Use and access requirements for more information.
4 This permission is only required when adding a retention configuration as part of uploading the object.
 5 
This action does not require storage.objects.list 
if it's performed on the details page for the relevant object and you don't
access the details page from the overall list of objects for the bucket.
6 This action does not apply to buckets with uniform bucket-level access enabled.
7 This permission does not apply to buckets with uniform bucket-level access enabled.
8 This permission is only required when keeping the permissions currently applied to the source object.
9 This permission is required when changing an existing retention configuration such that the configuration becomes locked, reduced, or removed.
10 This permission is only required if an object with the same name already exists in the destination bucket and you select the Overwrite live objectsoption.
11 This permission is only required when selecting the Copy source access controls (ACLs)option.
What's next
-  For a list of roles and the permissions they contain, see IAM roles for Cloud Storage . 
-  Grant IAM roles at the project and bucket level. 

