Amazon Managed GrafanaにOktaを使ったSAML認証でログインしてみた

検証でとりあえずAmazon Managed Grafanaを使いたい時に
2024.02.28

Amazon Managed GrafanaにOktaを使ったSAML認証でログインしたい

こんにちは、のんピ(@non____97)です。

皆さんはAmazon Managed Grafana(以降AMG)にOktaを使ったSAML認証でログインしたいなと思ったことはありますか? 私はあります。

AMGのワークスペース内にアクセスするために以下のいずれかが必要です。

  • IAM Identity Centerによる認証
  • SAML認証

サクッと検証したいのみであれば、AWSのみで完結するIAM Identity Centerでやりたいところでしょう。しかし、2024/2/28時点でAWS Organizationsが使用できない環境においては、AMGはIAM Identity Centerの認証に使用できません。

そのため、必然的にSAML認証を行う必要があります。

SAML認証のための仕組みを0から作るのは中々手間です。SaaSを使いたいところです。

OktaのDeveloper Editionでは何と期間無制限で無料で使用することが可能です。クレジットカードの登録も不要です。

6.1 Developer Edition Service Provided Free of Charge. The Developer Edition Service is provided free of charge to Customer up to certain limits specified by Okta at developer.okta.com/pricing (for example and without limitation, total number of User logins and features offered). Any usage of the Developer Edition Service in excess of the limits specified by Okta (as measured by Okta based upon the Developer Edition Service log files) is subject to fees as set forth at developer.okta.com/pricing and Section 6.2 below. Okta reserves the right to change its pricing policies for the Developer Edition Service at any time in its sole discretion, including by discontinuing the availability of the Developer Edition Service. Okta will provide Customer with reasonable notice of any such changes.

Developer Terms | Okta Developer

ログイン数などのレートリミットは存在するので気をつける必要がありますが、非常にありがたいですね。

加えて、AMGのドキュメントにはOktaを使ったSAML認証の方法まで紹介されています。

これはやるしかないですね。

やってみた

AMGワークスペースの作成

AMGワークスペースの作成から行います。

ワークスペース名とGrafanaのバージョンを選択します。

ワークスペースの詳細を指定

認証方法はSAMLを指定します。また、GrafanaのCloudWatchプラグインなどを使いたかったので、プラグイン管理を有効にしておきます。

設定を構成

AMGワークスペースにアタッチするIAMロールに追加する権限を指定します。CloudWatchメトリクスを表示させたかったので、CloudWatchを選択しました。

サービスマネージド型のアクセス許可設定

設定内容を確認して、ワークスペースを作成します。

確認と作成

数分でワークスペースの作成は完了します。後続のSAMLの設定をするためにセットアップを完了するをクリックします。

AMGワークスペースの作成確認

この状態で待機します。

Security Assertion Markup Language (SAML)の確認

Oktaの設定

次にOktaの設定です。

既にOkta organizationは作成済みの状態から開始します。Okta Developer Editionの登録がまだの方は以下記事が参考になります。

https://login.okta.com/からOktaのOrganization URLを指定します。

Enter your Okta organization URL

Oktaにサインインします。

Oktaサインイン

Applications-ApplicationsCreate App Integrationをクリックします。

Developer Edition provides a limited number of apps

AMGを検索して選択します。

Browse App Integration Catalog

Add Integrationをクリックします。

Add Integration

適当にアプリケーションのラベルを指定してDoneをクリックします。

Add Amazon Managed Grafana

AMGのApp Integrationが作成できました。

Amazon Managed Grafanaの確認

Sign OnタブからEditをクリックします。

Sign On Edit

AMGワークスペースのワークスペースID(g-xxxxxxxxxxx)とリージョンを入力してSaveをクリックします。

Save Settings

Okta側で設定できました。AMG側でSAMLの設定をする際に必要になるMetadata URLを控えておきます。

Settings saved!

AMGワークスペース側でのSAMLの設定

AMGワークスペース側でのSAMLの設定です。

先ほど控えたMetadata URLを入力します。また、アサーション属性ロールや管理者ロールの値なども入力します。管理者ロールの値はOktaに登録されている管理者としたいユーザーのメールアドレスです。

SAML設定を保存

デフォルトでもOkta上のdisplayNamenameとして認識され、mailemailloginにマッピングされます。

(Optional) If you changed the default attributes in your Okta application, expand Additional settings - optional and then set the new attribute names.

By default, the Okta displayName attribute will be passed to the name attribute and the Okta mail attribute will be passed to both the email and login attributes.

