この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
CloudWatchを利用する際に使用しているIAMの管理ポリシーに関して、AWSから以下のメッセージが届きました。
AWS Managed Policyがお客様のアクションを必要とする変更を行っていることをお知らせします。AWS 管理ポリシーは、管理ポリシー「CloudWatchFullAccess」[1] を廃止し、「CloudWatchFullAccessV2」[2] に置き換えます。2023 年 12 月 7 日以降、「CloudWatchFullAccess」はサポートされなくなります。
"CloudWatchFullAccessV2"に移行する際に、変更されたポリシー内容によっては、監視アプリやlog管理アプリなどに影響が出るかもしれません。
今回の記事では、「CloudWatchFullAccess」と「CloudWatchFullAccessV2」のポリシーの中身の違いを紹介します。
CloudWatchFullAccessV2について調べてみた
■CloudWatchFullAccessの中身
"CloudWatchFullAccess"のJSONドキュメントは以下の通りです。
{
"Version" : "2012-10-17",
"Statement" : [
{
"Effect" : "Allow",
"Action" : [
"autoscaling:Describe*",
"cloudwatch:*",
"logs:*",
"sns:*",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetRole",
"oam:ListSinks"
],
"Resource" : "*"
},
{
"Effect" : "Allow",
"Action" : "iam:CreateServiceLinkedRole",
"Resource" : "arn:aws:iam::*:role/aws-service-role/events.amazonaws.com/AWSServiceRoleForCloudWatchEvents*",
"Condition" : {
"StringLike" : {
"iam:AWSServiceName" : "events.amazonaws.com"
}
}
},
{
"Effect" : "Allow",
"Action" : [
"oam:ListAttachedLinks"
],
"Resource" : "arn:aws:oam:*:*:sink/*"
}
]
}
■CloudWatchFullAccessV2の中身
"CloudWatchFullAccessV2"のJSONドキュメントは以下の通りです。
{
"Version" : "2012-10-17",
"Statement" : [
{
"Sid" : "CloudWatchFullAccessPermissions",
"Effect" : "Allow",
"Action" : [
"application-autoscaling:DescribeScalingPolicies",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribePolicies",
"cloudwatch:*",
"logs:*",
"sns:CreateTopic",
"sns:ListSubscriptions",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"sns:Subscribe",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetRole",
"oam:ListSinks"
],
"Resource" : "*"
},
{
"Sid" : "EventsServicePermissions",
"Effect" : "Allow",
"Action" : "iam:CreateServiceLinkedRole",
"Resource" : "arn:aws:iam::*:role/aws-service-role/events.amazonaws.com/AWSServiceRoleForCloudWatchEvents*",
"Condition" : {
"StringLike" : {
"iam:AWSServiceName" : "events.amazonaws.com"
}
}
},
{
"Sid" : "OAMReadPermissions",
"Effect" : "Allow",
"Action" : [
"oam:ListAttachedLinks"
],
"Resource" : "arn:aws:oam:*:*:sink/*"
}
]
}
■CloudWatchFullAccessとCloudWatchFullAccessV2の違い
ポリシーのドキュメントを確認したところで、違いを見ていきましょう。
●Action
"Action"の部分では、以下が変更されています。
【変更点1】:autoscaling
CloudWatchFullAccessには "autoscaling:Describe*" がありますが、CloudWatchFullAccessV2 ではこれが "autoscaling:DescribeAutoScalingGroups" と "autoscaling:DescribePolicies" に分かれています。
→autoscaling:Describe: このアクションはAuto Scalingに関するすべてのDescribe APIコールを許可します。Describe APIコールは、Auto Scalingリソースに関する情報を取得するためのものです。 の使用は、Describe で始まるすべてのAuto Scalingアクションをカバーするためのワイルドカードとして機能します。
→autoscaling:DescribeAutoScalingGroups: このアクションは、特定のAuto Scalingグループに関する情報を取得するためのものです。
→autoscaling:DescribePolicies: このアクションは、Auto Scalingポリシーに関する情報を取得するためのものです。
【変更点2】:application-autoscaling
CloudWatchFullAccessV2 に追加されているアクション: "application-autoscaling:DescribeScalingPolicies"
→指定された条件に基づいて Application Auto Scaling ポリシーの詳細情報を取得するためのもの
【変更点3】:sns
CloudWatchFullAccess では、全ての SNS アクション("sns:*")が許可されていますが、CloudWatchFullAccessV2 では SNS アクションが以下のものに限定されています。
- "sns:CreateTopic"
- "sns:ListSubscriptions"
- "sns:ListSubscriptionsByTopic"
- "sns:ListTopics"
- "sns:Subscribe"
CloudWatchFullAccessでは許可されていたが CloudWatchFullAccessV2では許可されていないSNSアクションを一部挙げると、以下の通りです。
- Publish: トピックへのメッセージの発行。
- DeleteTopic: トピックの削除。
- Unsubscribe: サブスクリプションの削除。
- SetTopicAttributes: トピックの属性の設定。
- GetTopicAttributes: トピックの属性の取得。
- AddPermission、RemovePermission: トピックの権限の追加・削除。
- ConfirmSubscription: サブスクリプションの確認。
●Statement Identifier (Sid)
つづいて、SIDの部分の違いを見ていきます。
【変更点】
CloudWatchFullAccess にはSidが存在しないのに対して、CloudWatchFullAccessV2 には各ステートメントに識別子 (Sid) があります。
→ポリシードキュメントを読む際に、それぞれのステートメントの目的や行うアクションを迅速に理解することができます。例えば、Sid: "CloudWatchFullAccessPermissions"は、CloudWatchに関連するフルアクセスの権限が含まれていることがわかりますよね。
大きな違いは以上です。
■想定されるアクシデント
上記で示したとおり、いくつかポリシーが変更されています。正確には"最小権限の原則"に則ったポリシーに修正されました。そのため、今までCloudWatchと連携していたツールが急に動かなくなる可能性があります。
とりあえずザっと思いつくアクシデントを考えてみました。
●機能制限
CloudWatchFullAccessからCloudWatchFullAccessV2に移行すると、一部のSNS権限が制限されるため、以前は問題なく実行できていたSNS関連の操作が実行できなくなる可能性があります。
●Auto Scalingの操作制限
CloudWatchFullAccessでは "autoscaling:Describe*" というワイルドカードが許可されていたため、Auto Scalingに関連するさまざまな操作が許可されていました。これが CloudWatchFullAccessV2で具体的なアクションに制限されているので、使用していたAuto Scalingの操作が制限される可能性があります。
●未知の依存関係
アプリケーションやシステムが CloudWatchFullAccessの権限に依存している場合、制限が強化されたCloudWatchFullAccessV2に移行することで、意図しないエラーや問題が発生する可能性があります。
●監視の問題
CloudWatchに関連する特定の機能や設定に依存している監視システムやツールがある場合、権限の変更によりそれらのツールの動作に影響が出る可能性があります。
まとめ:AWS IAM管理ポリシー"CloudWatchFullAccess"と"CloudWatchFullAccessV2"の違いについて調べてみた
CloudWatchは監視や運用において、重要なAWSサービスの一つです。大きなプロジェクトではCloudWatch単体ではなく、さまざまなツールと併用して監視・運用を行っているかもしれません。
監視体制を止めずに移行するには、テスト環境での確認や段階的な展開が必要かと思います。
参考リンク:AWS公式ドキュメント
↓ほかの協栄情報メンバーもCloudWatchに関する記事を公開しています。ぜひ参考にしてみてください。
■Linux用のCloudWatch エージェント設定ファイルを手動で作成してみた(小林 剛)
https://cloud5.jp/cloudwatchagent-configuration-linux/
■EC2(Amazon Linux)のCloudWatch Agent メトリクス/ログ管理設定(INAMURA)
https://cloud5.jp/ec2-cloudwatchagent-settings/
■CloudWatch + CloudWatch AgentでEC2インスタンスを監視・メトリクスの閾値を超えたらSNSで通知を送付(丁 冠宇)
https://cloud5.jp/cloudwatch-cloudwatch-agent-ding-note/
■CloudWatchログで収集しているログを別アカウントに送信する方法(齊藤弘樹)
https://cloud5.jp/saitou-cloudwatchlogs-sent-others/