1

我有 2 个 AWS 账户。

  • 账户 A:带有来自亚马逊的 awslogs 客户端的 EC2 实例
  • 账户 B:集中登录账户

我想将带有 awslogs 客户端(在账户 A 中)的 EC2 实例的日志从一个账户发送到另一个账户(账户 B)中的 CloudWatch Logs。

通过在账户 B 中创建一个 IAM 用户并在 中设置 AWS 凭证密钥,它可以正常工作awscli.conf,但我不希望密钥被硬编码,所以我试图承担如下角色:

账户 B(CloudWatch 账户)中的 IAM 角色,我创建了一个角色名称CloudWatchCrossRole

内联策略(允许此角色将日志写入 CloudWatch Logs):

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

信任政策:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_A:role/CLoudWatchInstanceProfile"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

在账户 A 中,我启动了一个 EC2 实例,其配置文件CLoudWatchInstanceProfile如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::ACCOUNT_B:role/CloudWatchCrossRole"
        }
    ]
}

不高兴,日志被推送到 ACCOUNT_A 而不是 ACCOUNT_B。谁能给我提示 CloudWatch Logs 上的 AssumeRole 是否可行,或者是否必须创建 IAM 用户并将凭证硬编码在其中awscli.conf

4

1 回答 1

1

这种方法有两个问题。

首先,账户 B 中的角色没有调用任何内容AssumeRole。CloudWatch Logs 代理需要凭证,而不是角色。

其次,账户 A 中的 Instance Profile 无法将权限分配给账户 B。

我也找不到任何文档来显示如何在awscli.conf您提到的文件中插入凭据(您可以显示示例)吗?

几个选项:

  • 在账户 B 中创建一个用户并将生成的访问/密钥提供给 CloudWatch Logs 代理(您似乎已经这样做了,但不喜欢),或者
  • 让一个进程在调用AssumeRole账户 B 中的角色的实例上运行,然后将这些凭证提供给 CloudWatch Logs 代理

如果您订阅了 AWS Support,请打开支持案例以请求指导。

于 2017-04-15T10:52:55.573 回答