如何通过IAM策略实现学生用户的受限IAM资源访问与管理
解决方案:仅用IAM策略实现学生的受限IAM练习权限
完全可以仅通过IAM策略实现你的需求,之前的策略问题出在Condition的条件键用错了——你错误地用当前用户的aws:username去匹配前缀规则,正确的做法是针对要创建/访问的IAM资源名称设置条件。
下面是覆盖用户、组、策略的完整策略,严格限制学生只能创建/查看以自身用户名为前缀的IAM资源:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageOwnPrefixedUsers", "Effect": "Allow", "Action": [ "iam:CreateUser", "iam:ListUsers", "iam:GetUser", "iam:DeleteUser" ], "Resource": "arn:aws:iam::{Account}:user/*", "Condition": { "StringLike": { "iam:UserName": "${aws:username}_*" } } }, { "Sid": "ManageOwnPrefixedGroups", "Effect": "Allow", "Action": [ "iam:CreateGroup", "iam:ListGroups", "iam:GetGroup", "iam:DeleteGroup" ], "Resource": "arn:aws:iam::{Account}:group/*", "Condition": { "StringLike": { "iam:GroupName": "${aws:username}_*" } } }, { "Sid": "ManageOwnPrefixedPolicies", "Effect": "Allow", "Action": [ "iam:CreatePolicy", "iam:ListPolicies", "iam:GetPolicy", "iam:DeletePolicy" ], "Resource": "arn:aws:iam::{Account}:policy/*", "Condition": { "StringLike": { "iam:PolicyName": "${aws:username}_*" } } }, { "Sid": "AllowConsoleIAMNavigation", "Effect": "Allow", "Action": [ "iam:GetAccountPasswordPolicy", "iam:ListAccountAliases" ], "Resource": "*" } ] }
关键说明:
- 条件键修正:使用
iam:UserName/iam:GroupName/iam:PolicyName这些针对资源名称的条件键,匹配${aws:username}_*,确保学生只能创建带自身用户名前缀的资源。 - 控制台兼容性:添加了
iam:GetUser/iam:GetGroup等Get类权限,以及控制台导航必需的iam:GetAccountPasswordPolicy等权限,避免控制台操作时出现权限报错。 - 权限范围:包含了删除权限(如果不需要可以移除),同时通过Condition限制学生只能操作自己创建的带前缀资源。
使用时,将策略中的{Account}替换为你的AWS账号ID,然后将该策略附加给学生的IAM用户或他们所在的组即可。
内容的提问来源于stack exchange,提问作者Alvaro Pedraza
相关产品推荐
相关产品推荐

