как заставить локальную машину взять на себя роль IAM - PullRequest
0 голосов
/ 14 апреля 2019

Что у меня есть

  1. пользователь IAM
  2. роль IAM с разрешениями s3, sqs
  3. пружинный упор
  4. веб-сервис, использующий сервис ресурсов aws, аутентифицирующий aws на основе ролей (ключи не указаны)

Что я хочу

  1. локально запустить приложение
  2. какой-то способ заставить локальную машину принять желаемую роль IAM

Aws Инициализация ресурса

AmazonS3 amazonS3Client = AmazonS3ClientBuilder.standard()
                .withCredentials(new EC2ContainerCredentialsProviderWrapper())
                .withRegion(Regions.DEFAULT_REGION)
                .withForceGlobalBucketAccessEnabled(true)
                .build();

AmazonSQS amazonSQSClient = amazonSQSClient = AmazonSQSClientBuilder.standard()
                .withCredentials(new EC2ContainerCredentialsProviderWrapper())
                .withRegion(Region.getRegion(regions).getName())
                .build();

теперь, когда я запускаю приложение и звоню очевидно, доступ к AWS запрещен

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

1 Ответ

1 голос
/ 14 апреля 2019

У нас была эта проблема довольно много. Но ваш случай проще, так как вы используете DefaultCredentialProviderChain. Цепочка ищет учетные данные в среде, а затем IAM (в таком порядке, я думаю).

Мое предложение было бы забыть о насмешливом IAM, вместо этого высмеивать службы. Задайте несколько фиктивных учетных данных в среде, чтобы цепочка поставщиков использовала их вместо попыток использовать IAM.

Для S3: https://github.com/adobe/S3Mock

Для SQS: https://github.com/MeteoGroup/sqsmock

Теперь, если вы абсолютно решительно настроены издеваться над IAM, проверьте это: https://github.com/NYTimes/mock-ec2-metadata

Имейте в виду, установка для этого не стоит того, что вы получаете из нее. YMMV

Вы также можете быть заинтересованы в: https://github.com/localstack/localstack

Но я этим не пользовался (пока).

РЕДАКТИРОВАТЬ: Почему трудно издеваться над IAM? Поскольку учетные данные iam поступают из конечной точки метаданных, которая равна http://169.254.168.254. Таким образом, чтобы смоделировать IAM, необходимо смоделировать конечную точку метаданных. И это обычно включает в себя взлом iptables в некотором роде.

...