こんにちは、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の可視化をしてみたいと思います。
以上