无法获取aws:PrincipalOrgID与创建订阅过滤器一起使用

时间:2019-07-26 18:43:01

标签: amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs

我有一个启用了组织的AWS账户。我想确保子帐户中的某些日志进入日志帐户中的Kinesis流。这个想法是,将来如果我在“组织”中创建一个新的子帐户,日志应该转到Kinesis。

为此,我已经使用aws logs put-destination命令在我的日志帐户中创建了Kinesis日志目标。我添加了目的地策略。我使用的政策是:

{
    "Version": "2012-10-17",
    "Statement": {
        "Sid": "PutSubscriptionFilter",
        "Effect": "Allow",
        "Principal": {
            "AWS": ["*"]
        },
        "Action": "logs:PutSubscriptionFilter",
        "Resource": "arn:aws:logs:us-east-1:123456789012:destination:mytestLogDestination",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalOrgID": "o-abcde12345"
            }
        }
    }
}

我用来添加目标策略的命令是:

aws logs put-destination-policy \
    --destination-name mytestLogDestination \
    --access-policy file://destination_policy.json

这成功添加了目标策略。我可以通过运行以下命令来确认:aws logs describe-destinations --destination-name-prefix mytestLogDestination。当我尝试使用以下命令在一个会员帐户中创建新的订阅筛选器时,它会出错。我尝试的命令是:

aws logs put-subscription-filter \
    --log-group-name "/aws/lambda/GetOrgIdFunction" \
    --filter-name randomsubscriptionfilter --filter-pattern "" \
    --destination-arn arn:aws:logs:us-east-1:123456789012:destination:mytestLogDestination

错误消息是:

  

调用PutSubscriptionFilter操作时发生错误(AccessDeniedException):具有帐户ID:210987654321的用户无权执行:资源上的logs:PutSubscriptionFilter:arn:aws:logs:us-east-1:123456789012:destination:mytestLogDestination < / p>

当我删除条件并将委托人限制为仅我的帐户(210987654321)时,它可以正常工作。是否可以使该设置正常运行,或者AWS当前不支持该设置?

3 个答案:

答案 0 :(得分:1)

截至2019年8月2日

与AWS Support交谈后,这是CloudWatch Logs的限制,因为它们尚不支持PrincipalOrgID。创建日志目标策略时,我们必须分别添加每个帐户。

暂时将其标记为答案。

答案 1 :(得分:0)

多么烦人,我浪费了很多时间来测试不同的方法来尝试使它运行。很高兴我终于找到了您的答案! 我不认为他们会为您提供有关日期的更多信息(可能支持该日期)?我假设在尝试PrincipleArn时没有条件适用于这些策略,并且遇到了同样的问题。

答案 2 :(得分:0)

我只能让它在相当令人沮丧的aws:SourceArn条件下工作。

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudwatch.amazonaws.com",
        "AWS": "*"
      },
      "Action": [
        "SNS:GetTopicAttributes",
        "SNS:SetTopicAttributes",
        "SNS:AddPermission",
        "SNS:RemovePermission",
        "SNS:DeleteTopic",
        "SNS:Subscribe",
        "SNS:ListSubscriptionsByTopic",
        "SNS:Publish",
        "SNS:Receive"
      ],
      "Resource": "<topic arn>",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:cloudwatch:<region>:<account a>:alarm:*",
            "arn:aws:cloudwatch:<region>:<account b>:alarm:*",
            "arn:aws:cloudwatch:<region>:<account c>:alarm:*"
          ]
        }
      }
    }
  ]
}