我正在尝试使用 Ansible./ec2.py --list --refresh-cache列出我的 AWS EC2 实例。
通过文档,我已经浏览了这个清单:
pip和boto~/.boto文件,包括我从 AWS IAM 用户的访问凭证收到的aws_access_key_id和aws_secret_access_keyec2.py并ec2.ini以相同的路径,并留下两个文件不变./ec2.py --list --refresh-cache*我的政策:
{
"Statement": [
{
"Sid": "Stmt1427001800780",
"Action": "*",
"Effect": "Allow",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我这样做了,并希望能够列出 EC2 实例,通过ec2.py …
我的密码策略配置为允许用户更改他们的密码,但是当我使用“必须更改密码”选项创建新用户时,用户会被告知他们需要“iam:ChangePassword”权限。
当他们尝试使用 CLI 更改它时,他们会收到类似的消息。
知道如何诊断和解决这个问题吗?
是否有默认策略可以提供对AWS 的所有服务的只读访问?是否存在可遵循的权限命名约定(例如"Allow" : "Get*"在 IAM 策略中)以实现此类结果?
我知道 AWS 为每项服务提供只读策略,但考虑到添加新服务的频率,我想知道它们是否提供聚合的“全部读取”策略?
我想使用AWS RDS 命令行工具来创建数据库的快照。my-databasecreate-db-snapshot
我在IAM中创建了一个特殊的备份角色,其策略允许我描述、复制和创建快照。它看起来像这样(我用 x 替换了敏感 ID):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxxxxxxxxxxxxx",
"Effect": "Allow",
"Action": [
"rds:CopyDBSnapshot",
"rds:CreateDBSnapshot",
"rds:DescribeDBSnapshots",
"rds:DescribeEventCategories",
"rds:DescribeEvents"
],
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
配置 CLI 工具并aws configure输入该用户的密钥后,我尝试通过执行以下命令来制作快照:
aws rds create-db-snapshot \
--db-snapshot-identifier "my-database-backup-$(date +%d-%m-%Y-%Hh%Mm)" \
--db-instance-identifier "my-database"
Run Code Online (Sandbox Code Playgroud)
这会导致一条错误消息:
调用 CreateDBSnapshot 操作时发生客户端错误 (AccessDenied):用户:arn:aws:iam::xxxxxxxxxxxxxx:user/automated-tasks 无权对资源执行:rds:CreateDBSnapshot:arn:aws:rds:eu-west -1:xxxxxxxxxxxxxx:快照:我的数据库备份-24-11-2014-11h07m
我认为这很奇怪,因为它表示拒绝访问具有我为参数指定的名称的资源(--db-snapshot-identifier与参数相反)--db-instance-identifier。
如果我有足够的权限来创建应用于实例的快照,那么我本身不应该具有该快照的创建权限吗?
无论如何,我尝试将策略中的资源更改为 RDS 中的所有内容:
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*"
]
Run Code Online (Sandbox Code Playgroud)
我希望这会起作用,因为现在我的角色对我帐户的 RDS ARN 内的所有内容都具有创建快照权限,但事实并非如此。
有谁知道为什么我的命令返回错误?
在我的 AWS 账户中,我们有 3 个不同的应用程序,A、B、C。
我想为 B 团队创建一个 IAM 策略,允许他们创建新的 EC2 实例,但限制它在 B 资源组中进行标记,或者其他一些可以明确将新实例与 B 组关联的约束。那可能吗?
我正在尝试打开 SQS 队列,但收到此错误:
2019-07-09 07:20:31,855 pid 3604 tid 800 ERROR connection <?xml version="1.0
"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Typ
e>Sender</Type><Code>AWS.SimpleQueueService.NonExistentQueue</Code><Message>The
specified queue does not exist or you do not have access to it.</Message><Detail
/></Error><RequestId>fa3bf29c-d5ad-525a-aa55-a70297d241fa</RequestId></ErrorResp
onse>
Run Code Online (Sandbox Code Playgroud)
我已经验证队列名称是正确的。
以下是我授予 IAM 角色的权限:
IE
Run Code Online (Sandbox Code Playgroud)"sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "sqs:SendMessage",
如果我运行以下命令
aws sqs receive-message --queue-url https://sqs.us-west-2.amazonaws.com/12345678/my-queue
Run Code Online (Sandbox Code Playgroud)
它不会抛出任何异常。
在我的代码中,我使用 boto 连接到 SQS 队列
sqs_conn = boto.sqs.connect_to_region(self.region)
LOG.debug("Getting queue for %s" % queue_name)
return sqs_conn.get_queue(queue_name)
Run Code Online (Sandbox Code Playgroud)
我是否错过了连接 SQS 队列的任何权限?
我继承了几个 AWS 环境。我最近一直在对 s3 进行安全审计,发现一些策略的主体包含我不知道的 aws 帐号,我公司中也没有人熟悉它们。所以我想基本上对相关帐户的所有者进行反向查找。我想确定这些政策是否仍然有效或可以删除。
amazon-s3 amazon-web-services amazon-iam managed-service-accounts
在我的 AWS 账户中,我创建了一个用户并使用该AdministratorAccess策略为其授予了完全权限。这是政策的文件:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用该用户登录时,我看不到我的帐单信息。它说我没有权限。
如果我跑步$ aws iam get-user --user-name anthony,我会得到这样的结果
{
"User": {
"Path": "/",
"UserName": "anthony",
"UserId": "E2S4XZIL9NRNSBIDBI5U6",
"Arn": "arn:aws:iam::123456:user/anthony",
"CreateDate": "2015-04-03T01:22:11Z",
"PasswordLastUsed": "2019-04-10T01:38:14Z"
}
}
Run Code Online (Sandbox Code Playgroud)
如果我想获取此登录名的列表role,我该如何做aws iam?