Amazon web services AWS IAM:允许向组中添加除自己以外的任何人的策略
有没有办法限制添加用户的iam:AddUserToGroup?我想建立一个策略,允许将任何用户添加到组中,但不允许请求者添加自己。我可以通过将请求者限制为可用资源来限制其他操作,但在本例中,资源是组 如果我错了,有人会纠正我,但我认为不可能限制用户在尝试从AWS控制台添加到组中时可以添加的用户。如果您使用其他工具(如Lambda)修改组成员资格,则可以这样做 IAM权限可以包括服务和资源的操作,但不包括这些操作的参数。如果他们这样做,那就太酷了。:) 例如,每个策略可以允许或限制操作Amazon web services AWS IAM:允许向组中添加除自己以外的任何人的策略,amazon-web-services,amazon-iam,Amazon Web Services,Amazon Iam,有没有办法限制添加用户的iam:AddUserToGroup?我想建立一个策略,允许将任何用户添加到组中,但不允许请求者添加自己。我可以通过将请求者限制为可用资源来限制其他操作,但在本例中,资源是组 如果我错了,有人会纠正我,但我认为不可能限制用户在尝试从AWS控制台添加到组中时可以添加的用户。如果您使用其他工具(如Lambda)修改组成员资格,则可以这样做 IAM权限可以包括服务和资源的操作,但不包括这些操作的参数。如果他们这样做,那就太酷了。:) 例如,每个策略可以允许或限制操作AddUse
AddUserToGroup
。与将应用操作的组资源相同。因此,您可以限制或允许对特定资源(组)的AddUserToGroup
操作的访问,但IAM不允许您将策略条件基于操作的参数
在这种情况下,
AddUserToGroup
操作上的参数UserName
。如果我错了,有人会纠正我,但我认为不可能限制用户在尝试从AWS控制台添加到组中时可以添加谁。如果您使用其他工具(如Lambda)修改组成员资格,则可以这样做
IAM权限可以包括服务和资源的操作,但不包括这些操作的参数。如果他们这样做,那就太酷了。:)
例如,每个策略可以允许或限制操作AddUserToGroup
。与将应用操作的组资源相同。因此,您可以限制或允许对特定资源(组)的AddUserToGroup
操作的访问,但IAM不允许您将策略条件基于操作的参数
在本例中,
AddUserToGroup
操作上的参数UserName
。结合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);
}
});
}
}
}
结合对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);
}
});
}
}
}
最后,每当调用AddUserToGroup将自己添加到组中时,我使用lambda函数自动从组中删除用户。我发现这篇AWS安全博客文章非常有助于定义进行设置所需的元素:我最终使用lambda函数在调用AddUserToGroup将自己添加到组时自动从组中删除用户。我发现这篇AWS安全博客文章非常有助于定义设置此功能所需的元素: