当前位置: 首页 > 知识库问答 >
问题:

AWS Amazon IAM用户策略在EU-WEST-1区域上只访问一个EC2实例

谢锦程
2023-03-14

我读了AWS的文档,它没有什么帮助...至少对我来说不是。我已经阅读了有关IAM和EC2上的用户策略。

我使用的区域是eu-west-1(爱尔兰)。我制定了这个政策:

{
  "Version": "2012-10-17",
  "Statement": [{ 
    "Effect": "Allow",
    "Action":   "ec2:*", 
    "Resource": "arn:aws:ec2:eu-west-1:ACCOUNT_ID:instance/INSTANCE_ID"
  }]
}
    null

这是可以的,但它不是我需要的,因为用户可以访问所有EC2实例。

我想知道这是AWS的一个bug还是eu-west-1区域有问题,还是这个策略不支持?或者也许我错了,如果是的话,请帮我怎么做

共有1个答案

狄阳华
2023-03-14

最近为EC2和RDS资源引入的资源级权限还不能用于所有API操作,但AWS正在逐步添加更多权限,请参见Amazon EC2的Amazon资源名称:

当前,并非所有API操作都支持单个ARN;稍后,我们将添加对附加API操作和ARN的支持,以获得附加AmazonEC2资源。有关Amazon EC2 API操作可以使用的ARN以及每个ARN的支持条件键的信息,请参见Amazon EC2 API操作的支持资源和条件。

您将发现,在编写本文时,所有EC2:descripe*操作仍然不在Amazon EC2 API操作的支持资源和条件中。

除了限制单个资源级别上的访问之外,您可能还希望使用与策略变量组合的条件检查(也),因为EC2:region是AmazonEC2支持的条件键之一-您可以将您的策略与专门处理descripe*操作的条件键组合,例如如下所示(未经测试):

{
  "Statement": [
    {
      "Action": [
        "ec2:Describe*"
      ],
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ec2:Region": "eu-west-1"
        }
      }
    }
  ]
}

请注意,这仍然允许用户查看EU-West-1中的所有实例,即使您的原始策略片段将阻止所有已经支持资源级别权限的API操作(例如实例创建/终止等)。

在有关如何在EC2中基于使用IAM的标记隐藏实例的相关答案中,我在“部分变通”一节中概述了另一种可能的方法。

祝你好运!

 类似资料:
  • 我在us-east-1地区有帐户A,有IAM角色rt-profileRole和我的应用程序设置。帐户B在us-west-1和US-West-2中创建了S3存储桶。 我正在尝试使用aws cli和role RTProfile列出对象。这两个bucket策略都与下面资源相似,具有正确的bucket arn(策略附加到的bucket的bucket arn)。 问题是我可以从我的本地系统中使用aws s3

  • 我正计划使用JWT。JWT将包含权限列表,单个微服务将使用“位置”和“权限”的组合来确定。 不幸的是,我无法在Keycloak中配置客户端来分配策略和权限,也无法在Internet上找到任何示例。

  • 1. 用户ID模型 用户ID(即UID)非系统生成,而是由业务方通过调用分析云提供的“setuserid” 接口传入的用户标识码。通常会建议业务方将用户的登录账户名称等业务方自有账户体系的用户唯一标识码作为用户ID 上传。 相比于设备ID是对设备进行标识,用户ID更倾向于基于业务的账户体系对用户进行标识与管理。因此,用户ID模型更适用于当您关注同一个账户在不同设备甚至不同平台的数据分析时,且对于用

  • 为了提高语言实用性,Tea将用户分为普通用户和高级用户。 普通用户主要开发业务功能,他们更关心代码的开发效率、易读性和稳定性。 高级用户主要开发底层框架,他们更关心代码的运行效率、可重用性和可扩展性。 Tea 语言提高了大量技术以支持底层开发,但普通用户仍然可以在不了解这些技术的情况下完成任务。 对于普通用户,需要学习的知识有: 变量和函数定义 逻辑语句和常用表达式 简单的面向对象能力。 对于高级

  • 我有一个Java的Web应用程序(运行在Tomcat上),并希望在应用程序中的两个不同上下文之间共享数据。我想使用Hazelcast,因为我已经将其用于聚类目的。 有没有办法访问在同一个JVM(和同一个端口)上运行的单个hazelcast实例? 我尝试使用实例名访问实例,但这似乎不起作用。例如: 当我启动第二个实例(第一个实例已经运行)时,会引发以下异常: 线程“main”com中出现异常。黑泽尔

  • 我使用terraform创建了一个新的EC2实例来安装vertica,但无法在实例中访问Internet或pinggoogle.com。 我已使用私有子网设置了 ec2 实例,并使用公有子网设置了 nat 网关。 主路由表允许 0.0.0.0/0 作为目标,目标作为 nat 网关。另一个路由表将子网关联作为私有子网 10.103.2.0/24。互联网网关也连接到 VPC。 我的ec2实例安全组允许