我有一个启用了组织的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当前不支持该设置?
答案 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:*"
]
}
}
}
]
}