GCP授予服务帐户权限以使用Deployment Manager写入GCS存储桶中

问题描述 投票:10回答:1

在Deployment Manager Jinja模板中,我正在尝试创建log sinks

- name: {{ ALOGSINK }}
  type: gcp-types/logging-v2:projects.sinks
  properties:
    sink: {{ ALOGSINK }}
    parent: projects/{{ PROJECT }}
    uniqueWriterIdentity: true
    outputVersionFormat: V2
    destination: storage.googleapis.com/{{ LOGGINGBUCKET }}
    filter: >-
      resource.type="deployment" AND
      resource.labels.name="{{ DEPLOYMENT }}"

我希望将它们配置为在写入GCS存储桶unique writer identity时使用“ destination”。

这意味着将为每个日志接收器自动创建一个特定的服务帐户。

并且有必要授予该服务帐户权限以写入指定的(并且已经存在)存储桶。

因此,在模板的授予权限的部分中,我可以使用$(ref.logsink>.writerIdentity)来引用服务帐户标识(电子邮件地址)。

现在有趣的是,向存储桶的ACL添加绑定的唯一可靠方法是使用insert对象的insert方法:

BucketAccessControls

问题是- name: {{ LOGGINGBUCKET }}-{{ ALOGSINK }}-acl action: gcp-types/storage-v1:storage.BucketAccessControls.insert properties: bucket: $(ref.bucket-name) entity: user-$(ref.{{ ALOGSINK }}.writerIdentity} role: WRITER 的形式为writerIdentity,但serviceAccount:<email>方法期望的entity的形式应为insert

并且找不到找到适合前者的方法。

google-cloud-platform google-deployment-manager
1个回答
0
投票

可能您想要使用支持服务帐户的存储区IAM策略:

user-<email>

我同意,这有点误导,很自然地认为BucketAccessControls也应该支持服务帐户...

© www.soinside.com 2019 - 2024. All rights reserved.