AWS IAM Identity Centerを使ってSendGridにSSOログインする
SendGridのSSOログイン機能(Proプランで利用可能)をAWS IAM Identity Center(旧AWS SSO)を使って実現する手順を紹介します。
SendGridのドキュメントにはAzure ADとOktaを使ったSSOの設定方法が記載されていますが、AWS IAM Identity Centerは記載されていなかったので参考になればと思います。
SendGridのドキュメントはこちら。
AWS IAM Identity Centerでアプリケーションを作成
IAM Identity Centerのメニューからアプリケーションを選択して「アプリケーションの追加」をクリックします。
事前定義されたカタログの中にSendGridはないので、アプリケーションタイプに「SAML 2.0」を選択して次へ進みます。
「表示名」に適当にタイトルを入力します(ユーザーに表示される名前)。
その下に各種URLが表示されています。これを次の手順で使います。
あと「IAM Identity Center 証明書」も後で使うのでダウンロードしておきます。
SendGridのSSO設定
ここで一旦別タブでSendGridの管理画面を開いて、Settings > SSO Settingsから設定を行います。
①まず下図のように「Name」に適当な名前をつけます。
②IdP Metadataという欄に先ほどIAM Identity Centerで表示されていたURLを入力します。
「SAML Issuer ID」と「Embed URL」の二つがありますが、どちらも入力するのは
https://portal.sso.REGION.amazonaws.com/saml/assertion/RANDOM_STRING
の形式のURLです(パスの途中に"assertion"が入っているもの)。
「Twilio SendGrid Metadata」のURLはまた後で使います。
③証明書(Certificates)を追加します。
先ほどダウンロードしたIAM Identity Centerの証明書のpemファイルをテキストエディタで開いて、その中身をコピペします。
④設定を保存して一旦SendGrid側の操作は完了です。
IAM Identity Centerの設定(続き)
またIAM Identity Centerに戻り、先ほどのSendGrid MetadataのURLを設定画面下部の「アプリケーションメタデータ」の欄に入力します。2箇所ありますがどちらも同じです。
「送信」ボタンを押して設定を完了します。
作成したアプリケーションの設定画面に戻って、下の図の位置から「属性マッピングを編集」します。
ここでは、SAML SP(=SendGrid)に送信されるSAMLアサーションの属性を指定できます。
以下のように、IAM Identity Centerのユーザー属性として${user:email}
、形式としてemailAddress
を指定します。
SendGridはメールアドレスをユーザー識別子として使い、NameIDの形式としてemailAddress
を指定するようドキュメントに記載されています。
上記のように指定することで、IAM Identity Centerのユーザー属性のメールアドレスがSAMLアサーションに含まれるようになります。
ちなみに、IAM Identity Centerが持っているユーザー属性は以下に記載されています。
「変更の保存」ボタンを押せばAWS側の設定は完了です。
SSO Teammateユーザーの作成
再度SendGridの管理画面に戻り、Settings > TeammatesからSSOユーザーを追加します。
右上の「Add Teammate」ボタンをクリックすると「Add password teammate」と「Add SSO teammate」の2つが表示されますが、ここでは「Add SSO teammate」を選択します。
IAM Identity Centerのユーザーのメールアドレスを入力してSSO Teammateを作成します。途中、アクセス可能な権限セット等も設定できます。
以上で設定は完了です。これでIAM Identity Centerのユーザーはログイン後にSendGridにSSOログインできるようになります 🎉
Discussion