You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否创建区分访问密钥与用户名密码认证的AWS IAM策略?

可以用IAM策略条件区分控制台(用户名密码)和访问密钥认证

答案是肯定的,你可以通过AWS自带的条件键组合,精准区分用户是通过控制台(用户名密码)还是长期访问密钥(AK/SK)进行认证,进而实现差异化的权限管控。

核心区分逻辑

用户通过控制台登录时,AWS会自动通过STS生成临时会话凭证,这类请求会携带aws:TokenIssueTime条件键(值为凭证签发的时间戳);而直接用AK/SK调用API时,请求里不会有这个键。利用这个差异就能把两种认证方式分开。

如果还要结合MFA状态,还可以用aws:MultiFactorAuthPresent键——控制台登录启用MFA的话,这个键值为true,未启用则不存在或为false。

实际策略示例

比如你要实现:拒绝未给自己添加Compliance:Done标签的控制台用户执行s3:ListBucket,但允许AK/SK用户正常操作,策略代码如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::your-target-bucket",
            "Condition": {
                "Null": {
                    "aws:TokenIssueTime": "false" // 只匹配控制台登录的请求
                },
                "StringNotEquals": {
                    "aws:PrincipalTag/Compliance": "Done" // 检查用户是否有合规标签
                },
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false" // 可选:额外限制未启用MFA的用户
                }
            }
        }
    ]
}

注意事项

  • 控制台的所有操作本质都是用临时凭证发起的,所以都会带aws:TokenIssueTime;AK/SK调用则完全不会有这个键,这个区分逻辑很可靠。
  • 测试时可以分别用控制台和CLI执行目标操作,验证权限是否生效。
  • 如果要排除角色登录的情况,可以再加一个StringEquals条件,限定aws:PrincipalType为User。

内容的提问来源于stack exchange,提问作者Szzaass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 07:22:22