概要
前回までのOffice365へのSSOログインとは別にOpenAMを利用した、AWS管理コンソールへのSSOログインも実施してみます。
トラストサークル(IdP)の作成
まずはOpenAM側での操作を実施します。
例のごとくトップ画面から「REALMS」-「Realm Overview」を表示します。
そして、画面から「Create SAMLv2 Providers 」を選択します。
次に「Create Hosted Identity Provider」を選択します。
※ここまでの流れは今までと同じですね。
表示された画面の「新しいトラストサークルに追加します」にチェックを入れ、「トラストサークル名」に"aws(名称は任意)"と入力し、「設定」をクリックします。
↓の画面が表示されればOKです。
AWSへのIdP登録
AWS側に信頼関係を結ぶために必要となるIdPのメタデータをダウンロードしてきます。
これも以前実施したOffice365へのSSO時と同じように以下のURLにアクセスしてコピペするか、もしくはcurlなどを使って作業端末のローカルにダウンロードします。
※重要な注意事項としてアップロードする際のファイル形式はXMLですのでご注意を…
http://【OpenAMサーバホスト名】:8080/openam/saml2/jsp/exportmetadata.jsp
次にAWS管理コンソールのIAMを表示してください。
※表示の仕方などは割愛します。
IAMのメニューから「IDプロバイダー」‐「プロバイダの作成」を選択します。
すると↓の画面が表示されるので、設定項目はそれぞれ以下の通り、設定を行います。
・プロバイダーのタイプ:SAML
・プロバイダ名:OpenAM(任意の名称)
・メタデータドキュメント:先ほどダウンロードしたOpenAMのメタデータ
※これは↓のような形でアップロードを実施してください。
プロバイダの検証画面に遷移するので「作成」をクリックします。
検証が完了するとAWS管理コンソール上のプロバイダ一覧に「OpenAM」と表示されます。
※私の場合ですが、画面遷移せず、一回画面を閉じて、もう一度表示したら、プロバイダが表示されるようになりました。
「OpenAM」のプロバイダが表示されるようになればOKです。
SP登録(OpenAM エンティティプロバイダの登録)
Office365の時と同様なのですが、トップ画面から「REALMS」-「Create SAMLv2 Providers」-「Register Remote Service Provider」を選択します。
表示された画面にて、各設定項目を以下の通り、設定します。
・メタデータファイルはどこに存在しますか?:「URL」
・メタデータが配置されているURL:「https://signin.aws.amazon.com/static/saml-metadata.xml」
・トラストサークル
「既存のトラストサークルに追加します」:チェック
「既存のトラストサークル」:aws
上記で示している通り、メタデータはURLからアクセスして取得できるようになっていますが、Curl等でダウンロードしたファイルをアップロードしても良いです。
https://signin.aws.amazon.com/static/saml-metadata.xml
各項目の設定が終わったら「設定」をクリックします。
また、例のごとく、上記のように登録が完了した旨のポップアップが表示されればSPとして登録が完了します。
登録が完了すると↓のような形でトラストサークルに「aws」が表示されるようになります。
また、エンティティプロバイダにも「aws」のURLが表示されるようになります。
IAMロールの作成
SAML認証でログインするユーザー専用のIAMロールを作成します。
AWS管理コンソールにログインしてIAMの画面を表示します。
「ロールの作成」‐「信頼されたエンティティの種類を選択」‐「SAML2.0 フェデレーション」を選択します。
すると設定項目が表示されるので以下の通り、設定を行います。
・SAMLプロバイダー:「OpenAM」
※プログラムによるアクセスのみを許可するなどの設定はポリシーに準じて設定をお願いいたします。
・属性:SAML:aud
※プロバイダーを選択した時点で自動的に入力されます
・値:https://signin.aws.amazon.com/saml
※プロバイダーを選択した時点で自動的に入力されます
・条件:ログイン時の属性値に条件を追加したい場合は値を追加します
次にIAMポリシーの適用になります。
ここではとりあえず「poweruseraccess」をアタッチします。
また「アクセス権限の境界の設定」という項目がありますが、これはIAMのロールをもっと詳細に制御する場合に使用する機能になります。
今回は使用しないため、「アクセス権限の境界を設定せずにroleを作成する」にチェックを入れておきます。
設定が終わったら、「次へ」をクリックします。
ロール名、エンティティ、ポリシーがアタッチされていることを確認して「ロールの作成」をクリックします。
↓のように先ほど作成したロールが表示されていればOKです。
あとは属性のマッピングを設定します。
今回は社員番号属性(employeeNumber)をマッピングして、AWSのロールを取得する設定とします。
エンティティプロバイダの設定(表示の手順は前述しているため割愛)で「urn:amazon:webservices」を選択し、「新しい値」に以下の値を追加します。
追加したら「保存」をクリックします。
https://aws.amazon.com/SAML/Attributes/Role=employeeNumber
↓の画面が表示されればOKです。
ID連携ユーザーの作成(OpenAM)
OpenAMのローカルデータストアにAWS管理コンソールへSSO認証するためのユーザーアカウントを用意します。
トップ画面から「REALMS」-「Data Stores」を選択します。
メニューから「対象」を選択します。
「新規」をクリックして、ユーザーを作成します。
あとで属性値を変更しますが、とりあえずユーザーを作成します。
この時点では任意の名称、パスワードで問題ないです。
ユーザーが追加されたことを確認して、属性値を変更します。
ポイントになるのはここです。
AWSとOpenAMのSAML属性値のマッピングはここで行います。
マッピングする属性値にはルールがあり、以下の形式となっている必要があります。
<AWS IAMロールのARN>,<AWS IDプロバイダーのARN>
例を挙げると下記のような形式になります。
arn:aws:iam::xxxxxxx:role/saml-federation,arn:aws:iam::xxxxxxx:saml-provider/OpenAM
上記の値はAWS管理コンソールからそれぞれ確認することができます。
確認して「,」で結合し、作成した値をOpenAM上のユーザー属性値「社員番号」に設定します。設定できたら「保存」をクリックします。
先ほど作成したユーザーの「employeeNumber」に値が入力されていることを確認します。