【发布时间】:2016-02-27 06:58:05
【问题描述】:
首先,我的问题与this one 非常相似,但因为我找不到“我也是!”链接,自1月1日以来一直没有答复,我想我会在这里问。如果这样做是错误的,请告诉我。
好的,这是我的问题。我有两个 AWS 账户,我们称它们为 Prod 和 Audit。在 Prod 中,我有许多 EC2 实例,所有实例都已经定义了自己的特定 IAM 角色。在 Audit 中,我有许多 S3 存储桶。
我需要做的是,仅使用 IAM 角色,使用 Prod 账户中的特定 IAM 角色,从特定机器访问审计账户中的 S3 存储桶。
我看到很多关于组策略、资源策略和让 IAM 用户担任角色等的答案,但正如我所说,我在 EC2 实例上使用 IAM 角色,没有组、用户等。
我不想在任何实例的任何地方都拥有凭据,比如 AWS Best Practices。
那么这可能吗?是否有其他安全的方法可以做到这一点,而不涉及用户或凭据?非常感谢任何和所有帮助,谢谢!
注意:
我尝试允许访问 Audit S3 存储桶的 Prod EC2 实例上运行的应用程序是 Logstash。我已经确认在将日志推送到 Prod S3 存储桶时设置有效,而不是审核那些。我也尝试过使用 S3 存储桶策略,但也没有成功。
我添加的 S3 Bucket Policy 如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CrossAccountPolicy",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<Prod Account ID>:root"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::logstash.prod.logs",
"arn:aws:s3:::logstash.prod.logs/*"
]
}
]
}
附加到产品 EC2 实例的 IAM 角色的内联策略:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::<Audit Account ID>:role/ProdLogstashPush"
}
}
附加到审计账户中 IAM 角色的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::logstash.prod.logs/*",
"arn:aws:s3:::logstash.prod.logs"
]
}
]
}
我目前正在试用 fluentd/td-agent,因为我认为它允许 sts:AssumeRole,理论上这将允许此设置工作。
院长
【问题讨论】:
-
是的,正确的做法是投票赞成该问题并添加评论。但你没有这样做的信誉。 :( 所以这是下一个最好的事情。
标签: amazon-web-services amazon-s3 amazon-ec2