如何限制只有启用了MFA认证的用户才能操作OSS资源?

第一章:用户使用场景介绍

  阿里云控制台提供了各个产品相关图形化配置,并且功能比较齐全。对于用户来说,学习成本低、易操作、易上手。因此,绝大多数用户使用主账号登录控制台进行日常的运维管理操作。由于主账号对其名下的所有阿里云资源都拥有完全控制的权限,一旦主账号的登录密码泄露,该账号下的资产将面临极大的损失,甚至有可能被他人恶意使用而造成相关法律风险。
  因此,我们建议您禁用主账号进行相关操作,而是通过授权子账号的方式进行运维和开发管理。而对于不得不使用控制台进行操作的场景,我们建议您对账号启用MFA,以提高账号的安全性。

第二章:为主账号/子账号启用MFA

  为主账号/子账号启用MFA的相关操作方法请参见:账号设置MFA操作方法

第三章:为子账号配置RAM policy 已拒绝非MFA认证的操作请求

  当为主账号以及子账号启用MFA后,用户每次登录控制台的操作都需要输入MFA安全码。因此,可以保证控制台相关操作的安全。但是SDK、API以及工具的相关操作默认不传递MFA参数。因此,对于启用了MFA认证的账号,仍然使用AK信息,不通过MFA二次认证而继续使用SDK、API以及工具操作OSS相关资源。为了实现拒绝子账号所有非MFA二次认证的操作请求,需要对子账号额外赋予RAM Policy。具体RAM Policy策略模板如下:

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "oss:*"
            ],
            "Resource": [
                "acs:oss:*:*:*"
            ],
            "Condition": {
                "Bool": {
                    "acs:MFAPresent": [
                        "true"
                    ]
                }
            }
        }
    ]
}

  设置如上RAM policy策略后,该账号的所有请求操作都需要进过MFA进行二次认证。因此账号登录控制台,输入MFA安全码后,就可以进行正常操作。但是该用户如果使用API、SDK或者工具进行操作,就会提示授权失败如下所示:

D:\5-AK账号\ossutil64>ossutil64.exe ls  oss://test-hangzhou-2025/ -e http://oss-
cn-hangzhou.aliyuncs.com
Error: oss: service returned error: StatusCode=403, ErrorCode=AccessDenied, Erro
rMessage=The bucket you visit is not belong to you., RequestId=5C52AB7E880904877
DF82E2E, Bucket=test-hangzhou-2025!

第四章:FAQ

  1. Bucket Policy的条件参数是否支持设置"MFAPresent"参数?

    • 当前不支持。后续规划支持该特性;
  2. 对于有API、SDK或者工具操作是否支持指定MFA参数?

    • 当前不支持;
上一篇:易点租发布办公电脑租赁147项标准


下一篇:【Java数据结构及算法实战】系列004:程序性能的两种确定方式