この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
背景
以前、特定IAMユーザに特定のタグが付与されたCloudWatch Logsのみ参照できること検証したので、今回その手順を整理したいと思います。
構成図(AWS公式より抜粋)
手順
1.IAMポリシーの作成(特定のタグでCloudWatch Logsの参照)
ポリシー:kobayashi-tag-logs-test
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": "logs:DescribeLogGroups",
"Resource": "*"
},
{
"Sid": "Statement2",
"Effect": "Allow",
"Action": [
"logs:DescribeLogStreams",
"logs:GetLogEvents"
],
"Resource": "arn:aws:logs:*:*:log-group:*:*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/System_Id": "${aws:PrincipalTag/System_Id}"
}
}
}
]
}
2.IAMユーザの作成
「1.IAMポリシーの作成」で作成した「ポリシー:kobayashi-tag-logs-test」をIAMユーザ:CPI-KOBAYASHI-TESTにアタッチします。
IAMユーザ:CPI-KOBAYASHI-TEST
ポリシー:kobayashi-tag-logs-test
3.IAMユーザの特定のタグを付与
4.CloudWatchロググループにの特定のタグを付与
5.動作確認
5-1.動作確認(特定タグをつけていないロググループに参照できない)
5-2.動作確認(特定タグをつけているロググループに参照できる)
注意点
なぜ logs:DescribeLogGroups だけステートメントを分けているか疑問に思うかもしれませんが、これは DescribeLogGroups がリソース制限に対応していないためです(参考1)
AWS公式より抜
CloudWatch Logs は、aws:ResourceTag/key-name または aws:TagKeys 条件キーを使用してユーザーが指定したタグをロググループに割り当てることを禁止する IAM ポリシーをサポートしていません。さらに、DescribeLogGroups 条件キーを使用して aws:ResourceTag/key-name アクションへのアクセスを制御することはできません。他の CloudWatch Logs アクションでは、aws:ResourceTag/key-name 条件キーを使用してアクセスを制御できます。
参考
2
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html