本文档介绍如何为您的子账号在请求 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 动态口令}'