允许AWS IAM用户仅启动一个ec2实例

 Q小泓别_431 发布于 2023-01-19 18:17

在亚马逊AWS中,我想给我的IAM注册(Windows)用户一个基于API的小程序,该程序将启动一个基于AMI的自定义实例,然后将她的机器连接到它.容易 - 但如果同一用户在第一个仍在运行时(从相同或另一台机器)尝试启动另一个实例,则第二次和后续尝试必须失败.AMI将在多个用户之间共享.该实例对用户来说是唯一的.

请注意,此问题与某些类似的问题不同,因为我需要按需启动实例,但不允许进一步的实例.目标是防止应用程序的使用超过许可.

理想情况下,检测和防止这种情况都会发生在AWS端,因为它更安全.

在客户端,我可以看到如何使用标记来执行此操作 - 使用用户名标记已启动的实例,并在允许实例启动之前搜索标记.

有没有办法在服务器端执行此操作,具有IAM策略条件或其他内容?

1 个回答
  • 当然.这是一个简单的例子,我给了用户访问所有ec2动作的权限,除非那些我明确否认的,如果存在具有键"MyTag"和值"MyTagValue"的ResourceTag.

    拒绝行动:

    PurchaseReservedInstancesOffering

    RequestSpotInstances

    RunInstances

    例:

    {
      "Statement": [
        {
          "Action": [
            "ec2:PurchaseReservedInstancesOffering",
            "ec2:RequestSpotInstances",
            "ec2:RunInstances"
          ],
          "Effect": "Deny",
          "Resource": "*",
          "Condition": {
            "StringLike": {
              "ec2:ResourceTag/MyTag": "MyTagValue"
            }
          }
        },
        {
          "Action": "ec2:*",
          "Effect": "Allow",
          "Resource": "*"
        }   
      ]
    }
    

    以下是IAM策略模拟器的结果证明:

    IAM策略模拟器的屏幕截图,显示了几个被拒绝的操作.

    当该标记不存在时,允许这些操作,是其他值,等等.

    此外,ec2允许操作"Action": "ec2:*"是为了举例...您可以删除整个块或将其用作模板以开始仅允许用户使用一组特定的EC2操作.

    2023-01-19 18:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有