Всем привет,
Мы рассматриваем возможность улучшения того, как Discourse обрабатывает аутентификацию для AWS [1], и хотели бы понять, как вы настроены в данный момент, прежде чем вносить какие-либо изменения.
Текущая ситуация
На данный момент существует несколько способов настройки аутентификации AWS в Discourse:
Вариант 1: Явные учетные данные (через настройки сайта)
- установите
s3_access_key_idиs3_secret_access_keyв настройках вашего сайта - аутентификация выполняется для каждого сайта отдельно
Вариант 2: Явные учетные данные (через переменные окружения)
- установите переменные окружения:
DISCOURSE_S3_ACCESS_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY - аутентификация одинакова для всех сайтов в кластере с поддержкой нескольких сайтов
Вариант 3: Настройка «Использовать профиль IAM»
- включите настройку сайта
s3_use_iam_profileили установите переменную окруженияDISCOURSE_S3_USE_IAM_PROFILE=true - указывает Discourse предоставить AWS SDK возможность автоматически находить учетные данные
- изначально предназначалась для экземпляров EC2 и получения учетных данных через IMDS, но работает и в других средах
Почему мы хотим внести изменения
1. Путаница в названии настройки
Настройка s3_use_iam_profile вводит в заблуждение своим названием. Она предполагает, что работает только с профилями экземпляров EC2, но на самом деле она включает любой источник учетных данных AWS SDK credential source:
- профили экземпляров EC2
- роли задач ECS
- переменные окружения
- файлы учетных данных AWS
- присвоение ролей IAM
- и многое другое…
2. Безопасность: статические ключи против присвоения ролей
На нашей платформе хостинга на «железе» мы в настоящее время используем ключи доступа, которые регулярно обновляются. Мы планируем перейти на присвоение ролей для лучшей изоляции, более гибкого контроля доступа и поддержки улучшенных внутренних процессов.
Недостатки текущего подхода:
- ключи доступа не истекают (пока не будут обновлены)
- имеют широкие области разрешений
- могут быть скомпрометированы при утечке
- требуют ручных процедур обновления
Преимущества использования присвоения ролей:
- постоянные учетные данные могут быть ограничены по IP-адресу
- операции выполняются с использованием временных учетных данных, которые автоматически истекают (обычно через 1 час)
- доступ по требованию, так как учетные данные существуют только при необходимости
- уменьшенный радиус поражения, поскольку скомпрометированные временные учетные данные быстро истекают
- отсутствие необходимости в обновлении ключей — процесс присвоения ролей сам обеспечивает обновление
- улучшенные журналы аудита — каждая сессия отслеживается отдельно
Что мы рассматриваем
Мы думаем о том, чтобы:
- Переименовать настройку во что-то более понятное, например
aws_credentials_from_environment - Полностью удалить настройку и автоматически определять, когда учетные данные должны браться из окружения, а когда — из настроек сайта
Нам нужно ваше мнение!
Пожалуйста, сообщите нам:
-
Как вы аутентифицируетесь с S3?
- Явные ключи доступа в настройках сайта
- Профиль экземпляра EC2 (с включенной настройкой
s3_use_iam_profile) - Роль задачи ECS (с включенной настройкой
s3_use_iam_profile) - Переменные окружения (с включенной настройкой
s3_use_iam_profile) - … что-то другое?
-
Если вы используете
s3_use_iam_profile:- В какой среде вы работаете? (EC2, ECS, Docker, «голое железо» и т. д.)
- Вызывало ли текущее название/описание путаницу?
- Было бы другое название более понятным?
-
Есть ли у вас опасения по поводу изменений этой настройки?
- Опасаетесь, что это нарушит вашу текущую конфигурацию?
- Нуждаетсяе во времени для тестирования изменений?
- Есть ли другие соображения?
Почему это важно
Улучшенная аутентификация S3 означает:
- Повышенную безопасность — нет необходимости управлять статическими ключами
- Упрощенную настройку — особенно для развертываний в облаке
- Меньше путаницы — более понятные настройки и документация
- Лучшую поддержку современных паттернов аутентификации AWS
Ваша обратная связь поможет нам внести улучшения, которые будут работать для всех. Спасибо за то, что нашли время поделиться информацией о своей конфигурации!
здесь имеется в виду: любой провайдер объектного хранилища, совместимый с S3, который вы используете ↩︎