我可以使GCS存储桶仅适用于特定人员(或使用密码)

时间:2019-10-24 01:05:27

标签: google-app-engine google-cloud-storage

我想与客户端共享使用qgis2web插件创建的网络地图,但是我不想公开数据。有什么办法可以与某人特别分享吗?我无法理解Google云端存储平台提供的信息...

3 个答案:

答案 0 :(得分:0)

欢迎使用Stackoverflow。您确实可以将访问权限授予第三方。这是一篇很棒的文章,标题为Sharing buckets and files。为了与指定的个人共享数据,Google Cloud Storage必须知道该个人的身份。这意味着用户必须是您的G Suite域的一部分,您的Cloud Identity配置的一部分或与Google帐户的电子邮件相关联。

答案 1 :(得分:0)

来自Google文档:

  

您可以控制谁有权访问您的Cloud Storage存储桶和对象以及他们具有什么访问级别。

This link包含有关Google Cloud Storage访问控制选项的信息。

为了授予对GCS存储桶中某些实体的访问权限,用户可以使用Cloud IAM权限。

Here you will find detailed instructions on how to do that.

请注意:

  

您应该设置授予成员的最低权限   所需的访问权限。例如,如果团队成员只需要   读取存储桶中存储的对象,选择“存储对象查看器”   角色。同样,如果团队成员需要完全控制对象   存储桶(但不能控制存储桶本身),请选择存储   对象管理员。

Here you will find the Cloud IAM roles for Cloud Storage with a short description of their use.

如果您需要进一步的帮助,请告诉我。

答案 2 :(得分:0)

您可以授予任何具有Traceback: File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\core\handlers\exception.py" in inner 34. response = get_response(request) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\core\handlers\base.py" in _get_response 145. response = self.process_exception_by_middleware(e, request) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\core\handlers\base.py" in _get_response 143. response = response.render() File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\response.py" in render 106. self.content = self.rendered_content File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\response.py" in rendered_content 83. content = template.render(context, self._request) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\backends\django.py" in render 61. return self.template.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render 171. return self._render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in _render 163. return self.nodelist.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\loader_tags.py" in render 150. return compiled_parent._render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in _render 163. return self.nodelist.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\loader_tags.py" in render 150. return compiled_parent._render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in _render 163. return self.nodelist.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\loader_tags.py" in render 62. result = block.nodelist.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\defaulttags.py" in render 309. return nodelist.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\template\defaulttags.py" in render 443. url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\urls\base.py" in reverse 90. return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)) File "D:\Opeodedeyi\Documents\Django\WORK IN PROGRESS\ProfilesAPI\venv\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix 673. raise NoReverseMatch(msg) Exception Type: NoReverseMatch at /account-confirm-email/MTk:1iNcyz:wyyIWJiSWJ2s9JHabdympHnzbMU/ Exception Value: Reverse for 'account_email' not found. 'account_email' is not a valid view function or pattern name. 角色的Google帐户。这里有一个潜在的问题:授予 storage.objectViewer

您的客户可以创建一个here(如果没有)

  • 转到创建帐户。
  • 如果您的客户想要gmail.com中的地址,则可以继续。
  • 如果没有,则可以单击Google account。顺便说一句,他可以使用任何地址电子邮件,并在上面添加密码以供Google进行身份验证。

最后一部分类似于您的“设置密码”提案。

然后转到您的存储桶权限,甚至获得对象权限,然后将角色授予客户电子邮件地址。

注意:如果您的组织已激活“域限制共享”策略,则该解决方案是不可能的,除非该策略将您客户的电子邮件地址域列入了白名单,或者您的项目被列入了白名单。