[アップデート] IAM ユーザー不要!Amazon CloudWatch ダッシュボードが共有可能になりました!

IAM ユーザーがなくても CloudWatch ダッシュボードが参照できる!激アツなアップデートです!
2020.09.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本日のアップデートで Amazon CloudWatch のダッシュボードが共有可能になりました。

Cloudwatch ダッシュボードを共有できるメリット

ちょっと使いの IAM ユーザー管理からの開放

CloudWatch ダッシュボードは頻繁に確認するメトリクスや、関連性のあるメトリクスをまとめて表示させておくことで安定運用の確認、および障害時の問題切り分け調査を効率化することが出来ます。

従来、このダッシュボードは CloudWatch コンソールへのアクセス権限がなければ確認することが出来ませんでした。つまり CloudWatch にモニタリングを集約するということは、参照するメンバーすべてに IAM ユーザーまたは IAM ロールなどを払い出し管理する必要がありました。

利用する度合いによっては IAM を払い出すことで運用の手間やリスクが増えることになります。そういった、「ちょっと見れたらえぇねん」というメンバーに IAM ユーザーを払い出すことなく CloudWatch ダッシュボードを参照させることが可能となりました。

広がる CloudWatch のユースケース

今回のアップデートでは、以下 3 つの方法でダッシュボード共有が可能となりました。

  • メールアドレスおよびパスワードで共有メンバーを設定
  • ダッシュボードへのリンクをしる全てのメンバーと共有
  • Amazon Cognito に統合されたシングルサインオン・プロバイダーのメンバーと共有

利害関係者を招待しダッシュボードを共有したり、提供しているサービスの Web ページに埋め込んでシステム情況を公開するなど、あらゆる場面でのユースケースが思い浮かぶ激アツなアップデートですね。

対応リージョン

すべてのリージョンで利用可能です。

料金

共有設定そのものに料金は掛かりませんが、ダッシュボードにより参照される際の通常の API コール料金が掛かります。

必要な権限

ダッシュボードを公開設定するメンバーは以下の IAM 権限が必要です。

{
    "Effect": "Allow",
    "Action": [
        "cognito-idp:*",
        "cognito-identity:*"
    ],
    "Resource": [
        "*"
    ]
}

やってみる

CloudWatch コンソールを開き、[ダッシュボード] から共有したいダッシュボードをクリックし開きます。次に [アクション] - [ダッシュボードの共有] をクリックします。

Share your dashboard publicly

今回はリンクを知るすべてのメンバーとの共有を設定したいので、 Share your dashboard publiclyStart sharing をクリックします。

以下の警告文のとおり、この設定はダッシュボードへのパブリック・アクセスを許可します。機密情報が含まれていないことを確認のうえで共有設定を進めてください。

CloudWatch Logs Insights ウィジェットも共有者に表示する場合は、Enable sharing log widgets にチェックを入れ、共有内容に問題ないことを確認できましたら 確認 と入力し、 [Save and generate shareable link] をクリックします。

共有設定が完了すると、以下のように Dashboard <ダッシュボード名> has been shared successfully. のメッセージが表示されます。今回はパブリック公開していますので、PUBLIC の表示が追加されました。

再度、[アクション] - [ダッシュボードの共有] を開くと共有設定されていることが確認できます。Copy link to clipboard をクリックし共有リンクをコピーします。

共有の確認

先程コピーした共有リンクを別のブラウザで開きます。このブラウザでは AWS コンソールにログインしていませんが、CloudWatch のダッシュボードが参照できていることがわかります。

ちなみにパブリック公開用の共有リンクには、AWS アカウント番号を特定する情報は含まれていませんでした。

2020.09.17 追記
パブリック公開用の共有リンクは Base64 エンコードされているだけでした。よってデコードすることで AWS アカウント番号が確認できます。執筆時点においてダッシュボードのパブリック公開は AWS アカウント番号を公開することになる点を理解したうえでご利用ください。

CloudWatch Logs Insights ウィジェットの制限

このダッシュボードでは CloudWatch Logs Insights ウィジェット を 2 つ載せていますが、仮に Flowlogs2 では機密情報が記載される恐れがあり、この部分だけは共有者への閲覧を制限したいとします。

CloudWatch 管理コンソールに戻り [アクション] - [ダッシュボードの共有] から対象の共有設定内の IAM Role をクリックします。

[アクセス権限] タブを開くとダッシュボード共有用の IAM ポリシーが設定されていますので、[ポリシーの編集] をクリックします。

以下のように対象の CloudWatch ロググループの ARN に Deny 指定し、保存します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetInsightRuleReport",
                "cloudwatch:GetMetricData",
                "cloudwatch:DescribeAlarms",
                "ec2:DescribeTags",
                "logs:FilterLogEvents",
                "logs:StartQuery",
                "logs:StopQuery",
                "logs:GetLogRecord"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "cloudwatch:GetDashboard",
            "Resource": "arn:aws:cloudwatch::123456578901:dashboard/test-share"
        },
        {
            "Effect": "Deny",
            "Action": "*",
            "Resource": [
                "arn:aws:logs:ap-northeast-1:12345678901:log-group:Flowlogs2:*"
            ]
        }
    ]
}

すると、以下のように Flowlogs2 のみを制限することが出来ますので、既存のダッシュボードを共有用にカスタマイズすることなく利用が可能です。

メールアドレスおよびパスワードによる共有

同じダッシュボードを使ってメールアドレスおよびパスワードによる共有設定も確認してみましょう。[アクション] - [ダッシュボードの共有] を開き、 Share your dashboard and require a username and passwordStart sharing をクリックします。

[Add email addresses] に共有するメンバーのメールアドレスを入力します。一度に複数設定することも可能です。指定できましたら [Save and generate shareable link] をクリックします。

現在シェアしているメンバーは以下のように Shared with の項目で確認が可能です。また Edit から追加、削除することも可能です。

招待されたメンバーには以下のようにユーザー名とパスワードのメールが送信されています。なお、CloudWatch へアクセスするためのリンクはメールに含まれていないため、共有設定画面の Copy link to clipboard の内容を別手段で共有する必要があります。

共有リンクを開くと、以下のログイン画面が表示されますのでユーザー名および、パスワードを入力して Sing in をクリックします。ちなみに、メールアドレスおよびパスワードによる共有リンクには AWS アカウント番号が含まれますのでパブリック・アクセス用との違いにご注意ください。

初回アクセス時はパスワードの変更を求められますので、小文字、大文字、記号、数字を含めた 8 文字以上のパスワードを設定し Send をクリックします。

同様にダッシュボードが表示されることが確認できました。先程、パブリック公開で非表示に設定した Flowlogs2 がこちらでは表示されていますが、これは共有設定に使用されている IAM ロール、ポリシーが異なるためです。この用に、共有方法ごとにどのレベルまでアクセスを許可するかコントロールすることが可能です。

簡単ではありますが検証は以上となります。

さいごに

AWS 環境のモニタリングを CloudWatch に集約する場合のデメリットとしては AWS コンソールにアクセスする必要がある、つまり参照するメンバー分の IAM を管理する必要がありました。

今回のアップデートで IAM 権限を持たないユーザーでも CloudWatch ダッシュボードを参照することが可能となりましたので、モニタリングツール一式を CloudWatch に集約するためのハードルが大きく下がったのではないでしょうか!

また Wiki や Web など埋め込み公開するなど、新たな CloudWatch ダッシュボードのユースケースが考えられる、激アツなアップデートですので、ぜひ、ご活用ください!!

以上!大阪オフィスの丸毛(@marumo1981)でした!

参照