Amazon Managed Grafana(AMG)のワークスペースに管理者ユーザー/一般ユーザーがSAML(Auth0)でアクセスできるようにしてみた

2022.12.20

こんにちは、CX事業本部 IoT事業部の若槻です。

最近AWS IoT SiteWiseやIoT TwinMakerを触る機会が多いのですが、それらのデータの可視化方法としてはAmazon Managed Grafana(AMG)があります。

今回は、Amazon Managed Grafana(AMG)のワークスペースに管理者ユーザー/一般ユーザーがSAML(Auth0)でアクセスできるようにしてみました。

やってみた

Amazon Managed Grafana(AMG)を今回初めて一から設定しようとして知ったのですが、AMGのワークスペースにアクセスするためには認証方式として「AWS IAM Identity Center」または「SAML」のいずれか(または両方)を設定する必要があります。「AWS IAM Identity Center」はAWS Organizationを設定する必要があり検証環境では利用が難しかったためSAMLを設定することとしました。

SAML連携するIdPには、すでに検証テナントを開設していたAuth0を使用することとしました。またSAML連携の設定には下記エントリを大いに参考にさせて頂きました。

AMGワークスペースの作成

Amazon Managed Grafanaマネジメントコンソールにアクセスし、ワークスペースを作成します。

ワークスペース名を指定。

[Authentication access]はSecurity Assertion Markup Language (SAML)にチェック、[Permission type]はService managedを選択して次へ。

ここは今回は何も指定せず次へ。

設定のReviewをして作成を完了させます。

ワークスペースが作成されたら、[Security Assertion Markup Language (SAML)]で[Complete setup]をクリック。

ここでSAMLの設定を行います。

[Step 1: Configure your IdP]で、Service provider identifier (Entity ID)およびService provider reply URL (Assertion consumer service URL)を確認します。次の手順で使用します。

この画面には後で戻ってくるので開いたままにしておきます。

Auth0とのSAML連携

Auth0マネジメントダッシュボードにアクセスして、IdPとなるアプリケーションを作成します。

アプリ名を指定し、Regular Web Applicationsを選択して作成。

作成したアプリの[Addons]で[SAML2 WEB APP]をクリック。

[Usage]タブで[Download]をクリックしてIdentity Provider Metadataをダウンロードします。

[Application Callback URL]に先程確認したService provider reply URL (Assertion consumer service URL)を指定します。

また[Settings]は次のJsonを指定します。

{
    "audience": "<Service provider identifier (Entity ID)>",
    "destination": "<Service provider reply URL (Assertion consumer service URL)>",
    "mappings": {
        "email": "email",
        "nickname": "nickname"
    },
    "createUpnClaim": false,
    "passthroughClaimsWithNoMapping": false,
    "mapUnknownClaimsAsIs": false
}

[Enable]をクリックしてSAML2 Web Appを有効化します。

アプリケーションのSAMLを有効化できました。

AMGのSML設定画面に戻ります。

[Step 2: Import the metadata]で[Upload or copy/paste]を選択して、[.xml file supported]をクリックし先程ダウンロードしたXMLファイルをアップロードします。

アップロードできました。

またその下部のStep3で次の項目を指定して、設定を保存します。

  • Assertion attribute role:email
  • Admin role values:AGMワークスペースの管理者としたいユーザーのメールアドレス
  • Assertion attribute name:nickname
  • Assertion attribute email:email
  • Assertion attribute login:email
  • Login validity duration (in minutes):ログイン有効期限(分)

管理者ユーザーでアクセスしてみる

前節で[Admin role values]に指定したメールアドレスで管理者ユーザーをAuth0に作成します。

AGMのコンソールに戻り、Grafana workspace URLを開きます。

AGNのサインイン画面が開きます。[Sign in with SAML]をクリック。

Auth0に作成したAuth0ユーザーでサインインします。

AGMのワークスペースにアクセスできました。

ダッシュボードを作成できるようになっています。

AWSの各種データソースに接続できるようになっています。

ユーザーのアクセス権を制御できるようになっています。

管理者ユーザーであれば各種管理操作ができることが確認できました。

一般ユーザーでアクセスしてみる

管理者でないメールアドレスで一般ユーザーをAuth0に作成します。

一般ユーザーでアクセスすると、使用できるメニューが制限されていますね。

ハマった箇所

SAML設定をした直後にワークスペースにアクセスしようとしたら、サインイン成功後に次のようなcorresponding relay state is not foundという画面にリダイレクトされていまいました。

SAML設定を見直したりしたのですが原因が分からず、少し時間を置いてから再度サインインをしたら再現しなくなり、正常にダッシュボードにリダイレクトされるようになりました。

SAML設定をした直後だったからでしょうか。少しハマりました。

おわりに

Amazon Managed Grafana(AMG)のワークスペースに管理者ユーザー/一般ユーザーがSAML(Auth0)でアクセスできるようにしてみました。

当初はデータソースに接続してデータ可視化などをしようとしたのですが、その手前の準備に思いのほか時間を費やしてしまいました。

次回以降はSiteWiseやTwinMakerの可視化をしてみたいと思います。

以上