
# 配置实例元数据选项
#### 操作场景
用户可以通过配置元数据选项来控制实例内元数据的行为。
#### 约束与限制
该功能当前仅上线"拉美-圣保罗一"区域。
#### 实例元数据选项
实例元数据选项可在购买BMS时配置，也可在BMS运行时配置。
元数据支持两种访问模式，如[表1]所示。
 表1元数据访问模式 
|    版本    |                V1传统模式                |                                                                                                                                                                                                                         V2加固模式                                                                                                                                                                                                                          |
|---|---|---|
| **交互方式** | 请求/响应，单次交互返回消息                       | 会话，需要先申请动态临时凭证做鉴权，再访问对应API。                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **鉴权方式** | 无                                    | 实例元数据访问需要携带凭证： - 校验时效：凭证超过有效期会被拒绝访问，有效期在申请凭证时可指定。 有效期取值为1分钟到360分钟，默认为360分钟。   - 校验实例：凭证跨实例使用会被拒绝访问。  - 拒绝代理：凭证获取请求携带x-forwarded-for字段会拒绝访问。   |
| **安全级别** | 攻击者通过操作系统内应用漏洞跳板进行SSRF攻击，可造成实例元数据泄露。 | 访问元数据需要提供有效的访问凭证，通过凭证来拦截跳板攻击的请求路径，实现对绝大多数SSRF攻击的拦截。                                                                                                                                                                                                                                                                                                                                                                                                     |
   
为了进一步增强安全性，华为云支持您设置实例元数据访问模式为仅V2加固模式（强制加固模式）。设置后，V1传统模式访问的流量会被拒绝，以防范普通模式访问可能带来的大多数SSRF相关风险
#### 从BMS访问元数据样例
分Linux和Windows，按元数据访问模式进行介绍。
#### V1传统模式
- Linux实例：
  ```
  curl -X GET http://169.254.169.254/openstack/latest/meta_data.json
  ```
  

- Windows实例：
  ```
  Invoke-RestMethod -Method GET -Uri http://169.254.169.254/openstack/latest/meta_data.json
  ```
  
 
#### V2加固模式
- Linux实例：
  ```
  # 获取元数据访问凭证，X-Metadata-Token-Ttl-Seconds推荐设置6h即21600
  TOKEN=`curl -X PUT http://169.254.169.254/meta-data/latest/api/token -H "X-Metadata-Token-Ttl-Seconds:21600"`
  # 访问实例元数据
  curl -X GET http://169.254.169.254/openstack/latest/meta_data.json -H "X-Metadata-Token:$TOKEN"
  ```
  

- Windows实例：
  ```
  # 获取元数据访问凭证，需设置有效期，不可包含标头X-Forwarded-For
  $token = Invoke-RestMethod -Headers @{"X-Metadata-Token-Ttl-Seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/meta-data/latest/api/token
  # 访问实例元数据
  Invoke-RestMethod -Headers @{"X-Metadata-Token" = $token} -Method GET -Uri http://169.254.169.254/openstack/latest/meta_data.json
  ```
  
 
#### 配置元数据（购买BMS时）
1. 登录[BMS控制台](https://console.huaweicloud.com/ecm/?#/bms/manager/bmsInfo/vmList)，进入[购买裸金属服务器](https://console.huaweicloud.com/ecm/?locale=zh-cn#/bms/createBMS)页面。
   根据业务需要，完成相关购买参数的设置。详细内容，请参见[创建裸金属服务器](https://support.huaweicloud.com/usermanual-bms/zh-cn_topic_0035100414.html)。
   
2. 在"高级配置"中，设置"元数据访问"为"启用"。
3. 设置"元数据版本"为"仅V2（Token）"。
   图1设置元数据版本   
   ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0000002477667568.png "点击放大") 
4. 确认参数并单击"下一步：确认配置"，完成裸金属服务器的创建。
 
#### 配置元数据（BMS运行时）
1. 登录[BMS控制台](https://console.huaweicloud.com/ecm/?#/bms/manager/bmsInfo/vmList)，进入裸金属服务器列表页面。
2. 在裸金属服务器列表，单击待配置的裸金属服务器名称进入"基本信息"页面。
3. 单击"元数据版本"参数右侧的编辑按钮。
   图2编辑元数据版本   
   ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0000002477835162.png "点击放大") 
4. 选择元数据版本并单击"确定"。
   图3修改元数据版本   
   ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0000002477829288.png "点击放大")
   修改完成后，可在的"基本信息"页面查看修改后的"元数据版本"。
   
 
