Где AWS Secrets Manager получает учетные данные AWS?
Я начинаю работать с Secrets Manager.
Итак, я создал свой первый секрет в AWS. Во время процесса он дал мне пример кода для работы. Я положил это в небольшое приложение и запустил его.
Это код:
String region = "us-east-1";
string secret = "";
MemoryStream memoryStream = new MemoryStream();
IAmazonSecretsManager client = new AmazonSecretsManagerClient(RegionEndpoint.GetBySystemName(region));
GetSecretValueRequest request = new GetSecretValueRequest();
request.SecretId = "MySecretNameExample";
GetSecretValueResponse response = null;
response = client.GetSecretValue(request);
Проблема в том, что 1) я смог успешно восстановить созданный секрет и 2) нигде не создаю объект Credentials с какими-либо действительными учетными данными AWS. Откуда этот код получает информацию об учетных данных??
2 ответа
AWS SDK использует стратегию разрешения, которая просматривает несколько мест, пока не найдет учетные данные, которые можно использовать. Типично DefaultProviderChain
класс отвечает за выполнение резолюции. Больше информации здесь, но суть в том, что поиск выполняется в следующем порядке (для Java другие языки похожи):
- переменные среды
- Системные свойства Java
- файл учетных данных (например, в домашнем каталоге)
- учетные данные профиля экземпляра (доступно только при работе в AWS)
Когда вы работаете в инфраструктуре AWS, вы можете назначить профиль или роль для ресурса, на котором выполняется ваш код. Это делает учетные данные автоматически доступными для вашего кода. Идея состоит в том, что они упростили использование учетных данных непосредственно в вашем коде.
Если вы обратитесь к документации по API для этой строки кода:
IAmazonSecretsManager client = new AmazonSecretsManagerClient(
RegionEndpoint.GetBySystemName(region));
Вы найдете следующее описание:
Создает AmazonSecretsManagerClient с учетными данными, загруженными из конфигурации приложения по умолчанию, и в случае неудачи из службы профиля экземпляра в экземпляре EC2.
Это означает, что вы работаете в службе EC2 или ECS (или в связанной службе, такой как Beanstalk, ...) с ролью, назначенной экземпляру, или вы настроили свои учетные данные в стандартном методе в файле учетных данных. AWS SDK помогает вам найти учетные данные.
Эта ссылка на документ более подробно объясняет, как управлять учетными данными AWS и выбирать их.
Я видел, как многие разработчики неправильно понимают, как работают учетные данные и как они используются в SDK. Учитывая, что учетные данные AWS хранят ключи от королевства AWS, управление и защита их жизненно важны.