使用角色

时间:2015-11-24 17:44:00

标签: amazon-web-services amazon-s3 amazon-ec2

首先,我的问题与this one非常相似,但因为我也无法找到一个"我也是如此!"链接,自1月1日以来一直未得到答复,我想我会问这里。如果这是错误的,请告诉我。

好的,所以这是我的问题。我有两个AWS账户,我们称之为Prod和Audit。在Prod中,我有许多EC2实例,都有自己定义的特定IAM角色。在审计中,我有许多S3存储桶。

我需要做的是,仅使用IAM角色,使用Prod帐户中的特定IAM角色,从特定计算机访问审核帐户中的S3存储桶。

我已经看到很多答案谈论组策略,资源策略和让IAM用户担任角色等,但正如我所说,我在EC2实例上使用IAM角色,没有组,用户等。

我不想在任何实例的任何地方拥有凭据,ala AWS Best Practices

这可能吗?是否有其他安全的方法可以做到这一点,而不涉及用户或凭据?任何和所有的帮助非常感谢,谢谢!

注意:

我试图允许访问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 个答案:

答案 0 :(得分:4)

是的,这是可能的。我相信您可以使用角色或S3存储桶策略来执行此操作。有关参考,请参阅How IAM Roles Differ from Resource-based Policies,其中使用类似的S3场景作为示例。

使用角色

  1. 在审核帐户中,设置跨帐户角色

    a。)添加一个策略,授予对S3存储桶的适当读/写访问权限。

    b。)添加指定Prod帐户的信任政策。

  2. 在Prod帐户中,创建或修改您的EC2角色(实例配置文件)

    a。)允许您的EC2实例为审计帐户的共享角色调用AssumeRole

    b。)允许您的EC2实例写入S3(特定审计存储桶或任何存储桶)

  3. 在您的应用程序中,调用sts:AssumeRole获取临时凭据以写入审计帐户的S3存储桶。各种AWS开发工具包都有相当简单但略有不同的方式来从角色创建新的临时凭证。

  4. 使用S3 Bucket政策

    您还可以通过审核帐户的S3存储桶上的资源政策执行此操作,授予对Prod帐户的访问权限,但不指定Prod帐户中的特定用户。 Granting Cross-Account Permissions to Upload Objects While Ensuring the Bucket Owner Has Full Control  有一个类似示例的示例存储桶策略。这种方法的一个优点是您的Prod帐户角色可以直接写入存储桶,而无需先从sts:AssumeRole获取临时凭证。有两件事要做:

    1. 在审核帐户中,设置S3存储桶策略以允许Prod帐户访问。上面的S3存储桶策略对我来说没问题。

    2. 在Prod帐户中,允许EC2实例配置文件角色写入S3。

    3. 您可以尝试使用AmazonS3FullAccess托管策略进行调试,但最终可能需要指定策略中的资源。

      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "*"
          }
        ]
      }