はじめに
こんにちは!三宅です!
最近、データを可視化するために、Amazon Managed Grafana を初めて触りました! コンソールから「ワークスペースを作成」ボタンを押し、設定を行おうとしたのですが、以下のようなエラーが発生しました。
※ 認証方法に、IAM Identity Center を選択しました。
ユーザーがこのアプリケーションに対してマルチアカウントアクセスできるようにするには、AWS IAM Identity Center(AWS Single Sign-On の後継)でこのアプリケーションを有効にする必要があります。そのためには、以下の設定タスクを完了する必要があります。
AWS Organizations で IAM Identity Center を使用できるようにするには、組織の管理アカウントで IAM Identity Center コンソールにサインインしている必要があります。 詳細はこちら
要するに、認証方法に IAM Identity Center を指定した場合は、AWS Organizations の管理アカウントで IAM Identity Center を有効化する必要があるということのようです。
AWS Organizations の管理アカウントで IAM Identity Center を有効化し、管理アカウント内の Grafana へシングルサインオン(SSO)する構成は、なんとなくイメージが湧きます。
しかし、実運用では、分析環境などをメンバーアカウントに構築するケースも多いはずです。そこで、こんな疑問が湧きました。
「管理アカウントの IAM Identity Center を認証基盤として、メンバーアカウントに作った Grafana にも SSO できるのだろうか?」
上記の疑問を解決するため検証しました。
- はじめに
- Amazon Managed Grafana とは?
- 管理アカウントとメンバーアカウントの違い
- Amazon Managed Grafana の認証方法について
- 検証
- Amazon Managed Grafana の料金について
- まとめ
Amazon Managed Grafana とは?
参考:Grafana ダッシュボード - Amazon Managed Service for Grafana - AWS
- Amazon Managed Grafana は、オープンソースの Grafana をベースにしたフルマネージドサービスで、運用データを簡単に可視化し、大規模に分析できるサービスです。
- Amazon CloudWatch、Amazon OpenSearch Service、AWS X-Ray、AWS IoT SiteWise、Amazon Timestream、Amazon Managed Service for Prometheus など、運用データを収集する AWS データソースと統合されており、簡単に可視化可能です。
- また、Amazon Athena と連携させることで、S3 に保存されている大量のデータを分析し、その結果をダッシュボードに表示することも可能です。
管理アカウントとメンバーアカウントの違い
- AWS には、AWS Organizations という機能があります。
- AWS Organizationsは、マルチアカウント運用における「統制・効率・安全性」を一気に高める仕組みで、複数のAWSアカウントを1つの管理コンソールから横断的に操作・監視・管理できます。
このAWS Organizationsを利用する際、アカウントは主に2つの役割に分かれます。
管理アカウント
- 組織に1つだけ存在する特別なアカウント。
- メンバーアカウントの作成、招待、削除を行う。
- 組織全体の請求を一括で管理する。
- 組織内の全アカウントに適用するセキュリティポリシー(SCP)などを設定する。
メンバーアカウント
- 管理アカウントによって管理される、複数存在するアカウント。
- 開発環境、本番環境、分析環境など、目的ごとにアカウントを分離して利用するのが一般的
Amazon Managed Grafana の認証方法について
Amazon Managed Grafana の認証方法には、主に以下の2つがあります。
- AWS IAM Identity Center
- SAML (Security Assertion Markup Language)
今回は、AWS IAM Identity Center を利用します。
IAM Identity Center を利用する上で最も重要なのが、「どの AWS アカウントで有効化するか」です。
実は、IAM Identity Center には2種類のインスタンスが存在します。
参考:IAM アイデンティティセンターの組織インスタンスとアカウントインスタンス - AWS IAM Identity Center
組織インスタンス
- 設定場所:AWS Organizations の管理アカウント
- 特徴: 組織内のすべてのメンバーアカウントへのアクセスを一元管理できる。IAM Identity Center のすべての機能をサポート。
アカウントインスタンス
- 設定場所:メンバーアカウント
- 特徴: 設定した単一のアカウント内だけで機能する。ユーザーや権限も独立しており、他のアカウントに影響を与えない。
具体的に、どのパターンなら Grafana へ SSO できるのかを表にまとめました。
管理アカウントでの有効化 (組織インスタンス) | メンバーアカウントでの有効化 (アカウントインスタンス) | メンバーアカウントの Grafana へ SSO できるか? |
---|---|---|
〇(有効) | -(設定不要) | 〇 |
×(無効) | 〇(有効) | × |
検証
前提
- 管理アカウントで、AWS Organizations が有効化されていること
- 管理アカウントで IAM Identity Center が有効化されていること
管理アカウントで、IAM Identity Center にユーザー登録
まずは、管理アカウントの IAM Identity Center にユーザーを追加します。
- 管理アカウントにログインします。
- [IAM Identity Center > ユーザー]から、ユーザーの追加を行います。
- 次に、[IAM Identity Center > グループ]から、グループの作成を行います。
- 先ほど作成したユーザーをグループに追加します。
メンバーアカウントの作成
- [AWS Organizations > AWSアカウント]から、AWS アカウントを作成します。
- 管理アカウントから、作成したメンバーアカウントへスイッチロールします。
- メンバーアカウントで、IAM ユーザーを作成します。
Grafana の作成
メンバーアカウントで作成した IAM ユーザーを利用して、メンバーアカウントにログインします。
ワークスペース作成
- [Amazon Grafana > Workspaces > 新しいワークスペースを作成する]から、ワークスペースを作成します。
- 今回は、東京リージョンでワークスペースを作成しました。
- ちなみに、管理アカウントの IAM Identity Center が違うリージョン(例: バージニア北部)で有効化されている場合でも、問題なく動作しました。
認証アクセスの設定
- 管理アカウントで、IAM Identity Center が有効になっていれば IAM Identity Center が「有効」扱いになります。
- 最初は、ここでエラーが発生していたのですが、無事に有効になっています!
- ワークスペース > 認証 から Grafana ユーザーを割り当てができます。
- ここで表示されるユーザーは、管理アカウントの「IAM Identity Center」で登録されているユーザーになります。
- Grafana には、「管理者」、「編集者」、「閲覧者」の3つの権限レベルがあります。
- 今回は、ユーザーの権限に「管理者」を割り当てます。
- 実際にログインしてみます!
- ログインは、IAM Identity Center で登録したユーザー名を指定します。
- ログインが成功すると、MFA デバイスの登録画面が表示されます。
Amazon Managed Grafanaを表示することができました!
Amazon Managed Grafana の料金について
ワークスペースにユーザーを招待し、管理者や編集者として割り当てただけでは、料金は一切発生しません。 ワークスペースにログイン、または Grafana API を1回以上実行すると月額の料金が発生します。
Amazon Managed Grafana なら、前払い料金も、必要な最低利用料金も、長期契約も必要ありません。ワークスペースごとのアクティブユーザーライセンスに基づいて、使用した分のみお支払いいただきます。その月に使用した分のみ、月末にお支払いいただきます。「アクティブユーザー」は毎月の請求サイクル中に Amazon Managed Grafana ワークスペースにログインしたか、API リクエストを少なくとも 1 回実行したユーザーです。
まとめ
- 今回は、「管理アカウントのIAM Identity Centerを認証基盤として、メンバーアカウントに作ったGrafanaにもSSOできるのか?」という疑問を解消すべく、検証を行いました。
- 結果として、この構成は問題なく実現可能であり、マルチアカウント環境におけるID管理の一元化に非常に有効そうです。
- IAM Identity Centerは、必ず管理アカウントで有効化し、組織全体を管理できる「組織インスタンス」として構成する必要があります。メンバーアカウントで個別に有効化した「アカウントインスタンス」では、今回の目的は達成できません。