【问题标题】:How to tell what version of Instance Metadata Service(IMDS) EC2 instance is using?如何判断实例元数据服务 (IMDS) EC2 实例正在使用哪个版本?
【发布时间】:2021-02-12 03:04:31
【问题描述】:

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 aws-cli


    【解决方案1】:

    如果您想从 EC2 实例中确定它,您可以尝试向http://169.254.169.254/ 发送请求,然后查看状态码是什么。

    例如,此实例启用了 IMDSv2,不接受没有令牌的请求:

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

    401 状态码表示未经授权。

    如果您拥有有权描述 EC2 实例的 AWS 访问密钥,则可以运行以下命令:

    $ 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(HttpTokensoptional)。

    要启用 IMDSv2,您可以运行 aws ec2 modify-instance-metadata-options

    【讨论】:

    • 只是添加使用 AWD 配置规则 - ec2-imdsv2-check 来自动检查 EC2 合规性。
    【解决方案2】:

    让我总结一下我发现的here

    1. 通过 AWS 控制台中的 EC2 服务连接到实例
    2. 输入 IMDSv1 命令:curl http://169.254.169.254/latest/meta-data/
    3. 如果您收到列表项,则您的实例可以使用 IMDSv1 请求。如果您收到 401 - Unauthorized,则它使用 IMDSv2 或非 IMDSv2。
    4. 现在输入 IMDSv2 命令:TOKEN=curl -X PUT "<http://169.254.169.254/latest/api/token"> -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/
    5. 如果您收到项目列表,则您的实例可以使用 IMDSv2 请求。否则,您的实例根本不允许请求元数据(无论版本如何)

    如果要更改此配置follow this

    【讨论】:

      猜你喜欢
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      相关资源
      最近更新 更多