文档中心>实践教程>访问管理>使用 MFA 保护 API 请求

使用 MFA 保护 API 请求

最近更新时间:2025-04-11 15:17:12

我的收藏
本文档介绍如何为您的子账号在请求 API 时,要求先进行 MFA 多因素认证后再允许调用 API。

操作场景

本文档介绍如何通过腾讯云访问管理(CAM)的自定义策略,限制未经过 MFA 多因素认证的身份请求敏感 API 操作。通过为策略添加 MFA 条件键 “qcs:mfaPresent”,可要求用户在调用 API 前完成 MFA 设备认证,提升账号安全性。
典型场景示例:
要求跨账号扮演角色时必须通过 MFA 认证。
限制未绑定 MFA 的用户终止云服务器(CVM)实例。
保护敏感操作(例如删除 COS 存储桶、修改数据库密码等)。

前提条件

服务支持:目标 API 操作需支持 qcs:mfaPresent 条件键,详情请参见 支持 CAM 的业务接口(支持 qcs:mfaPresent 的接口范围与“支持 IP 限制”的接口范围相同)
MFA 设备:用户需提前绑定 MFA 设备,在控制台使用的用户需要开启登录保护。(如未绑定,请参见 步骤 1:绑定虚拟 MFA 并开启登录保护

注意事项

MFA 设备限制
使用 API 调用时,仅支持虚拟 MFA 设备(例如 Google Authenticator、Microsoft Authenticator、腾讯云助手小程序),暂不支持手机号验证码、微信扫码验证。
使用控制台登录时,需开启登录保护,登录保护的验证方式不限于虚拟 MFA、手机号验证码、微信扫码验证。

操作步骤

步骤 1:绑定虚拟 MFA 并开启登录保护

1. 管理员操作
进入访问管理控制台 > 用户列表,选择目标子用户,在用户详情页面中,为其开启用户登录保护,并选择虚拟 MFA 验证方式。详情请参见 为子账号设置安全保护
检查用户 MFA 绑定状态,确保为绑定状态。
确保有访问控制台权限的子用户开启了登录保护,要求登录时验证 MFA 动态口令。
2. 子用户操作
未绑定虚拟 MFA 设备的子用户,登录腾讯云控制台,根据指引绑定虚拟 MFA 设备。
已绑定虚拟 MFA 设备的子用户,登录腾讯云控制台,根据指引输入 MFA 动态口令进行身份验证。

步骤 2:创建 MFA 保护策略

1. 策略语法
在 CAM 策略中,通过 condition 字段添加 qcs:mfaPresent 条件键,限制 API 调用必须附带 MFA 认证。
示例策略(限制终止 CVM 实例):
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": "cvm:TerminateInstances",
"resource": "*",
"condition": {
"bool_equal": {
"qcs:mfaPresent": "true"
}
}
}
]
}
2. 策略关联
将策略关联至目标用户/用户组,确保权限生效。

步骤 3:调用支持 MFA 的 API

用户需通过以下方式获取临时凭证并调用 API:

方式 1:GetSessionToken(获取 MFA 临时凭证)

适用场景:当前账号内受策略保护的 API 操作(例如 COS 桶删除)。
API 调用示例:
curl -X POST <https://sts.tencentcloudapi.com> \\
-H "Authorization: TC3-HMAC-SHA256 ..." \\
-d '{
"Action": "GetSessionToken",
"Name": "temp_token",
"Policy": "{\\"version\\":\\"2.0\\", ...}",
“SerialNumber”:"qcs::cam:uin/12345678::mfa/softToken", # 输入虚拟MFA序列号
"MfaCode": "123456" # 输入虚拟 MFA 动态口令
}'
使用示例
场景:强制删除 COS 存储桶前验证 MFA
1. 策略配置
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": "cos:DeleteBucket",
"resource": "qcs::cos:ap-guangzhou:uid/12345678:bucket/example-1250000000/*",
"condition": {
"bool_equal": {
"qcs:mfaPresent": "true"
}
}
}
]
}
2. 用户操作
调用 GetSessionToken 接口获取临时凭证(需附带 MFA 动态口令)。
使用临时凭证调用 cos:DeleteBucket 接口删除存储桶。
警告:
使用示例仅作演示作用,请根据使用场景替换策略中的"effect"、"action"、"resource"等信息。避免误删 COS 桶,造成业务损失。

方式 2:AssumeRole(角色代入)

适用场景:跨账号访问或角色委托。
API 调用示例:
curl -X POST <https://sts.tencentcloudapi.com> \\
-H "Authorization: TC3-HMAC-SHA256 ..." \\
-d '{
"Action": "AssumeRole",
"RoleArn": "qcs::cam::uin/12345678:role/TestRole",
"RoleSessionName": "test",
"DurationSeconds": 7200,
“SerialNumber”:"qcs::cam:uin/12345678::mfa/softToken", # 输入虚拟 MFA 序列号
"MfaCode": "123456" # 输入虚拟 MFA 动态口令
}'