我有一个 AWS Elastic Beanstalk Rails 应用程序,我正在通过配置脚本配置它以从 S3 存储桶中提取一些文件。当我启动应用程序时,我不断在日志中收到以下错误(为了安全起见,存储桶名称已更改):
Failed to retrieve https://s3.amazonaws.com/my.bucket/bootstrap.sh: HTTP Error 403 : <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message>
Run Code Online (Sandbox Code Playgroud)
配置文件:
packages:
yum:
git: []
files:
/opt/elasticbeanstalk/hooks/appdeploy/pre/01a_bootstrap.sh:
mode: "00755"
owner: root
group: root
source: https://s3.amazonaws.com/my.bucket/bootstrap.sh
Run Code Online (Sandbox Code Playgroud)
Elastic Beanstalk 环境设置了aws-elasticbeanstalk-ec2-roleIAM 角色作为它的实例角色。此角色具有以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "arn:aws:s3:::my.bucket/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
S3 存储桶具有以下策略:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "Stmt1371012493903",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<account #>:role/aws-elasticbeanstalk-ec2-role"
}, …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-ec2 amazon-web-services amazon-iam elastic-beanstalk
目前我有一个共享的 S3 存储桶,它具有对不同实例的特定关键路径(即文件夹)的特定访问权限。我已经能够使用我的新角色创建实例配置文件并测试限制访问该文件夹没有问题。
我的问题是,存在具有定义策略的现有通用角色,我还希望能够将其包含在每个堆栈的新角色中。
在 cloudformation 中,是否可以将在一个角色中定义的策略包含在另一个角色中,而无需在新角色中重新定义策略文档?
类似于以下内容:
"AppTierS3AccessRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [ "ec2.amazonaws.com" ]
},
"Action": [ "sts:AssumeRole" ]
}
]
},
"Path": "/",
"Policies": [ { "Ref": "existing-policy" } ]
}
},
Run Code Online (Sandbox Code Playgroud)
“现有政策”是这里的重要组成部分。我试图找到现有政策的 arn 来尝试参考它,但我有点卡住了。
我在 EC2 实例上安装了卷,我想为其制作快照。
我使用以下策略创建了一个新的 IAM 用户:
{
"Statement": [
{
"Sid": "...",
"Effect": "Allow",
"Action": [
"ec2:CreateSnapshot",
"ec2:CreateTags",
"ec2:DeleteSnapshot",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSnapshots",
"ec2:DescribeTags",
"ec2:DescribeVolumeAttribute",
"ec2:DescribeVolumeStatus",
"ec2:DescribeVolumes"
],
"Resource": [
"arn:aws:ec2:eu-west-1:MY_USER_ID"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我已将访问密钥和秘密添加到我的~/.bashrc并获取了它。当我运行时,ec2-describe-snapshots我得到以下响应:Client.UnauthorizedOperation: You are not authorized to perform this operation.
当我"Resource"刚刚的时候,"*"我能够列出所有类型的亚马逊快照。我希望创建该eu-west-1地区只有我自己拥有/可见的快照。
前言:我不是在寻求配置帮助。我的用例已涵盖并且工作正常。这是一个理论问题。
在 AWS 上有一个名为的策略AWSLambdaExecute,其定义如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [ "logs:*" ],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [ "s3:GetObject", "s3:PutObject" ],
"Resource": "arn:aws:s3:::*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这个定义对我说:
这背后的原因是什么?他们为什么要谈论S3?(我的特定 lambda 调用与 S3 无关。)除了每个的单行描述之外,我们是否知道有关预定义策略的任何详细文档?
我在 AWS 论坛上问过这个问题,但没有得到太多关注。我的根本问题是我正在尝试恢复 MS SQL Server RDS 数据库并收到错误消息“数据库备份/恢复选项尚未启用或正在启用。请稍后再试。” 我发现这个线程关于这个问题:
https://forums.aws.amazon.com/message.jspa?messageID=736361
这建议向数据库的选项组添加一个选项。但是,选项组上的“添加选项”按钮被禁用,用于为数据库选择选项组的下拉菜单也被禁用。因此,我无法向选项组添加选项,也无法创建新选项组并进行选择。我了解到您不能向默认选项组添加选项,因此我绝对需要创建一个选项组。我仍然不知道为什么我不能更改现有 RDS 实例的选项组。
所以我做了一个新的选项组,没问题。我制作了一个全新的 RDS 实例,以便我可以选择不同的选项组。在我创建的新选项组中,我可以单击添加选项,但无法成功完成该过程。我创建了一个具有 RDS 完全访问权限的 IAM 角色,当尝试将具有该角色的备份/恢复选项添加到选项组时,我得到了这个:
“IAM 角色 ARN 值无效或不包括以下所需的权限:SQLSERVER_BACKUP_RESTORE(服务:AmazonRDS;状态代码:400;错误代码:InvalidParameterValue;请求 ID:3824d081-648a-11e6-9c94-87e171d2e1f8)”
我对 IAM 了解不多,所以我不确定该怎么做。想法?
更新
我在 AWS 论坛上收到了另一个回复。这是建议和我的结果。
请尝试以下步骤 -
- 从 RDS 控制台的左侧面板中选择选项组
- 选择您创建的选项组,然后单击添加选项按钮
- 在选项下拉列表中选择 SQL_SERVER_BACKUP_RESTORE。
- 单击 IAM 角色下拉列表下的文本创建新角色。这将向您显示 IAM 角色创建选项。
- 为 IAM 角色添加一个名称,选择您要使用的 S3 存储桶,然后为立即应用单选按钮选中是。
- 单击添加选项按钮。
回复
听起来不错!但是在我单击表单底部的添加选项后,该按钮禁用了几秒钟,然后 IAM 角色名称字段被红色包围。我附上了截图。单击感叹号或红色区域不会显示任何其他信息。我尝试了几个不同的名称,结果相同。是否有关于页面未指定名称的规则?再次感谢你的帮助。
我正在创建 20 多个 IAM 用户,我想为他们启用虚拟 MFA 设备。有什么方法可以让我一次性完成所有这些任务,或者有什么方法可以自动执行此任务?我想强制所有 IAM 用户使用 MFA,如果没有设置,他们就无法继续。
在Amazon IAM 管理控制台中,我创建了一个新的 IAM 用户,并为该用户分配了权限和密码。
但是,当通过位于https://console.aws.amazon.com/console/home的 Amazon AWS 登录页面尝试使用该新 IAM 用户登录时,会发生错误:
There was a problem
We can not find an account with that email address
Run Code Online (Sandbox Code Playgroud)
为什么我的 IAM 用户无法成功登录?
我的 IAM 用户收到此错误
User: arn:aws:iam::123456789:user/admin is not authorized to perform:
ecr:CreateRepository on resource: *
Run Code Online (Sandbox Code Playgroud)
当我尝试创建存储库时。
我已经授予AmazonEC2ContainerServiceFullAccess该用户所属的组。我在“附加策略”中搜索存储库,但没有匹配项。如何授予该用户权限?
因此,我的经理几个月前离开了公司,让我自己管理事务,现在,我正在查看云跟踪事件,发现在我们的一个帐户中,我明确拒绝查看它们。
这是一些背景。我们有一个根帐户,从中我们在其他帐户中承担管理员角色,当我在生产帐户中承担管理员角色时,在尝试查看云跟踪事件时收到明确的拒绝错误消息。
我一直在查看所有对他们有“拒绝”效果的政策,但看起来没有任何相关。此外,我假设的管理员角色不链接到除允许所有策略之外的任何策略。然而,我收到了同样的显式拒绝错误消息。
我可以使用任何神奇的工具来理解显式拒绝的来源吗?
我发誓,我已经阅读了我能找到的所有文档,并尝试了所有内容,包括 AWS 策略生成器 UI 和手动编辑策略 JSON,但无论我尝试什么,当我尝试删除任何这些资源时,我都会得到大红色标题与Access denied Insufficient privileges to perform this action. Please consult with the account administrator for necessary permissions.
看来我需要做的就是在策略中显式列出 arn,而不使用通配符,例如:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "backup:DeleteBackupPlan",
"Resource": "arn:aws:backup:<and the rest of the actual arn here>>"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但没有运气。
任何人都可以向我指出文档或描述如何实际删除 AWS 备份保管库、恢复点和备份计划资源吗?我是否缺少一些必需的权限,或者只是做错了?
- 更新 -
经过大量试验和错误后,删除备份还原点奏效了。
我必须前往包含的备份库并编辑资源策略。原来是这样的:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": [
"backup:DeleteBackupVault", …Run Code Online (Sandbox Code Playgroud) amazon-iam ×10
amazon-ec2 ×2
amazon-ecr ×1
amazon-rds ×1
amazon-s3 ×1
backup ×1
permissions ×1