非Orgnizations環境のAWSアカウントからSAML認証を使ってAmazon Managed Grafanaをセットアップしてみる

2021.09.24

はじめに

こんにちは。大阪オフィスの林です。

前回下記のエントリにてAmazon Managed Grafanaのセットアップを検証していきました。

前回のエントリでは認証方法のパラメータにAWS SSOを指定し、AWS SSOと統合しながらAmazon Managed Grafanaを利用しました。Amazon Managed Grafanaの認証方法ではAWS SSOの他にSAML認証もサポートしています。Amazon Managed Grafanaのプレビュー期間中は、認証方法がAWS SSOのみだったので、Organizations環境が必須というイメージを持っていましたが、GAまでの間でSAML認証の機能が追加された模様です。これによって非Orgnizations環境のAWSアカウントでもAmazon Managed Grafanaの利用ができますので、ひとつ大きな制約がなくなったといえるのではないでしょうか。
今回のエントリでは非Orgnizations環境のAWSアカウントでAzure ActiveDirectoryをIDプロバイダーとし、SAML認証を使ってAmazon Managed Grafanaを利用するところまでを見ていきたいと思います。
なお執筆時点では、次の外部IDプロバイダーのSAML認証がAmazonManaged Grafanaでテストされているようです。

  • Azure Active Directory
  • CyberArk
  • Okta
  • OneLogin
  • Ping Identity

それぞれのIDプロバイダーでの設定方法は下記を参考にして頂ければと思います。

やってみた

Amazon Managed Grafanaワークスペース作成

Amazon Managed Grafanaのダッシュボードに移動し、「ワークスペースを作成」を選択します。

任意のワークスペース名と説明を入力後、次へを選択します。

SAMLを選択します。また、今回の検証では自動で作成されるIAM Roleを使うため「サービスマネージド」を選択し「次へ」を選択します。独自に作成したIAM Roleを指定する場合は「カスタマーマネージド」を選択してください。

執筆時点ではYour account is not member of an organization.というメッセージ表示されましたが、ドキュメントを読む限り、SAML認証選択時の前提条件にAWS Organizations環境が必須である旨の記載は見当たりませんので、今回の検証ではとりあえずこのまま進めてみます。(結論、このメッセージは無視して問題ありません)

「現在のアカウント」を指定し、任意のデータソースを指定します。検証ではデータソースに「Amazon Cloudwatch」を選択しています。

通知チャンネルは特に設定せず「次へ」を指定します。

設定の内容を確認し「ワークスペースを作成」を選択します。

ワークスペースの作成が始まりますので暫く待ちます。

ステータスが「アクティブ」になったことを確認し、「セットアップを完了にする」を選択します。

「ステップ 1: IDP を設定する」の以下3つのURLは、以降のIDプロバイダー(Azure Active Directory)側の設定で必要になりますのでコピーもしくはブラウザを表示したままとしてください。

  • サービスプロバイダー識別子 (エンティティ ID)
  • サービスプロバイダーの応答 URL (Assertion Consumer Service URL)
  • サービスプロバイダーのログイン URL

IDプロバイダー(Azure Active Directory)側の作業

続いて、IDプロバイダー側の作業を進めていきます。今回の検証ではIDプロバイダーにAzure Active Directoryを使用しますので、Azureの管理画面にログインし「Azure Active Directory」を選択します。

左メニューから「エンタープライズアプリケーション」を選択します。

「新しいアプリケーション」を選択します。

Amazon Managed Grafanaを検索し選択します。

「作成」を選択します。

左メニューから「シングルサインオン」を選択します。

「SAML」を選択します。

「基本的なSAML構成」から「編集」を選択します。

先ほどコピーもしくはブラウザを表示したままとしているAmazon Managed Grafanaワークスペースの情報をコピーしていきます。 識別子サービスプロバイダー識別子 (エンティティ ID)応答 URL (Assertion Consumer Service URL)サービスプロバイダーの応答 URL (Assertion Consumer Service URL)サインオン URLサービスプロバイダーのログイン URLを入力し、「保存」を選択します。

テストが求められますが、またユーザーをアタッチしていないので「いいえ、後でtestします」を選択します。

後程Amazon Managed Grafanaワークスペースの設定で使用するため「SAML署名証明書」から「アプリのフェデレーションメタデータURL」をコピーしておきます。

左メニューから「ユーザーとグループ」を選択し「ユーザーまたはグループの追加」を選択します。予めAzure Active Directoryにはユーザーを作成しておく必要があります。

「選択されていません」のリンクを選択します。

対象のユーザーを選択し「選択」をクリックします。

「割り当て」を選択します。

アプリケーションにユーザーがアタッチされたことを確認します。

Amazon Managed Grafana側の作業に戻る

再びAmazon Managed Grafanaワークスペースの設定に戻り、IDプロバイダー側の設定手順の中でコピーしておいた「アプリのフェデレーションメタデータURL」を「メタデータURL」に張り付けます。

SAML認証の場合、IDプロバイダー側のユーザーに設定されたユーザー属性を指定することでGrafanaに対しての管理者権限を与えることが出来ます。ひとまずSAML連携が正しく出来ていて、正常にログインが出来るかどうかの確認を進めますので、ここでは「アサーション属性ロール」および「管理者ロールの値」には適当な値を入力し「SAML設定を保存」を選択します。本エントリ後半で管理者権限を与えたログインの手順を記載します。

設定が正常に登録され、SAMLのステータスが「有効」であることを確認し、Grafana ワークスペース URLにアクセスします。

ログイン画面が表示されるので「Sign in with SAML」を選択します。

IDプロバイダー側のアプリケーションにアタッチしたユーザーでサインインします。

ログインできました。

管理者権限でAmazon Managed Grafanaにログインする

繰り返しになりますが、SAML認証の場合、IDプロバイダー側のユーザーに設定されたユーザー属性を指定することで、そのユーザー属性を持つユーザーに対して、Grafanaに対しての管理者権限を与えることが出来ます。それでは、検証用にユーザー属性を付与していきます。Azureの設定にて作成したAmazon Managed Grafanaのエンタープライズアプリケーション内の設定から「シングルサインオン」を選択し「ユーザー属性とクレーム」の「編集」を選択します。

「新しいクレームの追加」を選択します。

今回の検証では、名前に「checkmail」として、ソースは「属性」のままで、ソース属性に「user.mail」を指定し、「保存」を選択します。

再びAmazon Managed Grafanaワークスペースの設定に戻り「SAMLの設定」を選択する。

「アサーション属性をマッピングする」にて、アサーション属性ロールに「checkmail」を入力し、管理者ロールの値にユーザーのメールアドレスを指定し「SAML設定を保存」を選択します。この設定を行うことによって、「checkmail」という属性に、指定したメールアドレスを持つユーザーがGrafanaに管理者権限でログインすることが出来るようになります。このあたりの設定は環境や要件に応じて適宜変更してください。

管理者権限でログインできるか確認します。既にGrafanaにログインしている場合は一度ログアウト後、再度同じユーザーでGrafana ワークスペース URLにアクセスします。
左メニューに歯車マークなどのメニューが表示されていれば、管理者権限でログインできています。

まとめ

SAML認証でもAmazon Managed Grafanaを簡単に使い始めることが出来ました。Amazon Managed Grafanaのプレビュー期間中はAWS SSOのみの認証だったようなので、Organizations環境が必須というイメージを持っていましたが、SAML連携に対応してくれたことによって非Organizations環境でもAmazon Managed Grafanaを使えるようになってたという嬉しい機能追加でした。

以上、大阪オフィスの林がお送りしました!