amazon-ec2 - 如何使用实例类型 t2.micro 创建 ec2 cloudformation 的策略

标签 amazon-ec2 aws-cloudformation

我正在尝试创建一项策略,其中某些用户可以在具有特定存储(如 8GB)的特定区域中启动具有 mid:ami-0fc61db8544a617ed 特定和 instancetype:t2.micro 的实例 我有这个模板

AWSTemplateFormatVersion: 2010-09-09
    Description: ---
      Policita para usuarios test
    Parameters:
      GroupTest1Parameter:
        Type: String
        Default: GroupTest1
        Description: Este es el valor de entrada GroupTest1Parameter
    Resources:
      PolictyTest1:
        Type: AWS::IAM::Policy
        Properties:
          PolicyName: PolictyTest1
          Groups:
            - Fn::ImportValue: !Sub "${GroupTest1Parameter}-VPCID"
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - 'ec2:RunInstances'
                  - 'cloudformation:Describe*'
                  - 'cloudformation:List*'
                  - 'cloudformation:Get*'
                Resource: 'arn:aws:ec2:*:*:instance/*'
                # Condition:
                #   StringEquals: 
                #     ec2:ImageType: ami-0fc61db8544a617ed
    Outputs:
      PolictyTest1:
        Description: politica que deniega
        Value: !Ref PolictyTest1
        Export:
          Name: !Sub "${AWS::StackName}-VPCID"

但是它不起作用。模板创建得很好,但是当我尝试使用与此策略相关的用户测试来测试策略时,他无法启动 ec2 的实例 我在读 https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html#amazonec2-actions-as-permissions

最佳答案

为了测试您的场景,我执行了以下操作:

  • 已创建 IAM 用户
  • 已将此内联政策分配给用户:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:ACCOUNT:network-interface/*",
                "arn:aws:ec2:*:ACCOUNT:volume/*",
                "arn:aws:ec2:*:ACCOUNT:key-pair/*",
                "arn:aws:ec2:*:ACCOUNT:security-group/*",
                "arn:aws:ec2:*:ACCOUNT:subnet/*",
                "arn:aws:ec2:*::image/ami-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:ACCOUNT:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:InstanceType": "t2.micro"
                }
            }
        }
    ]
}

(其中 ACCOUNT 设置为我的 AWS 账户 ID。)

然后我能够使用以下方法成功启动 t2.micro 实例:

aws ec2 run-instances --image-id ami-xxx --security-group-id sg-xxx --instance-type t2.micro

我尝试将其更改为 t2.nano 并收到 UnauthorizedOperation 错误。

请注意,上面的 run-instances 命令非常简单。它故意没有尝试指定以下内容:

  • IAM 角色
  • 标签
  • key 对

这些项目需要向用户授予额外的权限。因此,在测试您的策略时,请使用一组最小的要求(类似于上述)来测试策略。

关于amazon-ec2 - 如何使用实例类型 t2.micro 创建 ec2 cloudformation 的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61070012/

相关文章:

ruby - 加载 YAML 而不扩展标签?

amazon-web-services - AWS 中 SecurityGroup 的 HTTPS 和 ICMP 入口规则

amazon-web-services - ECS 中 EFS 挂载 "Failed to resolve"

ruby - 使用 aws-sdk ruby​​ gem 了解它自己的实例 ID

node.js - 在 EC2 上使用 node.js 驱动的服务器,如何减少 TCP 连接时间?

java - DynamoDB 读取吞吐量低于容量且没有任何限制

amazon-ec2 - 使用 private_key 时,Terraform 配置程序抛出未找到 key 错误

amazon-web-services - 即使允许 AWS codebuild 也无法访问 repo

amazon-web-services - apt-get 与 CloudFormer

amazon-web-services - 如何使用cloudformation模板为不同的elasticbeanstalk应用程序环境使用相同的应用程序负载均衡器?