GCP предоставляет разрешение учетной записи службы для записи в корзину GCS с помощью Deployment Manager - PullRequest
10 голосов
/ 25 июня 2019

В шаблоне Jinja диспетчера развертывания я пытаюсь создать приемники журналов :

- 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 }}"

Я бы предпочел настроить их на использование " уникального идентификатора писателя * 1007"* "при записи в место назначения , корзину GCS.

Это означает, что определенная учетная запись службы будет создаваться автоматически для каждого приемника журналов.

И необходимо предоставить разрешения этой учетной записи службы для записи в указанный (и уже существующий) сегмент.

Так что в разделе шаблона, который предоставляет разрешения, я мог бы сослаться на идентификаторы учетных записей служб (адреса электронной почты), используя $(ref.logsink>.writerIdentity).

А теперь для интересной части - единственная надежнаяметод добавления привязки к списку ACL ведра заключается в использовании 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>, но ожидаемое insert entity должно иметь форму user-<email>.

и не может найти способ вписать первое в последнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...