将Google云端存储ID与用户电子邮件地址相匹配

时间:2017-06-05 16:35:09

标签: google-cloud-storage

我正在寻找一种方法来确定将文件上传到云端存储分区的人员。所有有权写入存储桶的用户都是同一G Suite域中的经过身份验证的用户。

Cloud Storage中的对象ACL显示所有者标识符字符串,如下所示:

{
  "entity": "user-84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46",
  "entityId": "84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46",
  "role": "OWNER"
}

但是,似乎没有一种简单的方法可以将此ID映射回用户的电子邮件地址(或确定我知道其电子邮件的用户的云存储ID,除非使用该用户帐户上传文件并查询对象ACL)。

这是真的吗?或者我只是没有看到这样做的方法?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

虽然我无法为您提供具体的时间表,但我们仍然积极致力于弃用规范ID。这在不久的将来不再是一个问题。

同时,还有..选项。

首先:用户可以在此页面上找到他们的规范ID(不幸的是,它会让您选择一个项目,因为该页面还会显示项目角色的规范ID)。 https://console.cloud.google.com/storage/settings

但是,如果你真的需要找一个随机规范id的电子邮件地址,你应该可以做一些有点丑陋的解决方法。

1)通过ACL API将用户添加到存储桶策略

    gsutil acl ch -u <canonical_id>:READ gs://<bucket>

2)获取存储桶IAM策略

    gsutil iam get gs://<bucket>

该条目应显示为电子邮件地址。

{
  "bindings": [
    {
      "members": [
        "projectOwner:<project-id>", 
        "projectEditor:<project-id>",
      ], 
      "role": "roles/storage.legacyBucketOwner"
    }, 
    {
      "members": [
        "projectViewer:<project-id>", 
        "user:<user email here>"
      ], 
      "role": "roles/storage.legacyBucketReader"
    }
  ], 
  "etag": "CAI="
}

答案 1 :(得分:1)

再次尝试获取ACL。我今天刚试过07/05/2017,并且返回的ACL包含了电子邮件地址。 Google会更新API,将旧的Google云端存储ID替换为用户的电子邮件地址。

{
  "email": "email@domain.com",
  "entity": "user-email@domain.com",
  "role": "OWNER"
}