问题描述
我的帐户中有两个VPC。一个用于测试,另一个用于Prod环境。
我正在尝试为开发人员设置具有权限限制的IAM用户帐户,以便开发人员只能访问在Test VPC中创建/修改资源的权限。
我该怎么做?您可以共享示例策略JSON吗?
解决方法
Amazon VPC是一个虚拟网络。
无法基于“用户”控制对网络的访问,因为该网络不了解用户。它只能通过IP地址和协议控制流量。
如果您希望开发人员能够在Test环境中登录实例,但不能在Prod环境中登录,则您需要控制实例本身的访问权限(例如,当他们登录EC2时)实例),或控制对网络的访问(例如,通过控制对VPN连接的访问或让开发人员访问具有已知IP地址范围的网络上的资源)。
这与控制公司网络上的访问完全相同-开发人员可以放在可以访问测试资源的网络上,而Sys Admins可以放在可以访问Prod资源的网络上。这与他们的计算机连接到网络的方式有关,而不是与他们的身份有关。
相反,如果您的目标是限制开发人员在VPC中创建/更改资源的能力,那么可以通过添加IAM策略的条件来实现。例如,授予他们启动EC2实例的能力,但只能在Test VPC中启动。
请参阅:How to Help Lock Down a User’s Amazon EC2 Capabilities to a Single VPC | AWS Security Blog
,我得到的是您正在尝试将用户限制在特定VPC下的服务。对于允许用户更新仅在特定VPC内的Lambda函数,我做了同样的事情。可以像下面这样:
{
"Version": "2012-10-17","Statement": [
{
"Sid": "AllowAllResources","Effect": "Allow","Action": "*","Resource": "*"
},{
"Sid": "DenyLambdaUpdatIfNotInsideVPC","Effect": "Deny","Action": [
"lambda:CreateFunction","lambda:UpdateFunctionConfiguration"
],"Resource": "*","Condition": {
"StringNotEquals": {
"lambda:VpcIds": "your vpc id"
}
}
}
]
}
通过这种方式,您可以通过在deny语句中编写服务及其特定操作来限制用户访问VPC之外的资源。