首页 文章

使用角色从另一个帐户访问AWS S3存储桶

提问于
浏览
9

首先,我的问题与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 回答

  • 4

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

    Using Roles

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

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

    b . )添加指定Prod帐户的信任策略 .

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

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

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

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

    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托管策略进行调试,但您可能希望最终指定策略中的资源 .

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

相关问题