AWS Single Sign-OnでAWSマネジメントコンソールとIBM Cloudポータルをシングルサインオンする
目的
AWS Single Sign-On(以下、AWS SSO)はSAML IdPになることができます。一方、IBM Cloudのポータル、CLI等はIAMのIDプロバイダーとして、IBM IDだけでなくApp IDに対応し、App IDはSAMLのSPになることができます。というわけで、AWS SSOのIdPを使ってIBM CloudのポータルやCLIの認証をしてみます。
利点
デフォルトではIBM CloudのポータルにアクセスするためにIBM IDを取得し、アカウントから招待してもらう必要があります。このマルチクラウド時代に、AWSとIBM Cloudでそれぞれユーザー管理をしなければいけないうのは、ユーザー数が増えてきたら管理者にとってはかなりの負担になります。
また、会社のメールアドレスを使ってIBM IDを取得するという行為が特にエンタープライズな環境では抵抗を受けるケースもあります。
AWS SSOのIdPと連携することで、次のようなメリットがあります。
- ユーザーはIBM IDの登録が不要
- AWS IdPのユーザーでIBM CloudにログインするとIBM Cloudにユーザーが自動登録される
- AWS SSOを使ったアプリケーションとIBM Cloud ConsoleやApp IDを使ったアプリケーションでSSOできる
手順
AWS SSOの初期設定
当然AWSのアカウントが必要です。アカウントに管理者でログインしたらAWS Single Sign-On
サービスを選択します。
初めての場合はAWS SSOを有効にする
をクリックします。
初めての場合はAWS 組織の作成
をクリックします。
3 クラウドアプリケーションへの SSO アクセスの管理
を選択します。
新規アプリケーションの追加
をクリックします。
カスタム SAML 2.0 アプリケーションの追加
を選択します。
表示名
と説明
に任意の値を入力します。
ここで、
-
AWS SSO SAML メタデータファイル
をダウンロードします -
AWS SSO サインイン URL
を控えておきます -
AWS SSO 証明書
をダウンロードします
画面をそのままにしてApp IDの設定画面を開きます。
App IDの初期設定
App IDのインスタンスを用意しておきます。
わかりやすさのためにSAML 2.0連携
以外のIDプロバイダーを無効化し、SAML 2.0連携
の編集をクリックします。
プロバイダ名に任意の値を入力し、SAML メタデータ・ファイルのダウンロード
をクリックします。これはいわゆるSPメタデータです。
画面右側の値を入力します。
項目 | 値 |
---|---|
エンティティーID | 先ほどダウンロードしたAWSのIdPメタデータをテキストエディタで開き、1行目のentityId値を入力 |
サインインURL | 先ほど控えたAWS SSOのサインインURLを入力 |
1次証明書 | 先ほどダウンロードしたAWS SSO証明書の中身を入力 |
保存
をクリックします。
AWS SSOのSPメタデータ取り込みと属性マッピング
再びAWSに戻り、先ほどダウンロードしたSPメタデータをアップロードし変更の保存
をクリックします。
属性マッピング
タブをクリックします。
AWS SSO IdPのアサーションとSP間で属性のマッピングをします。
参考)https://cloud.ibm.com/docs/account?topic=account-idp-integration
最低限下記のマッピングを追加します。
アプリケーションのユーザー属性 | この文字列または AWS SSO のユーザー属性にマッピング | 形式 | 意味 |
---|---|---|---|
Subject | ${user:email} | emailAddress | App IDのユーザープロファイルの識別に使用(必須) |
familyName | ${user:familyName} | basic | IBM Cloudのユーザープロファイルで名前の表示に使用(姓部分) |
givenName | ${user:givenName} | basic | IBM Cloudのユーザープロファイルで名前の表示に使用(名部分) |
name | ${user:preferredUsername} | basic | App IDのユーザープロファイルで名前の表示に使用 |
入力後、変更を保存
をクリックします。
AWS SSOのユーザー追加
AWS SSOを利用できるユーザーを追加します。ユーザー
メニューからユーザーを追加
をクリックします。
必要な情報を入力し、次: グループ
をクリックします。
グループはSSOには不要なので、ユーザーを追加
をクリックします。
ユーザーが追加されました。
メールアドレス宛にインビテーションメールが送信されますので、メールを開きリンクをクリックします。
パスワードを設定し新しいパスワードの設定
をクリックします。
AWSマネジメントコンソールのユーザー権限設定
AWS SSOのユーザーでAWSマネジメントコンソールを利用できるようにします。これで、IBM CloudとAWSでポータルのSSOが実現できるようになります。
ダッシュボードで2 AWSアカウントへの SSO アクセスの管理
をクリックします。
初めての場合はアクセス権限セットがないのでアクセス権限
多分をクリックしアクセス権限セットを作成
をクリックします。
必要に応じてどちらかを選択します。今回は既存の職務機能ポリシーを使用
を選択して次: 詳細
をクリックします。
今回はとりあえずPowerUserAccess
を選択し次: タグ
をクリックします。
今回は何もせず次: 確認
をクリックします。
確認し作成
をクリックします。
アクセス権限セットが作成されました。
AWS組織
タブをクリックし、アカウントを選択してユーザーの割り当て
をクリックします。
ユーザーを選択して次: アクセス権限セット
をクリックします。
アクセス権限セットを選択し完了
をクリックします。
少し待つと完了します。
AWS SSO側の設定はこれで完了です。
App IDの接続テスト
SAML 2.0連携画面でテスト
をクリックします。
設定がうまくいっていればAWSのサインイン画面が表示されるので、先ほど登録したAWS SSOのユーザー名を入力して次の
をクリックします。
先ほど設定したパスワードを入力しサインイン
を選択します。
設定がうまくいっていればGood job, It works
と表示されます。
ユーザープロファイルを確認します。初回ログイン時にプロファイルが自動登録されます。
これでApp ID側の作業は完了です。
IBM CloudポータルのIDプロバイダー設定
IAMのIDプロバイダーを設定します。過去記事「App IDのユーザーでIBM Cloudのポータルを利用する」を参照ください。ここでApp IDとの連携とSSOログイン用のIdP URLを生成します。
IBM CloudポータルへのSSOログイン
設定が終わったら、IdP URLをブラウザで開きます。ブラウザにAWS SSOの認証情報が残っていればIBM Cloud Consoleのダッシュボードが表示されます。残っていなければAWS SSOのサインイン画面が表示されます。
IBM Cloudのダッシュボードが表示されました。
IAMを確認するとAWS SSOのユーザーが登録されていることがわかります。
うまくSAML連携することができました。
AWSマネジメントコンソールへのSSOログイン
AWS SSOユーザーは通常のマネジメントコンソールへのログイン画面は使いません。かわりにユーザーポータルを使用します。
ユーザーポータルでAWS Account
を選択し、Management console
をクリックします。
ちなみにIBM Cloud App IDが見えていますがここをクリックしてもエラーになります。なぜなら、IBM Cloudとの連携はSP Initiatedのため、IdPであるAWS SSOからここをクリックしても行先がないからです。
無事、マネジメントコンソールが表示されました。
これで、AWSとIBM Cloud両方にSSOできるようになりました。
考慮点
ユーザーの権限設定
AWS SSOでサインインしたユーザーはIBM Cloudに対して何の権限も持っていませんので、管理者が別途必要な権限を付与するか、アクセスグループの動的ルール機能を使って自動付与することもできます。
しかしこの方法だと、IdPはAWS SSOなのに、App IDでユーザーにカスタム属性を付与することになり、少々面倒です。AWS SSOで属性を設定しそれをIBM Cloudに渡すことができないか、別途調査してみます。
CLIの利用
CLIを利用する場合はユーザー・パスワード方式ではなくSSO方式になります。
$ ibmcloud login -u teruq@******.jp --sso
API エンドポイント: https://cloud.ibm.com
リージョン: jp-tok
Get a one-time code from https://identity-1.ap-north.iam.cloud.ibm.com/identity/passcode to proceed.
デフォルトのブラウザーで URL を開きますか? [Y/n] > y
One-time code >
このとき表示されるURLは残念ながらIBM IDによるログイン画面になってしまい、AWS SSOユーザーの認証をすることができません。これは次の手順を踏むことで回避できました。
- ブラウザでIBM CloudのIdP URLからAWS SSOを使って認証しておく
- CLIのログインコマンド(--sso)を打ち、表示されたURLを同じブラウザのURL欄にコピー&ペーストして開く
- ワンタイムパスワードが発行される
AWS SSOのログアウト
AWS SSOを使ってログインするとおそらくはCookieが残り、ブラウザを閉じて開きなおしてもログイン状態が維持されます。IBM Cloud ConsoleでログアウトしてもAWS SSOには効果ありません。
AWS SSOをログアウトするためには、次の方法が考えられます。まず、IBM Cloud Consoleが開く直前に下記の画面が数秒間表示されますので、その隙に右上のSign out
をクリックします。
もう1つの方法は、AWS SSOのユーザーポータル
を利用します。AWSの設定画面からURLを知ることができます。
このURLにアクセスし、右上のSign out
をクリックすることでログアウトすることができます。
以上です。
Author And Source
この問題について(AWS Single Sign-OnでAWSマネジメントコンソールとIBM Cloudポータルをシングルサインオンする), 我々は、より多くの情報をここで見つけました https://qiita.com/teruq/items/75db3442c73d4bfc36c2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .