AWS IAM:允许将除自己以外的任何人添加到组中的策略



有没有办法限制iam:AddUserToGroup由哪个用户添加?我想构建一个策略,允许将任何用户添加到组中,但不允许请求者添加自己除外。我能够通过将请求者限制为可用资源来限制其他操作,但在这种情况下,资源是组。

如果我

错了,有人纠正我,但我认为在尝试从 AWS 控制台添加组时,无法限制用户可以添加到组的人员。如果您使用其他工具(例如 Lambda(来修改组成员身份,则可以执行此操作。

IAM 权限可以达到服务和资源的操作,但不能达到这些操作的参数。如果他们这样做会很酷。:)

例如,可以允许或限制每个策略的操作AddUserToGroup。与将应用操作的组资源相同。因此,您可以限制或允许访问特定资源(组(上的AddUserToGroup操作,但 IAM 不允许您将策略条件基于操作的参数。

在这种情况下,参数UserName AddUserToGroup操作上。

结合 byumark 答案评论中提到的博客文章中定义的执行角色和权限,我使用这个简单的 lambda 函数来自动修复我想要防止的操作类型:

'use strict';
var aws = require('aws-sdk');
var iam = new aws.IAM();
exports.handler = function(event, context) {
    // Log the incoming Amazon CloudWatch Events event     
    console.log('Received event:', JSON.stringify(event, null, 2));
     // If the caller is not an IAM user, do nothing
     if (event.detail.userIdentity.type != 'IAMUser') {
         context.done();
     } else {
        var userName = event.detail.userIdentity.userName;
        // If the user is adding herself to a group
        if (event.detail.eventName === "AddUserToGroup" &&
                event.detail.requestParameters.userName === userName) {
            // Remove the user from that group
            var groupName = event.detail.requestParameters.groupName;
            console.log('User adding self to group detected. Removing user',
                            userName, 'from group', groupName);
            var params = {
                GroupName: groupName, 
                UserName: userName
            };
            iam.removeUserFromGroup(params, function(err, data) {
                if (err) {
                    console.log(err, err.stack);
                } else {
                    console.log(data);
                }
            });
        }
     }
  }

相关内容

  • 没有找到相关文章

最新更新