首页 > 解决方案 > sonatype-nexus-community/nexus-blobstore-google-cloud 的 GCP IAM 角色

问题描述

尝试构建 sonatype-nexus-community/nexus-blobstore-google-cloud 但如果没有 GCP 中的项目所有者 iam 角色就无法成功。

如果我正确理解所有内容,至少根据文档,存储管理员 IAM 角色就足够了:

https://github.com/sonatype-nexus-community/nexus-blobstore-google-cloud

还尝试了存储管理员 + 服务帐户用户 + 服务帐户令牌创建者,但也无法成功。

集成测试失败并显示一条消息:

org.sonatype.nexus.blobstore.api.BlobStoreException:BlobId:e0eb4ae2-f425-4598-aa42-fc03fb2e53b2,com.google.cloud.datastore.DatastoreException:缺少权限或权限不足。

详细地说,集成测试使用两种不同的方法创建一个 Blob 存储,然后尝试删除它而不是取消删除它:

  • def "取消删除成功使 blob 可访问"
  • def "当空运行为真时,取消删除什么都不做"

这就是问题开始的地方。删除时执行失败:

断言 blobStore.delete(blob.id, 'testing')

另一个问题是如何取消删除 Google Storage 中不支持取消删除但仅支持版本控制的内容。

_

以下是文档中有关权限的内容:

谷歌云存储权限

接下来,您将需要创建一个具有适当权限的帐户。

在预定义的帐户角色中,Storage Admin 将授予插件 > 创建您需要的任何 Google Cloud Storage Bucket 并管理其中的所有对象,但它也有权管理与项目关联的任何其他 Google Cloud Storage Bucket。

如果您使用自定义角色,该帐户将需要:

  1. (必需) storage.objects.*
  2. (必需) storage.buckets.get
  3. 或 storage.buckets.*。

存储管理员 IAM 角色涵盖 storage.objects.* 和 storage.buckets.*,因此不确定导致问题的原因。

参考:

https://cloud.google.com/storage/docs/access-control/iam-roles https://cloud.google.com/storage/docs/access-control/iam-json

集成测试在 blob 存储删除尝试时失败:

15:27:10.042 [main] 调试 osnbgiGoogleCloudBlobStore - 将 blob 2e22e0e9-1fef-4620-a66e-d672b75ef924 写入 content/vol-18/chap-33/2e22e0e9-1fef-4620-a66e-d672b75ef924.44.bytes 15:27:2 main] 调试 osnbgiGoogleCloudBlobStore - 软删除 blob 2e22e0e9-1fef-4620-a66e-d672b75ef924

org.sonatype.nexus.blobstore.gcloud.internal.GoogleCloudBlobStoreIT.undelete 成功使 blob 可访问(GoogleCloudBlobStoreIT.groovy:164)

引起:org.sonatype.nexus.blobstore.api.BlobStoreException: BlobId: 2e22e0e9-1fef-4620-a66e-d672b75ef924, com.google.cloud.datastore.DatastoreException: Missing or enough permissions., Cause: 缺少权限或权限不足。 ... 1 更多

在 org.sonatype.nexus.blobstore.gcloud.internal.DeletedBlobIndex.add(DeletedBlobIndex.java:55)

在 org.sonatype.nexus.blobstore.gcloud.internal.GoogleCloudBlobStore.delete(GoogleCloudBlobStore.java:276)

如果我忽略了什么,你能帮我吗?

标签: google-cloud-platformnexusnexus3google-iamgoogle-cloud-iam

解决方案


除了Storage AdminService Account UserService Account Token Creator之外,还需要创建 Datastore 数据库并添加Datastore Owner角色


推荐阅读