gpt4 book ai didi

amazon-web-services - 如何基于标签隐藏 EC2 中的实例 - 使用 IAM?

转载 作者:行者123 更新时间:2023-12-04 11:18:13 26 4
gpt4 key购买 nike

我想在 IAM 中创建一个新用户,并允许他创建新的 EC2 实例,但只能查看/管理他创建的那些实例。

这可以通过 IAM 实现吗?

这是我尝试的组策略:

{
"Statement":
[
{
"Effect": "Allow",
"Action":
[
"ec2:DescribeImages",
"ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups",
"ec2:DescribeAvailabilityZones"
],
"Resource": "*"
},

{
"Effect": "Allow",
"Action":
[
"ec2:DescribeInstances","ec2:RunInstances", "ec2:TerminateInstances",
"ec2:StartInstances", "ec2:StopInstances", "DescribeInstanceAttribute", "DescribeInstanceStatus"
],
"Resource": "*",
"Condition":
{
"StringEquals":
{
"ec2:ResourceTag/tag": "TheValueOfTheTag"
}
}

}
]
}

最佳答案

不幸的是,这尚不可用,至少不是您可能正在寻找的自动方式 - 您的用例有两个方面:

资源级权限

最近引入的 Resource-Level Permissions for EC2 and RDS Resources 最终允许将 Amazon EC2 API 操作限制到特定实例,从而从该角度启用您的用例,例如:

  • Allow users to act on a limited set of resources within a larger, multi-user EC2 environment.
  • [...]
  • Control which users can terminate which instances.


Example IAM Policies 功能之一展示了如何 Allow a user all actions on an Amazon DynamoDB table whose name matches the user name ,演示了策略变量 ${aws:username} 的使用(有关详细信息,请参阅 IAM Policy Variables Overview):

{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["dynamodb:*"],
"Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/${aws:username}"
}
]
}

警告

此资源级权限尚不适用于所有 API 操作:

This is a complex and far-reaching feature and we'll be rolling it out in stages. In the first stage, the following actions on the indicated resources now support resource-level permissions:

Instances - Reboot, Start, Stop, Terminate.
EBS Volumes - Attach, Delete, Detach.

EC2 actions not listed above will not be governed by resource-level permissions at this time. We plan to add support for additional APIs throughout the rest of 2013.



值得注意的是,它缺少您似乎也在寻找的 ec2:Describe* 操作。

审计追踪

但是,AWS 尚未公开发布任何类型的审计功能(由于 Amazon IAM 的工作方式,必须在内部可用),这意味着无法找出哪个特定 IAM 用户创建了特定资源。

更新

正如预期的那样,AWS 同时发布了 AWS CloudTrail ,这是一项 Web 服务,用于记录您账户的 AWS API 调用并向您提供日志文件:

The recorded information includes the identity of the API caller, the time of the API call, the source IP address of the API caller, the request parameters, and the response elements returned by the AWS service.



有关一些详细信息和初始约束,请参阅我对 Logs for actions on amazon s3 / other AWS services 的相关回答。

部分解决方法

我不知道有任何独立的解决方法 - 在合作环境中,您可以通过应用相应的监控和自动化来近似您想要的内容,如下所示:

1) 您需要强制用户只运行带有某种标记方案的 EC2 实例,例如 owner=<username>
2) 有了该方案,您可以应用基于 ${aws:username} 的策略,如上所述,分别为。基于标签的轻微变化 - AWS 安全博客有一篇综合性的 Resource-level Permissions for EC2 – Controlling Management Access on Specific Instances 文章说明了这种方法 - 您的策略可能如下所示:

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances",
"ec2:TerminateInstances"
],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/owner":"${aws:username}"
}
},
"Resource": [
"arn:aws:ec2:your_region:your_account_ID:instance/*"
],
"Effect": "Allow"
}
]
}

3) 请注意,这意味着如果用户忘记使用正确的标签启动它们,他将无法管理他的实例,因此此外,您可以使用类似 Netflix 的 Conformity Monkey 之类的东西来启发式执行策略,即,一旦检测到没有所需标签的实例,负责的人就会收到通知,并可以尝试通过询问用户或关闭实例来强制执行此操作(当然也可以自动完成)。

关于amazon-web-services - 如何基于标签隐藏 EC2 中的实例 - 使用 IAM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com