ec2:RunInstances 的最低 IAM 策略

2024-01-09

我正在尝试缩小运行预定义机器映像的最小策略范围。该映像基于两个快照,我只想启动“m1.medium”实例类型。

在此基础上并在以下方面的帮助下这一页 http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html and 本文 http://aws.typepad.com/aws/2013/11/amazon-ec2-resource-level-permissions-for-runinstances.html,我制定了以下政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1385026304010",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:InstanceType": "m1.medium"
                }
            },
            "Resource": [
                "arn:aws:ec2:us-east-1::instance/*",
                "arn:aws:ec2:us-east-1::image/ami-f1c3e498",
                "arn:aws:ec2:us-east-1::snapshot/snap-e2f51ffa",
                "arn:aws:ec2:us-east-1::snapshot/snap-18ca2000",
                "arn:aws:ec2:us-east-1::key-pair/shenton",
                "arn:aws:ec2:us-east-1::security-group/sg-6af56d02",
                "arn:aws:ec2:us-east-1::volume/*"
            ]
        }
    ]
}

该策略缩小了确切的映像、快照、安全组和密钥对的范围,同时保持特定实例和卷的开放。

我正在使用 CLI 工具,如下所述here http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html:

aws ec2 run-instances --dry-run \
    --image-id ami-f1c3e498 \
    --key-name shenton \
    --security-group-ids sg-6af56d02 \
    --instance-type m1.medium

The ~/.aws/config如下:

[default]
output = json
region = us-east-1
aws_access_key_id = ...
aws_secret_access_key = ...

该命令产生一个通用的结果You are not authorized to perform this operation消息和编码的授权失败消息表明我的语句都不匹配,因此它拒绝该操作。

更改为"Resource": "*"显然解决了这个问题,但我想获得更多关于为什么上述不起作用的理解。我完全意识到这涉及一定程度的猜测工作,所以我欢迎任何想法。


Amazon Web Services 的 Jeff Barr 联系了我,他热心地帮助我找出了问题所在。

首先,您需要使用以下语句解码授权失败消息:

$ aws sts decode-authorization-message --encoded-message 6gO3mM3p....IkgLj8ekf

确保 IAM 用户/角色具有以下权限sts:DecodeAuthorizationMessage action.

响应包含一个DecodedMessage包含另一个 JSON 编码主体的密钥:

{
    "allowed": false,
    "explicitDeny": false,
    "matchedStatements": {
        "items": []
    },
    "failures": {
        "items": []
    },
    "context": {
        "principal": {
            "id": "accesskey",
            "name": "testuser",
            "arn": "arn:aws:iam::account:user/testuser"
        },
        "action": "ec2:RunInstances",
        "resource": "arn:aws:ec2:us-east-1:account:instance/*",
        "conditions": { ... }
    }
}

Under context => resource它将显示它试图与策略匹配的资源;如您所见,它需要一个帐号。这arn 文档 http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html因此应解读为:

除非另有说明,否则需要区域和帐户。

添加帐号或*在受影响的 ARN 中修复了该问题:

