В шаблоне 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>
.
и не может найти способ вписать первое в последнее.