Где AWS Secrets Manager получает учетные данные AWS? - PullRequest
0 голосов
/ 29 августа 2018

Я начинаю работать с 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 ]

0 голосов
/ 29 августа 2018

Если вы обратитесь к документации по API для этой строки кода:

IAmazonSecretsManager client = new AmazonSecretsManagerClient(
    RegionEndpoint.GetBySystemName(region));

AmazonSecretsManagerClient

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

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

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

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

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

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

0 голосов
/ 29 августа 2018

AWS SDK использует стратегию разрешения, которая просматривает несколько мест, пока не найдет учетные данные, которые можно использовать. Обычно класс DefaultProviderChain отвечает за выполнение разрешения. Дополнительная информация здесь , но суть в том, что поиск выполняется в следующем порядке (для Java другие языки похожи):

  • переменные окружения
  • Свойства системы Java
  • файл учетных данных ( например, в домашнем каталоге)
  • учетные данные профиля экземпляра (доступно только при работе в AWS)

Когда вы работаете в инфраструктуре AWS, вы можете назначить профиль или роль для ресурса, на котором выполняется ваш код. Это делает учетные данные автоматически доступными для вашего кода. Идея состоит в том, что они упростили использование учетных данных непосредственно в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...