"Resource": [
    "arn:aws:ec2:us-east-1:*:instance/*",
    "arn:aws:ec2:us-east-1:*:image/ami-f1c3e498",
    "arn:aws:ec2:us-east-1:*:snapshot/snap-e2f51ffa",
    "arn:aws:ec2:us-east-1:*:snapshot/snap-18ca2000",
    "arn:aws:ec2:us-east-1:*:key-pair/shenton",
    "arn:aws:ec2:us-east-1:*:security-group/sg-6af56d02",
    "arn:aws:ec2:us-east-1:*:volume/*"
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ec2:RunInstances 的最低 IAM 策略 的相关文章

  • AWS - 有没有办法“挂钩”第一次创建联合身份的时间?

    我有一个 Cognito 身份池 用于对我的前端用户进行身份验证 并在我的应用程序中授予他们某些权限 但是 我在授予这些用户访问 IoT 的权限时遇到了问题 其中涉及调用 Lambda 调用iot addPrincipalPolicy 一旦
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • DynamoDB 并发写入

    我有一个现有的 DynamoDB 表 其属性如下 hk hash key rk range key a1 a2 a3 我有一个现有的 DynamoDb 客户端 它只会更新 a1 的现有记录 我想创建第二个编写器 DDB 客户端 它也将更新现
  • 如何使用 Lambda 访问 AWS API Gateway 请求的 HTTP 标头?

    我看到在API网关常见问题解答 https aws amazon com api gateway faqs 可以访问发送到 API 网关的请求标头 如果您已经使用 OAuth 令牌或任何其他授权 机制 您可以轻松设置API网关而不需要签名A
  • 速率限制请求和 Amazon SQS

    我有一个关于如何减慢 api 请求的问题 对于我点击的特定第三方 API 我可以每 2 秒发出 3 个请求 如果我超过了这个数字 我就会被退回status code 429以及以毫秒为单位的等待时间 这个 api 经常被调用 是我自己的服务
  • AWS:将子域指向不同的弹性beanstalk环境

    使用 Amazon AWS 我有两个 Elastic Beanstalk 环境 一台托管我的 React 客户端 另一台托管客户端的 Node js API I own some domain name com我想使用两个子域 app so
  • 如何使用java sdk创建AWS Elastic Beanstalk环境?

    任何人都可以帮助我或提供任何资源来使用 java 程序创建 Aws Elastic beanstalk 环境并在其中部署我们的应用程序吗 先感谢您 您可以下载 AWS Java SDKhere http aws amazon com sdk
  • 为使用 Carrierwave 上传图像文件的用户提供适当的 s3 权限

    在 Michael Hartl 撰写的 Rails 教程 第 11 章末尾 我通过创建存储桶 使用 IAM 设置用户并授予用户 AmazonS3FullAccess 策略 成功地实现了用户上传到 Amazon S3 服务的功能 允许我网站上
  • 从 aws Glue 脚本调用存储过程

    ETL 作业完成后 在 AWS Glue 脚本中调用存储过程的最佳方式是什么 我正在使用 PySpark 从 S3 获取数据并将其存储在临时表中 在这个过程之后 需要调用一个存储过程 该存储过程将数据从临时表加载到相应的 MDS 表中 如果
  • 如何使用 Route53 从一个顶级域重定向到另一个顶级域

    如果我的术语在这里不太正确 请道歉 我的域 albunack net 在 Route53 上运行良好 我还在 Route 53 控制下拥有域 albunack com 我希望对 albunack com 的任何请求都重定向到 albunac
  • Redshift 提取两个模式之间的字符串 (regexp_substr)

    我正在尝试提取以下文本deviceSerialNumber 发生这种情况直到 或字符串的末尾 数据看起来像 someddata somedataagain deviceSerialNumber device12345 anotherFiel
  • 当超出设定的吞吐量时应该做什么?

    我正在使用适用于 Javascript Node js 的 AWS 开发工具包从 DynamoDB 表中读取数据 自动缩放功能在大部分时间都表现出色 并且消耗的读取容量单位 RCU 在一天中的大部分时间都非常低 然而 有一个在午夜左右执行的
  • AWS Lambda 无法连接到 Parameter Store

    我有一个AWSLambda java 我尝试进行测试以检索存储在 Parameter Store 中的密码 这是我的一段代码 GetParameterRequest parameterRequest new GetParameterRequ
  • Vue 和 Axios + AWS API 网关和 Lambda - CORS + POST 不起作用

    我正在尝试通过 AWS API Gateway 创建一个 API 测试函数 以及一个通过 Axios 的 Vue 应用程序调用的 Lambda 函数 它应该从输入元素发送姓名和电子邮件 每次我收到此错误时 Access to XMLHttp
  • 通过ELB访问AWS EC2实例

    我试图在弹性负载均衡器下设置两个实例 但无法弄清楚应该如何通过负载均衡器访问这些实例 我已经使用安全组设置了实例 以允许从任何地方访问某些端口 我可以使用 公共 DNS publicdns 主机名和端口 PORT 直接访问实例 http p
  • 请求中包含的安全令牌已过期

    我有一个脚本 可以从 Cloudwatch 中提取大量指标以用于我们自己的内部报告 该脚本会迭代特定区域中的所有 EC2 实例 并请求过去 2 周的 5 个 cloudwatch 指标 所有可用的统计数据 每次以 5 分钟为间隔返回 5 天
  • 将 ASP.NET Core 部署到 AWS Elastic Beanstalk,必须包含带有“.runtimeconfig.json”后缀错误的文件

    我尝试使用 Bitbucket 管道将 ASP NET Core dotnet 版本 5 0 部署到 AWS Elastic Beanstalk 但部署步骤会导致错误 实例部署 您的源包有一个 NET Core 应用程序 您必须包含带有 r
  • AWS API Gateway 默认响应和触发器 AWS Lambda

    我一直在尝试使用 AWS API Gateway 和 AWS Lambda 来尝试无服务器架构 一直在浏览博客和 AWS 文档 已尝试过示例 GET POST 但是 我有以下要求 从我的自定义应用程序跟踪用户事件 Events are po
  • 如何验证无效的 CIDR 块?

    我为我的 VPC 保留了以下 CIDR gt 10 0 0 0 22 这告诉我的是 我还有 10 位剩余用于我的主机 ip 或1 024地址 我试图计算range有效地址 因为 Amazon 在创建新的私有子网时要求提供有效的 IPv4 C
  • 如何使用 AWS CLI 获取最近启动的 EC2 实例?

    我当前正在使用以下 CLI 命令来获取实例公共IP地址 and 发射时间对于给定的实例Name标签 myInstanceName aws ec2 describe instances filters Name tag Name Values

随机推荐

  • 保持分支与 master 保持同步

    我有一个远程存储库 我已从该存储库中提取并从中分支 我想让新分支与 master 所做的更改保持同步 我正在考虑下面的工作流程 它是否有意义或者是否有更好的方法来做到这一点 初始分支和结账 git checkout master git p
  • 未定义的偏移量:1

    在我当前的 PHP 脚本中出现此错误 未定义的偏移量 1 我的代码在这里 query SELECT item id username item content FROM updates ORDER BY update time DESC L
  • 有没有办法在Android中使用Paging Library 3.0实现基于光标的分页?

    我正在使用一个 REST API 它使用基于游标的分页来显示一些结果 我想知道我是否可以使用分页库3 0 https developer android com topic libraries architecture paging v3
  • C++17:使用通用可变参数 lambda 包装可调用对象

    我想将任何类型的可调用对象 例如 lambda 透明地包装在另一个可调用对象中以注入附加功能 包装器的类型应与原始可调用对象具有相同的特征 相同的参数类型 相同的返回类型 完美转发传递的参数 在 SFINAE 构造中使用时具有相同的行为 我
  • underscore.js 嵌套模板

    是否有可能以某种方式从下划线模板中获取 DOM 元素并将其用作另一个模板 我的想法是 我的应用程序需要呈现一个包含带有项目和摘要的循环的文档 我偶尔需要重新渲染摘要或几个项目 所以我不能只重新渲染整个文档 但是 我希望应用程序用户能够简单地
  • AWS.IAM 不是构造函数 JavaScript SDK

    我正在使用AWSJavaScript SDK Both var s3 new AWS S3 var dynamodb new AWS DynamoDB 工作正常 当我尝试时 var iam new AWS IAM 我看到 类型错误 AWS
  • Flume的Spool Dir可以在远程机器上吗?

    每当新文件到达特定文件夹时 我就尝试将文件从远程计算机获取到我的 hdfs 我在flume中遇到了spool dir的概念 如果spool dir位于运行flume代理的同一台机器上 那么它工作得很好 有什么方法可以在远程计算机中配置假脱机
  • ORA-01830-插入日期和时间[重复]

    这个问题在这里已经有答案了 我有以下字符串值 15 01 2023 18 03 42 我尝试将其插入到 Oracle 中的日期列中 然而 这会产生可怕的 ORA 01830 错误 insert into my schema my table
  • MKAnnotation Swift

    我不确定如何用 swift 语言注释地图 我不知道如何创建 NSObject 类 以下是我尝试过但无法运行的代码 import Foundation import MapKit class MapPin MKAnnotation var m
  • 如何平滑 MATLAB 中的绘图?

    我在图表上绘制了大约 9000 个点 全分辨率 https i stack imgur com VeIP5 jpg 其实剧情并没有我想象的那么顺利 有什么方法可以将图表平滑到所需的程度吗 或者某种形式的阈值处理 以便我可以有选择地平滑太凹凸
  • VBA 参考库

    我是 VBA 新手 一直在为 Office 编写一个小型宏应用程序 我们有大约 80 个用户 他们的电脑设置基本相同 除了少数用户之外 所有用户都可以访问它 我一直在尝试使用 Web 服务引用来自动访问网页 并且我还将 Microsoft
  • 在 Python 中将 2D 图形转换为圆柱体

    At the moment I have a figure that looks like this 由代码生成 import matplotlib pyplot as plt import numpy as np data np rand
  • 无法初始化 OpenGL 渲染器库

    我正在尝试使用 genymotion 打开虚拟 Android 设备 问题是它无法启动 Genymotion 虚拟设备 错误显示无法初始化 OpenGL 渲染器库 我已经检查了 OpenGL 支持 它的版本是 3 0 现在有什么问题吗 无法
  • 来自 Ajax 源的 DataTables 按数据顺序排序并显示格式化日期

    基本上我想将数据从ajax提取到我的列中 但我希望列中的单元格具有data order它们的属性与 ajax 调用的值并使用 moment js 格式化单元格中的数据 我认为这是使其美观且可订购的最佳方式 我找到了 datetime mom
  • 如何订阅改变DependencyProperty? [复制]

    这个问题在这里已经有答案了 可能的重复 监听依赖属性的变化 https stackoverflow com questions 4764916 listen to changes of dependency property 请原谅我的英语
  • 使用 jersey 客户端将 JSON 响应读取为字符串

    我正在使用 jersey 客户端将文件发布到 REST URI 该 URI 以 JSON 形式返回响应 我的要求是将响应读取为字符串 JSON 以下是将数据发布到 Web 服务的代码段 final ClientResponse client
  • C# UTF8 输出保持编码字符完整

    我有一个非常简单的问题 我似乎无法理解 我有一个正确编码的 UTF8 String 我使用 Json NET 解析为 JObject 摆弄一些值并将其写入命令行 保持编码字符完整 除了保持编码字符完整之外 一切都很好 Code var js
  • Ajax 将“Map”对象传递给 Spring MVC 控制器

    Spring MVC 似乎不知道如何将 javascript 地图 映射到 Java 地图对象 在 Web UI 中 例如 foo jsp
  • Selenium 未填写表单上的密码属性

    我有一个非常简单的硒脚本来尝试调试我遇到的问题 我所做的就是填写用户名 然后填写密码 然后检查我输入的密码是否在密码字段中 我这样做的原因是我无法让它进行一般身份验证 当密码正确时始终会出现 密码不正确问题 表单 html
  • ec2:RunInstances 的最低 IAM 策略

    我正在尝试缩小运行预定义机器映像的最小策略范围 该映像基于两个快照 我只想启动 m1 medium 实例类型 在此基础上并在以下方面的帮助下这一页 http docs aws amazon com AWSEC2 latest APIRefe