AWS Secrets Manager максимальное количество версий для секрета

У меня есть запланированная лямбда-функция fn, которая отслеживает действительный токен Auth Bearer. Он будет обновлять секретное значение менеджера секретов всякий раз, когда этот токен недействителен или истекает срок действия (скажем, один раз в месяц).

Я не использую никаких вращений, просто обновляю секретное значение с помощью node sdk putSecretValue (также пробовал использовать updateSecret).

После того, как этот код некоторое время работал в производственной среде, он начал давать сбои со следующим:

{
  "errorType": "LimitExceededException",
  "errorMessage": "You exceeded the maximum number of versions for a secret (arn:aws:secretsmanager:us-east-1:myARN)",
  "trace": [
    "LimitExceededException: You exceeded the maximum number of versions for a secret (arn:aws:secretsmanager:us-east-1:myARN)",

Меня не интересует отслеживание версий, я просто хочу, чтобы эта строка хранилась бесконечно, пока мне не нужно обновить ее значение и так далее. Стоит ли использовать другое решение?


person enapupe    schedule 18.12.2020    source источник


Ответы (2)


Поскольку это производственная проблема, вы можете применить следующий быстрый обходной путь до тех пор, пока не будет доступно ваше постоянное решение;

Выполните AWS CLI update-secret-version-stage, чтобы исключить нежелательные версии, это позволит AWS Secrets Manager удалить их в фоновом режиме. Возможно, вам потребуется написать небольшой скрипт для массового выполнения таких нежелательных версий.

Чтобы объявить устаревшую версию секрета, обратитесь к этот документ AWS.

Для постоянного решения есть несколько вариантов, некоторые из них следующие;

  1. Использование AWS SDK / API вызывает логику сборки на отказаться от нежелательных версий в вашей инфраструктуре или коде приложения.

  2. Если у вас есть запланированная автоматизация производства, вы можете использовать тот же сценарий пакета / задания, который использовался для обходного пути.

  3. Вместо AWS Secrets Manager переключитесь на использование Хранилище параметров с зашифрованным значением.

person amitd    schedule 18.12.2020
comment
Есть ли шанс помочь мне с командами? Я совершенно потерялся здесь и не знаю, как отказаться от одной версии, я пробовал пару команд, но это довольно сбивает с толку. - person enapupe; 18.12.2020

В Secrets Manager используется концепция промежуточной метки (метки, указывающие на секретные версии) и устаревшую версию (любая версия без промежуточной метки). Указанный документ @amitd (удаление промежуточной метки) необходим, если вы хотите отказаться от версии с меткой.

Однако, если вы не назначаете промежуточные метки секретам (в любом случае у вас может быть только 20), вам не нужно их удалять. На самом деле Secrets Manager автоматически очищает все, кроме последних 100 версий секрета. Описанное вами сообщение об ошибке должно появиться только в том случае, если вы создаете новые версии секрета быстрее, чем их можно очистить. Если, как вы говорите, они создаются только раз в месяц, этого не должно происходить.

Добавьте журналы в свою лямбду (если еще нет) и посмотрите на них в облачных часах, чтобы увидеть, происходит ли это чаще, чем ожидалось. Вы также можете проверить свои журналы Cloud Trail, чтобы узнать о звонках в Secrets Manager.

person JoeB    schedule 22.12.2020