Где 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

Вы найдете следующее описание:

Создает AmazonSecretsManagerClient с учетными данными, загруженными из конфигурации приложения по умолчанию, и в случае неудачи из службы профиля экземпляра в экземпляре EC2.

Это означает, что вы работаете в службе EC2 или ECS (или в связанной службе, такой как Beanstalk, ...) с ролью, назначенной экземпляру, или вы настроили свои учетные данные в стандартном методе в файле учетных данных. AWS SDK помогает вам найти учетные данные.

Эта ссылка на документ более подробно объясняет, как управлять учетными данными AWS и выбирать их.

Работа с учетными данными AWS

Я видел, как многие разработчики неправильно понимают, как работают учетные данные и как они используются в SDK. Учитывая, что учетные данные AWS хранят ключи от королевства AWS, управление и защита их жизненно важны.

Другие вопросы по тегам