Как определить, какую версию службы метаданных экземпляра (IMDS) использует экземпляр EC2?

#amazon-web-services #amazon-s3 #amazon-ec2 #aws-cli

#amazon-web-services #amazon-s3 #amazon-ec2 #aws-cli

Вопрос:

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

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html#configuring-instance-metadata-options

Ответ №1:

Если вы хотите определить это из экземпляра EC2, вы можете просто попробовать отправить запрос на http://169.254.169.254 / и посмотрите, что такое код состояния.

Например, в этом экземпляре включен IMDSv2, и запросы без токена не принимаются:

 $ curl -w "%{http_code}n" http://169.254.169.254/
401
  

Код состояния 401 означает несанкционированный.

Если у вас есть ключи доступа AWS с разрешениями для описания экземпляров EC2, вы можете выполнить следующее:

 $ aws ec2 describe-instances --region us-west-2 --instance-id i-0123456789abcdef --query "Reservations[0].Instances[0].MetadataOptions"
{
    "State": "applied",
    "HttpTokens": "optional",
    "HttpPutResponseHopLimit": 1,
    "HttpEndpoint": "enabled"
}
  

Для этого сервера не требуется IMDSv2 ( HttpTokens is optional ).

Чтобы включить IMDSv2, вы можете запустить aws ec2 modify-instance-metadata-options . Подробнее о настройке параметров метаданных экземпляра см. В документации AWS.

Комментарии:

1. Просто для добавления используйте AWD Config Rule — ec2-imdsv2-check , чтобы автоматизировать проверку соответствия EC2.

Ответ №2:

Позвольте мне обобщить то, что я нашел здесь

  1. Подключитесь к экземпляру через службу EC2 в консоли AWS
  2. Введите команду IMDSv1: curl http://169.254.169.254/latest/meta-data/
  3. Если вы получаете элементы списка, ваш экземпляр может использовать запросы IMDSv1. Если вы получаете 401 - Unauthorized , то он использует IMDSv2 или нет.
  4. Теперь введите команду IMDSv2: TOKEN=curl -X PUT "<http://169.254.169.254/latest/api/token"> -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" amp;amp; curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
  5. Если вы получаете список элементов, ваш экземпляр может использовать запросы IMDSv2. В противном случае вашему экземпляру вообще не разрешается запрашивать метаданные (независимо от версии)

Если вы хотите изменить эту конфигурацию, выполните следующие действия.