Search code examples
google-cloud-storageopenid-connectservice-accountsfederated-identity

Access specific folder in GCS bucket according to user, using Workload Identity Federation


I have an external identity provider that supports OpenID Connect (OIDC) and want to access Google Cloud Storage(GCS) directly, using a short-lived access token. So I'm using workload identity federation in order to provide a credential from my external identity provider and get a federated token in exchange.

I have created the workload identity pool and provider and connected a service account to it, which has write access to a certain bucket in GCS.

How can I differentiate the access to specific folder in the bucket according to the token provided from my external identity provider? For example for userA to have access only to folderA in the bucket. Can I do this using one service account?

Any help would be highly appreciated.


Solution

  • The folders don't exist on Cloud Storage, it's a blob storage, all the object are stored at the bucket level. For human readability and representation, the / are the folder separator, by convention.

    Therefore, because directory doesn't exist, you can't grant any permission on it. The finer granularity is the bucket.


    In your use case, you can't grant a write access at folder level, but you can create 1 bucket per user and therefore grant the impersonated service account on the bucket.