是否可以要求为 Amazon Web Services 中的特定/所有 IAM 账户启用多重身份验证 (MFA)?
有密码要求的选项,很清楚如何选择将其添加到自己的帐户,但不清楚是否有选项可以强制用户拥有 MFA。
我们在 eu-west-1 区域运行多项 AWS 服务。不幸的是,我们的很多开发人员和其他需要创建临时资源的员工似乎都忘记了 AWS 的这一方面,并且在启动 EC2 实例、创建 S3 存储桶等之前没有选择该区域。因此,他们经常会在us-east-1 区域,因为这似乎是 AWS 始终使用的默认值。
有没有办法通过 IAM(或其他方式)来限制用户帐户只能在特定区域内启动/创建事物?
我有一个用户的以下 IAM 策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1395161912000",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:*"
],
"Resource": [
"arn:aws:s3:::bucketname"
]
},
{
"Sid": "list",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
目标是让用户将文件上传到存储桶,但不会覆盖或删除。是用来备份的。我从ListBucketand开始PutObject,但*由于它不起作用而添加。甚至*不允许用户上传文件,只是获取Access Denied.
当我尝试模拟器时,它返回Denied - Implicitly denied (no matching statements found).for ListBucket,这看起来很奇怪,因为我已经隐含地允许了。
我试过 Cyberduck 和 3Hub 作为 S3 客户端。
知道出了什么问题吗?
我正在使用“aws ec2 run-instances”命令(来自AWS 命令行界面 (CLI))来启动Amazon EC2实例。我想为我正在启动的 EC2 实例设置IAM 角色。IAM 角色已配置,我可以在从 AWS Web UI 启动实例时成功使用它。但是当我尝试使用该命令和“--iam-instance-profile”选项执行此操作时,它失败了。执行“aws ec2 run-instances help”会显示值的 Arn= 和 Name= 子字段。当我尝试使用“aws iam list-instance-profiles”查找 Arn 时,它给出了以下错误消息:
发生客户端错误 (AccessDenied):用户:arn:aws:sts::xxxxxxxxxxxx:assumed-role/shell/i-15c2766d 无权执行:iam:ListInstanceProfiles on resource: arn:aws:iam::xxxxxxxxxxxx:instance -轮廓/
(其中 xxxxxxxxxxxx 是我的 AWS 12 位帐号)
我通过 Web UI 查找 Arn 字符串,并通过 run-instances 命令上的“--iam-instance-profile Arn=arn:aws:iam::xxxxxxxxxxxxxx:instance-profile/shell”使用它,但失败了:
发生客户端错误 (UnauthorizedOperation):您无权执行此操作。
如果我完全不使用“--iam-instance-profile”选项,实例将启动,但它不会具有我需要的 IAM 角色设置。因此,该权限似乎与使用“--iam-instance-profile”或访问 IAM 数据有关。我重复了几次以防 AWS 故障(它们有时会发生)但没有成功。
我怀疑可能存在一个限制,即不允许具有 IAM 角色的实例启动具有更强大 IAM 角色的实例。但在这种情况下,我正在执行命令的实例具有与我尝试使用的相同的 IAM 角色。命名为“shell”(虽然我也尝试使用另一个,但没有运气)。
是否甚至不允许从实例(通过其 IAM 角色凭证)设置 IAM 角色?
使用 IAM 角色是否需要比启动普通实例更高的 IAM …
我正在尝试设置一个 ECS,但到目前为止我遇到了一些权限问题,我已经在这个论坛上提出了一些问题。
我想我到目前为止被卡住了,因为老实说,我无法在一个地方简明地找出所有这些角色要求。
似乎我需要定义至少两个角色:
1) ECS 容器 http://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html
2) ECS 任务 http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#enable_task_iam_roles
这是正确的吗?
我错过了什么吗?是否有任何特殊的 IAM 要求?
我想以编程方式更改 Amazon Route 53 上托管区域内记录集的 CNAME,但我想限制用户仅访问该记录集。对于我在文档中看到的内容,IAM 允许仅基于“托管区域”或“更改”指定操作。这意味着我的用户需要拥有我所有记录集的权力才能更改单个记录集。
在这种情况下,代码错误的后果不仅仅是灾难性的。如果对托管区域名称的检查错误,无论出于何种原因,我都可以将更改应用于多个记录集(想象一下现在许多记录集指向同一个框/基础设施)。
我的问题不是关于不在代码中出错,而是关于创建一个用户来保护系统免受这种可能性的影响。有一种方法可以限制访问(或解决方法)以允许新的 IAM 用户仅访问一个/一组有限的托管区域。
在 IAM 级别,而非以编程方式。
谢谢你。
我正在尝试授予 IAM 组编辑我们的 EC2 安全组的能力,但如果不授予对 EC2 中所有内容的访问权限,我就无法使其正常工作。
我已经尝试了几个版本:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1392336685000",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用 IAM 用户登录时,我在安全组页面中收到一条消息,提示“您无权执行此操作”。
我确实知道用户/组正在工作,因为如果我为“Amazon EC2 Full Access”选择 IAM 策略模板,则用户可以访问 EC2 中的所有内容。
我显然对 IAM 没有很多经验,任何帮助将不胜感激。
使用 CloudWatch 监控脚本 (mon-put-instance-data.pl),可以指定 IAM 角色名称以提供 AWS 凭证 (--aws-iam-role=VALUE)。
我为此目的创建了一个 IAM 角色(在 AWS 实例上运行 mon-put-instance-data.pl),但是我应该为这个角色提供哪些权限/策略?
感谢您的帮助
我有一个 IAM 角色,附加了以下策略:
{
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
如您所见,已授予完全访问权限。
我使用以下 python 将 IAM 凭证转换为 SMTP 凭证:
#!/usr/bin/env python
from __future__ import print_function
import base64
import hashlib
import hmac
import json
import struct
import urllib2
METADATA_BASE = 'http://169.254.169.254/2012-01-12/meta-data'
def main():
access_key_id, secret_access_key = get_access_creds()
username, password = get_smtp_creds(access_key_id, secret_access_key)
print('SMTP Username: %s' % username)
print('SMTP Password: %s' % password)
def get_access_creds():
url_handle = urllib2.urlopen('%s/iam/security-credentials' %
(METADATA_BASE,))
role_name = url_handle.read()
url_handle.close()
url_handle = urllib2.urlopen('%s/iam/security-credentials/%s' …Run Code Online (Sandbox Code Playgroud) 在普通的 EC2 环境中,使用 IAM 角色和凭证(从实例元数据自动获取)管理对其他 AWS 资源的访问非常简单。使用 CloudFormation 更容易,当您将特定应用程序角色分配给实例时,您可以在其中即时创建角色。
如果我想迁移到 Docker 并进行 M 对 N 部署,其中有 M 台机器和 N 个应用程序在其上运行,我应该如何限制对每个应用程序 AWS 资源的访问?主机上的任何人都可以访问实例元数据,因此我希望每个应用程序都能够查看/修改同一部署环境中每个其他应用程序的数据。
为在此类环境中运行的应用程序容器提供安全凭证的最佳实践是什么?