Okta - Amazon Managed Grafana

Oktaのユーザーの属性はPeopleから確認可能です。

People

SAMLの設定が完了すると、以下のような画面になります。

SAML認証設定後のAMG

AMGワークスペースへのログイン

AMGワークスペースへのログインを試してみます。

GrafanaワークスペースURLに記載のリンクをクリックします。

すると、Welcome to Amazon Managed Grafanaと表示されました。Sign in with SAMLをクリックします。

Welcome to Amazon Managed Grafana

すると、ユーザーにはこのアプリケーションが割り当てられていませんと表示されしまいました。

サービスプロバイダーのログイン URLにアクセスしてもユーザーにはこのアプリケーションが割り当てられていません

これは対象のユーザーをOkta上のAMGのApp Integrationにアサインしていないためです。

AMGのApp IntegrationのAssignmentsタブからAssign-Assign to Peoppleをクリックします。

Assign People

アサインしたいユーザーを選択してAssignをクリックします。

Assign Amazon Managed Grafana to People

アサインするユーザーをチェックしてSave and Go Backをクリックします。

Save and Go Back

Assignedとなったことを確認して、Doneをクリックします。

Assigned

アサインされましたね。

アサインされたことを確認

アサインしたユーザーのマイアプリを確認すると、AMGが追加されていました。

マイアプリに追加されていることを確認

再度ログインを試すと、以下のようにログインできました。メニューにAdministrationという項目があるので、管理者権限でログインしていることが分かります。

Profile

ユーザー一覧を確認すると、SAMLで認証した管理者であることが分かります。

Users

参考までにプロファイルは以下のとおりです。

管理者でログインした場合

管理者のアサーション属性ロールの変更

悲管理者の場合はどのように見えるでしょうか。

管理者のアサーション属性ロールを変更して確認します。

試しにmailからtestに変更します。

adminのアサーションロールの変更

この状態でAMGワークスペースからサインアウトし、再度AMGワークスペースにログインすると、以下のようにメニューからAdministrationApssなどが削除されています。アサーション属性で指定した値に基づいて管理者を判断していることが分かります。

adminのアサーションロールの変更後のサインイン結果

Okta上でdisplayNameの設定した場合の挙動

OktaのユーザーでdisplayNameを設定した場合の挙動を確認します。

のんピと設定してみました。

displayNameの変更

AMGワークスペースからサインアウトし、再度AMGワークスペースにログインすると、Nameのんピに変わっていました。

Nameが変更されたことを確認

CloudWatchメトリクスのダッシュボードの作成

CloudWatchメトリクスのダッシュボードを作成してみます。

詳細な手順はGrafana Labsのドキュメントにも記載されています。

AWS Data SourcesからCloudWatchをクリックします。

AWS Data Sources

CloudWatchメトリクスを取得したいリージョンを選択してAdd data sourceをクリックします。

Add data source

データソースが追加されたことを確認します。

データソースの設定が完了したことを確認

データソース横のGo to settingsをクリックすると、データソースの設定画面が表示されます。AMGワークスペースに割り当てているロールではなく、アクセスキーを使用したい場合はこちらで設定します。

Amazon CloudWatch us-east-1

DashboardsタブからAmazon EC2Importをクリックします。

ダッシュボードのインポート

数秒でインポートが完了します。

ダッシュボードのインポート完了

Amazon EC2をクリックすると、ダッシュボードが表示されます。

ダッシュボードの確認

問題なくメトリクスを表示できていますね。

EC2インスタンス以外のメトリクスも表示可能です。UsageのResourceCountを表示してみました。

UsageのResourceCountを表示

注意点としては、GetMetricDataを叩くと、その分課金が発生します。大量のメトリクスを表示したり表示範囲を変更する際は注意しましょう。詳細は以下記事をご覧ください。

試しにGetMetricData APIのCallCountをGrafana上で表示してみました。思ったよりは呼び出していませんでした。

GetMetricData APIのCallCount

検証でとりあえずAmazon Managed Grafanaを使いたい時に

Amazon Managed GrafanaにOktaを使ったSAML認証でログインしてみました。

検証でとりあえずAmazon Managed Grafanaを使いたい時に役立ちそうですね。

Entra ID(旧Azure AD)やAuth0をSAML認証のIdPとしてしている記事もあります。併せてご覧ください。

検証の度にもAMGワークスペースを作成、削除をする場合はAWS CDKを使ってデプロイすると良いでしょう。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!