AWS EC2安全策略 - 将用户限制为某些实例

时间:2017-11-30 22:30:04

标签: amazon-web-services amazon-ec2

所以我试图在AWS上部署几个EC2实例。我系统的每个模块的一个实例(计费模块的实例,事务模块的实例等)。因此,我希望将EC2实例的完全访问权限授予在该模块上工作的组,同时阻止对该帐户上的其他EC2实例的权限,例如,开发计费的开发人员应该只能访问EC2计费实例而不能访问其他任何内容。我找不到通过IAM策略实现这一点的方法。有人可以帮帮我吗。感谢

4 个答案:

答案 0 :(得分:3)

没有AWS级别权限

首先,如果它是关于EC2实例的SSH访问(或远程桌面,如果是Windows),那么您可以在不需要IAM或其他AWS特定访问控制机制的情况下执行此操作。

  • 仅与需要访问每台服务器的管理员共享SSH密钥。
  • 为每个用户创建密钥并将其添加到EC2实例,以便具有密钥的用户可以访问服务器。

注意:还要记得使用安全组将其IP列入白名单,不允许来自不同网络的任何未经授权的访问。

使用AWS IAM权限

如果要允许VPC,自动扩展,负载平衡和其他配置,则可以为这些用户创建具有细粒度访问权限的IAM用户(不适用于EC2)。但实际上这样做很有挑战性,因为编写细粒度策略以及在新用户进入时维护和修改它们需要花费很多精力。

一些公司使用的策略之一是创建多个AWS账户,并在每个可以授予子组访问权限的位置部署服务器。您可以创建合并结算并使用AWS Organizations进行结算和治理。但是,如果每个EC2实例之间的依赖关系不是VPC级别,则这是可能的。

答案 1 :(得分:1)

完全支持排列类型,您可以将用户/组限制为仅根据您的安全性和访问模型标记的实例。

这是一个很好的博客,其中包含有关将用户限制为已标记实例的示例。

来自揭秘EC2 Resource-Level Permissions

  

现在让我们更进一步。资源级别的一个好处   权限是您可以使用它们来利用EC2标记。   例如,您可以确保用户可以停止,终止或   仅当实例具有名为的标记时才重启us-east-1 中的实例   环境设置为Prod 。通过此更改,该策略现在看起来   像这样:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "TheseActionsDontSupportResourceLevelPermissions",
            "Effect": "Allow",
            "Action": ["ec2:Describe*"],
            "Resource": "*"
        },
        {
            "Sid": "ThisActionSupportsResourceLevelPermissionsWithInstancesButNotWithTags",
            "Effect": "Allow",
            "Action": ["ec2:RunInstances"],
            "Resource": [
                "arn:aws:ec2:us-east-1:accountid:instance/*",
                "arn:aws:ec2:us-east-1:accountid:key-pair/*",
                "arn:aws:ec2:us-east-1:accountid:security-group/*",
                "arn:aws:ec2:us-east-1:accountid:volume/*",
                "arn:aws:ec2:us-east-1::image/ami-*"]
        },
        {
            "Sid": "TheseActionsSupportResourceLevelPermissionsWithInstancesAndTags",
            "Effect": "Allow",
            "Action": [
                "ec2:TerminateInstances",
                "ec2:StopInstances",
                "ec2:StartInstances"],
            "Resource": "arn:aws:ec2:us-east-1:accountid:instance/*",
            "Condition": {
                "StringEquals": {"ec2:ResourceTag/Environment": "Prod"}
            }
        }
    ]
}

正如其他人所说,这并不限制SSH访问。为此,您只需为具有访问权限的用户/组的实例配置密钥。您可以维护每个组的使用列表,并且在设置时,仅将用户提供给通过标记分配的组。

答案 2 :(得分:0)

IAM中创建一个群组,并通过将用户添加到群组中来包含开发者。

执行相同操作并为另一个实例创建另一个组。

启动2个单独的EC2个实例后,为这两个实例生成唯一的KeyPair,并仅将其分享给您打算让他们访问的开发人员。

答案 3 :(得分:0)

您可以使用AWS OpsWork管理EC2实例对用户的访问非常简单...... 有关详细信息,您可以浏览以下链接: AWS OpsWork