5

我知道您可以设置 IAM 策略来限制对服务的访问。但是,是否可以设置策略以允许访问服务的一部分。

例如,我是两个 EC2 实例。我需要创建两个用户,以便他们可以访问 AWS 控制台,但每个用户只能访问一个 EC2 实例。

4

2 回答 2

5

是的,您可以使用EC2 的资源级权限来执行此操作

资源的结构在文档中说明如下:

arn:aws:[service]:[region]:[account]:resourceType/resourcePath

以下是您为每个用户构建 IAM 策略的方式:

用户 1

{
   "Version": "2012-10-17",
   "Statement": [{
      "Effect": "Allow",
      "Action": "ec2:*",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/InstanceIdOne"
    }
   ]
}

用户 2

{
   "Version": "2012-10-17",
   "Statement": [{
      "Effect": "Allow",
      "Action": "ec2:*",
      "Resource": "arn:aws:ec2:us-east-1:123456789012:instance/InstanceIdTwo"
    }
   ]
}
于 2013-12-12T16:24:08.877 回答
1

无法访问 EC2:DescribeInstance 的策略将不起作用。您需要允许 DescribeInstances 访问所有资源并根据需要管理对特定实例的修改、删除等其他访问权限。

简而言之,允许所有用户进行所有基本操作,如描述标签、实例、网络 ACL、图像等,并允许特定的破坏性操作,如修改和删除来选择用户。

供您参考的 EC2 操作列表 http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Operations.html

所以你有2个选择-

  1. 创建一个如下所示的策略并将相同的策略附加到两个用户

    {
      "Version": "2012-10-17",
      "Statement": [{
      "Effect": "Allow",
      "Action": "ec2:*Describe*",
      "Resource":"*",
      },
      {
        "Effect": "Allow",
        "Action": [
             "ec2:*Modify*",
             "ec2:*Delete*"
        ],
        "Principal": { "AWS": "arn:aws:iam::AWS-account-ID:user/**user-name-1**" },
        "Resource": "arn:aws:ec2:us-east-1:AWS-account-ID:instance/**InstanceIdOne**"
     },
     {
        "Effect": "Allow",
        "Action": [
           "ec2:*Modify*",
           "ec2:*Delete*"
     ],
        "Principal": { "AWS": "arn:aws:iam::AWS-account-ID:user/**user-name-2**" },
        "Resource": "arn:aws:ec2:us-east-1:AWS-account-ID:instance/**InstanceIdTwo**"
     }
    ]}
    
  2. 创建 2 个不同的策略。下面的一个例子

    {
      "Version": "2012-10-17",
      "Statement": [{
      "Effect": "Allow",
      "Action": "ec2:*Describe*",
      "Resource":"*",
      },
      {
         "Effect": "Allow",
         "Action": [
             "ec2:*Modify*",
             "ec2:*Delete*"
         ],
         "Principal": { "AWS": "arn:aws:iam::AWS-account-ID:user/**user-name-1**" },
         "Resource": "arn:aws:ec2:us-east-1:AWS-account-ID:instance/**InstanceIdOne**"
     }
    ]}
    
于 2017-05-12T22:29:51.200 回答