AWSマネジメントコンソールへのSAML SSOを試してみたかったので、手元にあったOpenAMとSSOをIdPとして利用してSSOしてみました。
目次
SAMLメタデータインポート
SSOテスト用ユーザ作成
AWS IAMとOpenAMに今回利用するユーザとして「samluser」ユーザを作成します。
AWSにIAMユーザ作成
特に設定無しです。パスワードも無効化でもOKです。
OpenAMにユーザ作成
こちらも現時点では特に設定無しです。後で少し設定修正します。
AWSにSAML SSO用ロール作成
AWSにSSOするためのロールを作成します。名前は任意ですが、今回は「MySAMLRole」とします。
ロールタイプとして、「IDプロバイダアクセス用のロール」>「SAMLプロバイダへのウェブシングルサインオン(WebSSO)アクセスを付与」を選択します。
ドロップダウンリストより先ほど登録したOpenAMのIDプロバイダを選択します。
ロールの内容が表示されます。
ロールにポリシーをアタッチします。今回は「ReadOnlyAccess」をアタッチしました。
設定の確認が表示されるので、ロールを作成します。
ロールが作成されたらロールの中を確認します。
ロールのARNの値をメモしておきます。
画面下側にある信頼されたエンティティの値もメモしておきます。
以下のようになると思います。作成したIDプロバイダの名前や、ロールの名前が含まれています。12桁の番号はAWSアカウントIDです。
ロールの ARN | arn:aws:iam::012345678912:role/MySAMLRole |
---|---|
信頼されたエンティティ | arn:aws:iam::012345678912:saml-provider/MyOpenAM |
この「ロールのARN」と「信頼されたエンティティ」の情報を使って特定のアカウントとSAML認証が紐付けられます。
OpenAMユーザにカスタム属性追加
「ロールのARN」と「信頼されたエンティティ」は以下のように「,」で組み合わせて使います。この属性をOpenAMのユーザに付与して、SAML連携時に使えるようにします。
arn:aws:iam::012345678912:role/MySAMLRole,arn:aws:iam::012345678912:saml-provider/MyOpenAM
本当はユーザマスタの属性を拡張した方が良いのかもしれませんが、一旦ユーザ属性のEmployee Number(従業員番号)を利用することにします。先ほど作成したSSOテスト用ユーザである「samluser」のEmployee Numberに上記の値を入力します。
OpenAMのSPから「urn:amazon:webservices」の設定を開き、表明処理に以下の設定を追加します。
https://aws.amazon.com/SAML/Attributes/Role=employeeNumber https://aws.amazon.com/SAML/Attributes/RoleSessionName=uid
SSOテストしてみる
IdP-InitiatedでのSSOをしてみます。URLは以下の通りです。
http://[OpenAM FQDN]:[Port]/openam/idpssoinit?metaAlias=/idp&spEntityID=urn:amazon:webservices
OpenAMのログオン画面が表示されますので、OpenAMの「samluser」でログオンします。
AWSマネジメントコンソールにリダイレクトされてSSOできます。ユーザとロールが指定した通りのものになっていることが確認できます。