GCP |如何为不同用户提供文件夹级别的访问权限>

时间:2019-01-28 12:35:20

标签: google-cloud-platform google-cloud-storage

  

我有一个Google存储桶gs:// kd-non-prod-test /存储桶和3个服务   帐户用户

bucket-poc-user-1@xxxx.iam.gserviceaccount.com

bucket-poc-user-2@xxxx.iam.gserviceaccount.com

bucket-poc-user-3@xxxx.iam.gserviceaccount.com

  

在存储桶中,我创建了3个目录

 - gs://kd-non-prod-test/for-user1 
 - gs://kd-non-prod-test/for-user2
 - gs://kd-non-prod-test/for-user3

我想向其各自的用户提供对目录的读取,写入和列表访问。

  

示例-

只有 bucket-poc-user-1@xxxx.iam.gserviceaccount.com 用户将仅在 gs:// kd-non-prod-test上具有读取,写入和列表/ for-user1 目录。

  

要存储/更新到相应目录的对象应具有   与目录具有相同的访问权限

     

示例

如果管理员用户在gs://kd-non-prod-test/for-user1/sample.txt目录内创建文本文件 那么bucket-poc-user-1@xxxx.iam.gserviceaccount.com也应在gs://kd-non-prod-test/for-user1/sample.txt上具有与目录gs://kd-non-prod-test/for-user1/相同的访问权限

为我提供解决方案。 谢谢。

2 个答案:

答案 0 :(得分:0)

您可以授予整个项目或整个存储桶的权限。看一下Cloud IAM Roles for Cloud Storage。它指定 int count = 0; long remainingBytes = end - start + 1; long position = start; byte[] buffer = new byte[ReadStreamBufferSize]; byte[] temp = new byte[ReadStreamBufferSize]; inputStream.Position = start; int item = 1; do { try { byte[] byteAry = new byte[ReadStreamBufferSize]; if (System.IO.File.Exists("D:\\test\\pp" + item + ".wav")){ byteAry = System.IO.File.ReadAllBytes("D:\\test\\pp" + item + ".wav"); } else { break; } temp = temp.Concat(byteAry).ToArray(); inputStream = new MemoryStream(temp); if (remainingBytes > ReadStreamBufferSize) count = inputStream.Read(buffer, 0, ReadStreamBufferSize); else count = inputStream.Read(buffer, 0, (int)remainingBytes); outputStream.Write(buffer, 0, count); } catch (Exception error) { Debug.WriteLine(error); break; } position = inputStream.Position + 100; end = inputStream.Length; remainingBytes = end - position + 1; item++; } while (position <= end);

答案 1 :(得分:0)

如安德烈(Andrei)所述,您不能授予存储桶中文件夹的权限。

如果您确实想在用户“文件夹”之间划分权限,则应直接将存储桶创建为“文件夹”,在其中向特定用户授予权限。

应该给你这样的东西:

- gs://for-user1-test
- gs://for-user2-test
- gs://for-user3-test

如果您想让管理员有权访问所有gcs,则应授予他存储管理员角色,以便他可以访问和读取任何存储桶。

但是我不知道这是否真的是一个可用的解决方案,因为您最终将拥有与用户一样多的存储桶,而如果有数百个存储桶,则可能会变得困难。