Skip to main content
Skip to content

Безопасное хранение секретов

Узнайте о секретах разработки программного обеспечения и о том, как их безопасно управлять.

Что такое секрет?

В разработке программного обеспечения секрет — это часть конфиденциальной информации, которая используется для проверки подлинности или авторизации доступа к системам, службам, данным и API. Вот некоторые примеры.

  • Ключи API и маркеры доступа, позволяющие взаимодействовать с внешними службами, такими как REST API GitHub. Маркеры доступа также позволяют службам, таким как GitHub Actions, выполнять задачи, необходимые для проверки подлинности, так как мы будем экспериментировать позже.
  • Учетные данные базы данных, предоставляющие доступ к локальным и внешним базам данных и хранилищу.
  • Закрытые ключи, такие как частные ключи SSH и PGP, которые можно использовать для доступа к другим серверам и шифрования данных.

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

Что может произойти, когда секрет предоставляется?

  • Злоумышленники могут получить несанкционированный доступ ко всему секрету, к которым разрешен доступ.
  • Хакеры могут украсть данные, включая конфиденциальные пользовательские данные. Это может иметь конфиденциальность и юридические последствия и вред доверия к вам и вашему приложению.
  • Предоставленные секреты могут стоить вам деньги , если хакеры выполняют несанкционированные рабочие нагрузки на учетных записях поставщика облачных служб.
  • Хакеры могут использовать предоставленный секрет для удаления, изменения и нарушения серверов, которые могут привести к простою и потере данных.

Рассмотрим все доступ и способности секрет предоставляет вам и то, что хакер может сделать с ним. Например, если учетная запись personal access token для учетной записи GitHub была предоставлена, хакер может опубликовать и внести изменения в GitHub как вы.

Рекомендации по управлению секретами

Чтобы избежать этих типов проблем, следуйте рекомендациям, чтобы предотвратить утечки и ограничить ущерб, если секрет когда-либо подвергается.

Следуйте принципу наименьших привилегий (PoLP)

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

  • Если секрет будет использоваться только для чтения данных, а не внесения изменений в данные, выберите его только для чтения.
  • Если api, который вы используете, позволяет ограничить секрет только определенными областями или разрешениями, выберите только те, которые вам нужны. Например, если вам нужно создать проблемы только с секретом GitHub, нет причин для доступа к содержимому репозитория или что-либо другое.
  • Если секрет предоставит злоумышленнику полный доступ к учетной записи пользователя, принадлежащей ей, рассмотрите возможность создания учетных записей служб, которые могут владеть секретом.

Защита секретов в приложении

  • Никогда не закодировать секрет. Всегда используйте переменные среды или средства управления секретами платформы (например, переменных данных.product.github %}секреты репозитория).