There are two ways to grant a service account access to someone's google drive account.
The first and easiest is to simply share a folder with the Service account. This will act just like it would if you shared the folder with anyone else. They would get access to it. The draw back to this method is that you can only share a folder. You cant for example share a root folder the of the users Google drive account.
In the case of google workspace there is a second option.
THe admin of the Google workspace domain can set up something called domain wide deligation for the service account. By setting up domain wide delegation you are giving the service account the ability to impersonate or pretend to be the actual user of that account.
So in the case of the code below. The service object is created and we tell it which user we are going to impersonate this being gsuiteUser.
var certificate = new X509Certificate2(@"D:\creds.p12", "notasecret", X509KeyStorageFlags.Exportable);
var gsuiteUser = "[email protected]";
var service = new ServiceAccountCredential.Initializer(serviceAccount)
{
User = gsuiteUser,
Scopes = new[] { GmailService.Scope.GmailSend, GmailService.Scope.GmailLabels }
}.FromCertificate(certificate);
So as far as google drive api is concerned all requests that come from my service object are coming from gsuiteUser which means that i can see everything that this user can see including the root directory.
You should set up domain wide delegation and have your code impersonate each of the users on your domain. Or create a separate user with access to everything and let the service account access that single user.