首先,我的问题与this one非常相似,但由于自1月1日起我无法回答,我想我会问这里 . 如果这是错误的,请告诉我 .
好的,所以这是我的问题 . 我有两个AWS账户,我们称之为Prod和Audit . 在Prod中,我有许多EC2实例,它们都有自己定义的特定IAM角色 . 在Audit中,我有许多S3存储桶 .
我需要做的是,仅使用IAM角色,在Prod帐户中使用特定的IAM角色从特定计算机访问审计帐户中的S3存储桶 .
我已经看到许多答案谈论组策略,资源策略和让IAM用户担任角色等,但正如我所说,我在EC2实例上使用IAM角色,没有组,用户等 .
我不想在任何实例的任何地方拥有凭证,ala AWS Best Practices .
这可能吗?有没有其他安全的方法来做到这一点,而不涉及用户或凭据?任何和所有的帮助非常感谢,谢谢!
Note:
我试图允许访问Audit S3存储桶的Prod EC2实例上运行的应用程序是Logstash . 我已经确认设置在将日志推送到Prod S3存储桶时工作,而不是审计 . 我也试过使用S3 Bucket Policy也没有成功 .
我添加的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/*"
]
}
]
}
附加到Prod 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"
]
}
]
}
我目前正在尝试流利/ td-agent,因为我认为它允许使用sts:AssumeRole,理论上它允许这种设置工作 .
院长
1 回答
是的,这是可能的 . 我相信您可以使用角色或S3存储桶策略来执行此操作 . 有关参考,请参阅How IAM Roles Differ from Resource-based Policies,它使用类似的S3场景作为示例 .
Using Roles
a . )添加一个策略,授予对S3存储桶的适当读/写访问权限 .
b . )添加指定Prod帐户的信任策略 .
a . )允许您的EC2实例为审计帐户的共享角色调用AssumeRole
b . )允许您的EC2实例写入S3(特定审计存储桶或任何存储桶)
Using S3 Bucket Policy
您还可以通过审核帐户的S3存储桶上的资源策略执行此操作,授予对Prod帐户的访问权限,但不指定Prod帐户中的特定用户 . Granting Cross-Account Permissions to Upload Objects While Ensuring the Bucket Owner Has Full Control有类似示例的示例存储桶策略 . 这种方法的一个优点是您的Prod帐户角色可以直接写入存储桶,而无需先从sts:AssumeRole获取临时凭证 . 有两件事要做:
在审核帐户中,设置S3存储桶策略以允许Prod帐户访问 . 您上面的S3存储桶策略对我来说没问题 .
在Prod帐户中,允许EC2实例配置文件角色写入S3 .
您可以尝试使用AmazonS3FullAccess托管策略进行调试,但您可能希望最终指定策略中的资源 .