将IAM用户限制为单个VPC

问题描述

我的帐户中有两个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之外的资源。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...