更新时间:2025-08-28 GMT+08:00

元数据安全最佳实践

禁用实例元数据(购买ECS时)

当ECS应用不需要访问元数据时,可通过禁用元数据避免不必要的安全风险。

  1. 登录控制台,进入购买弹性云服务器页面。

    根据业务需要,完成相关购买参数的设置。详细内容,请参见购买弹性云服务器

  2. 在“高级配置”中,设置“元数据访问”为“禁用”。
    图1 设置元数据版本
  3. 确认参数并单击“立即购买”,完成弹性云服务器的购买。

禁用实例元数据(使用ECS时)

当ECS应用不需要访问元数据时,可通过禁用元数据避免不必要的安全风险。

  1. 登录控制台,进入弹性云服务器列表页面。
  2. 单击弹性云服务器名称,进入“基本信息”页面。
  3. 单击“元数据访问”参数。
    图2 元数据访问
  4. 在“禁用元数据访问”对话框,输入“YES”并单击“确定”,禁用实例的元数据访问。
    图3 禁用元数据访问

限制委托配置范围

ECS可通过配置委托实现通过元数据获取临时凭证,详细操作,请参见在ECS上通过委托的临时访问密钥访问其他云服务

由于凭证泄露会导致安全风险,需要严格控制委托的配置范围:

  • 当业务不需要获取临时凭证时,不配置实例委托。
  • 当业务有获取临时凭证的诉求时,遵循权限最小化原则,对委托只配置必要的权限。

使用V2加固模式访问元数据

V2加固模式有助于预防绝大多数SSRF攻击元数据的场景。

但是由于此种模式下传统模式会被拒绝访问,所以需要按照实例粒度开启此能力:

  • 操作系统内访问元数据的服务或应用,需要修改为适配V2加固模式的调用方式。
  • 参考配置实例元数据选项,切换实例的“元数据访问方式”为“仅V2(Token)”。

ECS操作系统使用防火墙限制应用访问元数据

如果元数据中包含了敏感数据,您可以通过使用本地防火墙规则,以操作系统用户粒度实现对实例元数据的访问限制。

防火墙配置示例如下所示:

  • Windows

    如果您不希望管理员之外的用户访问实例自定义数据,请以管理员身份开启防火墙后,在PowerShell中执行下面的命令,限制非管理员用户访问实例自定义数据:

    PS C:\>$RejectPrincipal = New-Object -TypeName System.Security.Principal.NTAccount ("Everyone")

    PS C:\>$RejectPrincipalSID = $RejectPrincipal.Translate([System.Security.Principal.SecurityIdentifier]).Value

    PS C:\>$ExceptPrincipal = New-Object -TypeName System.Security.Principal.NTAccount ("Administrator")

    PS C:\>$ExceptPrincipalSID = $ExceptPrincipal.Translate([System.Security.Principal.SecurityIdentifier]).Value

    PS C:\>$PrincipalSDDL = "O:LSD:(D;;CC;;;$ExceptPrincipalSID)(A;;CC;;;$RejectPrincipalSID)"

    PS C:\>New-NetFirewallRule -DisplayName "Reject metadata service for $($RejectPrincipal.Value), exception: $($ExceptPrincipal.Value)" -Action block -Direction out -Protocol TCP -RemoteAddress 169.254.169.254 -LocalUser $PrincipalSDDL

  • Linux

    如果您不希望root之外的用户访问自定义实例自定义数据,请以root用户权限执行下面的命令,限制非root用户访问自定义实例自定义数据:

    iptables --append OUTPUT --proto tcp --destination 169.254.169.254 --match owner ! --uid-owner root --jump REJECT