I need a third-party to upload some files to a Google Cloud Storage bucket. What is the best (or easiest) way to give them access?
I need a third-party to upload some files to a Google Cloud Storage bucket. What is the best (or easiest) way to give them access?
The first two methods require that the user have a valid Google Account. I am ignoring Google Identity Platform in this answer. If the user has a Gmail Account, then this means they also have a Google Account. The third method uses a Google Service Account.
Method 1: Use the Google Cloud Storage Console:
Go to Storage -> Browser.
Check the desired bucket. In the right side panel under permissions, click the Add button.
Add the user's Google Account email address. Select Storage Object Creator.
The role granted is roles/storage.objectCreator. This role grants the user permissions to create objects in the bucket but the user cannot delete or overwrite objects.
Method 2: Use the gsutl CLI:
gsutil iam ch user:username@example.com:ObjectCreator gs://examplebucket
Command to read the current bucket IAM policy:
gsutil iam get gs://examplebucket
Method 3: Use a Google Service Account
Create a Google Service Account in the Google Cloud Console
IAM & admin -> Service accountsCREATE SERVICE ACCOUNTService account name and Service account descriptionCREATEService account permissions, select a role.Storage -> Storage Object CreatorCONTINUECreate keyJSON radio button for the Key typeYou now have Google Service Account credentials that can be setup with gsutil, gcloud and software programs.
The way you grant access to your third-party Customers to upload files to a Google Cloud Storage bucket would differ from one programming language to another. In PHP, you would write something like:
$options = ['gs_bucket_name' => $my_bucket]; $upload_url = CloudStorageTools::createUploadUrl('/upload/handler', $options);
and get an upload URL as a result. You may find more detail on this solution in the "Allowing Users to Upload Files" online document.