Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Поддержка Lockbox #355

Closed
Inv1x opened this issue Mar 18, 2023 · 7 comments · Fixed by #356
Closed

Поддержка Lockbox #355

Inv1x opened this issue Mar 18, 2023 · 7 comments · Fixed by #356
Labels
enhancement New feature or request good first issue Good for newcomers

Comments

@Inv1x
Copy link
Contributor

Inv1x commented Mar 18, 2023

Сейчас приходится использовать отдельный action для получения секретов из Lockbox, а затем их пробрасывать как environment variable. При этом далеко не все значения, приходящие из Lockbox, могут записаться. Было бы круто, если бы была возможность указать именно lockbox переменные

Снимок экрана 2023-03-19 в 0 08 31

Снимок экрана 2023-03-19 в 0 10 09

@nikolaymatrosov nikolaymatrosov added enhancement New feature or request good first issue Good for newcomers labels Mar 18, 2023
@nikolaymatrosov
Copy link
Contributor

Пришлёте PR? Ну или хотя бы пример того, как бы вы хотели описывать эти значения в action'е?

@Inv1x
Copy link
Contributor Author

Inv1x commented Mar 18, 2023

Например:

yc-sa-json-credentials: 'credentials'
...
lockbox-secrets:
- name-in-function: 'test1'
  secret_id: 'some_id'
  version_id: 'ver_id'
  key: 'key'
- name-in-function: 'test2'
  secret_id: 'some_id'
  version_id: 'ver_id'
  key: 'key'

Конкретно сейчас набросить код для подобного не могу, но я надеюсь, что написал понятно и идея видна. По сути, lockbox-secrets просто будет принимать массив из объектов, описывающих каждый секрет отдельно

@nikolaymatrosov
Copy link
Contributor

Так работать не будет. Input'ы в github action принимают только строки. Никаких списков объектов. actions/toolkit#184 (comment)

@Inv1x
Copy link
Contributor Author

Inv1x commented Mar 19, 2023

А если на подобии такого? Имплементация в Serverless Plugin. Единственное требование - доступ к Lockbox у того же SA, что отвечает за деплой функции. Передавать в качестве multiline параметра

lockbox-secrets: |
  name-in-func: ${{ lockbox:<lockbox_secret_id>/<lockbox_secret_key> }}
  name-in-func2: ${{ lockbox:<lockbox_secret_id>/<lockbox_secret_key2> }}

@Inv1x
Copy link
Contributor Author

Inv1x commented Mar 19, 2023

Единственное, решение в Serverless, по всей видимости, не самое актуальное, так как нет ни версий функций, ни значений из файла.

async getLockboxSecretKey(secretId: string): Promise<Record<string, string | undefined>> {
    const result: Record<string, string | undefined> = {};
    const response = await this.lockboxPayloadService.get(CloudApiLockboxPayloadService.GetPayloadRequest.fromPartial({
        secretId,
    }));

    for (const entry of response.entries) {
        result[entry.key] = entry.textValue;
    }

    return result;
}

@nikolaymatrosov
Copy link
Contributor

Так вы не можете примонтировать в переменные окружения функции секрет с типом файл. Так просто не будет работать. Поэтому и нет.

@Inv1x
Copy link
Contributor Author

Inv1x commented Mar 19, 2023

Сделал PR, опирался на эту доку

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants