はじめに
前回までで自組織に対するIAM Identity Center
でのアクセスについて試してみたため、今回は自組織とは異なる外部AWSアカウントに対してIAM Identity Center
からSAML接続を行う方法について試してみようと思います。
- 【前】IAM Identity Centerを使って複数アカウント管理する。(その2:CLIでのアクセスと管理の委任)
- 【次】IAM Identity Centerを使って複数アカウント管理する。(その4:GHECへのSAML)
IAM Identity CenterからのSAML接続について
IAM Identity Center
はSAML2.0を使用したIDフェデレーションがサポートされているため、SAMLがサポートされている様々なサービスプロバイダとの接続連携が行なえます。
IAM Identity Center
と連携を行うことで、IAM Identity Center
のポータル画面からIAM Identity Center
の認証情報を使用して外部のサービスプロバイダに接続することができます。
IAM Identity Center
も様々なサービスプロバイダがサポートされておりますが、今回は組織外となるAWSアカウントに対してIAM Identity Center
からSAML接続を行ってみようと思います。
接続構成
組織外のAWSアカウントへの接続を試してみようにも、組織外となるAWSアカウントを持っていないため、今回はメンバーアカウントを組織外AWSアカウントとみなし、ルートアカウントからSAML接続してみようと思います。
尚、前回までの記事の設定でルートアカウント、メンバーアカウント共にIAM Identity Center
から接続できるようになっているため、メンバーアカウントはIAM Identity Center
から接続できないよう許可セットを外し、併せて委任設定もルートアカウント側に戻してあります。
また、今回の設定は自組織側となるIAM Identity Center
の設定と外部AWSアカウント側の設定とを交互に設定していくため、自組織側作業は(自組織)、外部AWSアカウント側作業は(外部組織)と表記します。
アプリケーションの追加(自組織)
IAM Identity Center
に外部組織用のアプリケーションを追加するため、「IAM Identity Center」→「アプリケーション割り当て」→「アプリケーション」から「アプリケーションを追加」を選択して設定していきます。
「カスタムアプリケーション」と「事前統合アプリケーション」があるので、「事前統合アプリケーション」から「External AWS Account」を選択して「次」に進みます。
任意のアプリケーションの表示名を指定します。
また、「ステップバイステップの手順を表示」を選択すると、設定手順が表示されるため、設定時に開いておくと良いかと思います。
「IAM Identity Centerメタデータ」の項目より、後ほど外部組織側設定で使用する「IAM Identity Center SAMLメタデータファイル」をダウンロードしておきます。
「アプリケーションのプロパティ」と「アプリケーションメタデータ」は今回の場合、デフォルトで問題ないので、そのまま「送信」を選択します。
「ユーザーを割り当て」を選択して、外部組織にアクセスさせたいユーザ・グループを選択します。
IDプロバイダの追加(外部組織)
外部組織側のアカウントに移り、IAM Identity Center
からの認証を受け付けるIDプロバイダの設定を行っていきます。
「IAM」→「アクセス管理」→「IDプロバイダ」の「プロバイダを追加」より設定を行っていきます。
以下表、図のように設定を行い、「プロバイダを追加」を選択。
項目 | 設定 |
---|---|
プロバイダのタイプ | SAML |
プロバイダ名 | 任意(今回はIdentityCenterSAML) |
メタデータドキュメント | 先程ダウンロードしたメタデータドキュメントを選択 |
以下のように概要画面が表示されるため、後ほどIAM Identity Center
側作業で必要となるARNを控えて「ロールの割り当て」でIDプロバイダと結びつけるIAMロールを作成します。
IAMロールの作成(外部組織)
前手順に引き続き、設定を行っていきます。
「新しいロールを作成」を選択し、「次へ」進みます。
以下表、図のように設定を行い、「次のステップ:アクセス権限」を選択。
項目 | 設定 |
---|---|
信頼されたエンティティの種類を選択 | SAML 2.0 フェデレーション |
SAMLプロバイダー | IdentityCenterSAML(先程作成したIDプロバイダ) |
プログラムによるアクセスとAWSマネジメントコンソールによるアクセスを許可する | |
属性 | SAML:aud |
値 | https://signin.aws.amazon.com/saml |
条件 | なし |
IAM Identity Center
からのアクセス時に適用したいポリシーを選択して「次のステップ:タグ」を選択。
タグ設定は今回は特に設定せず次へ進み、ロール名の指定を行い、「ロールの作成」で作成します。
作成後、IAM Identity Center
側の設定で必要となるIAMロールのARNを控えておきます。
属性マッピングの設定(自組織)
再度、IAM Identity Center
の設定画面に戻り、「IAM Identity Center」→「アプリケーション割り当て」→「アプリケーション」の「設定済み」タブから先程作成したアプリケーション名を選択します。
「アクション」から「属性マッピングを編集」を選択します。
下記の図の1行目と2行目はデフォルトで記載されているため、新たに3行目を追加し、以下のように設定します。
また、以下表2列目のValue値の書式についてはarn:aws:iam::[ACCOUNTID]:saml-provider/[SAMLPROVIDERNAME],arn:aws:iam:: [ACCOUNTID]:role/[ROLENAME]
となり、先程控えたIDプロバイダのARNとIAMロールのARNを結合したものを記載します。
アプリケーションのユーザー属性 | この文字列値またはIAM Identity Centerのユーザー属性にマッピング | 形式 | 備考 |
---|---|---|---|
Subject | ${user:email} | persistent | デフォルトで入力済み |
https://aws.amazon.com/SAML/Attributes/RoleSessionName | ${user:email} | unspecified | デフォルトで入力済み |
https://aws.amazon.com/SAML/Attributes/Role | arn:aws:iam::xxxxxxxxxxxx:saml-provider/IdentityCenterSAML, arn:aws:iam::xxxxxxxxxxxx:role/IdentityCenterSAML-Role |
unspecified | ステップバイステップ手順に書式記載あり |
IAM Identity Centerからのログイン(自組織)
上記までの手順を実施することで、IAM Identity Center
のポータル画面に外部組織へログインするためのアプリケーションが表示されるようになっているため、表示されているアプリケーションを選択することで外部組織のAWSアカウントにログインできるようになります。
おわりに
今回はIAM Identity Center
に外部組織のAWSアカウントに接続するためのアプリケーションを追加し、シングルサインオンで接続できるようにしました。
今回は外部のAWSアカウントの設定を行いましたが、同じように設定を行うことで、他のサービスプロバイダへの接続も行えるようになります。
アプリケーション作成時に表示される「ステップバイステップの手順を表示」と、各サービスプロバイダのマニュアルを見れば、今回と同様にSAMLによるシングルサインオンができるはずなので、認証をIAM Identity Center
にまとめてしまうのも良いかもしれません。
次回はGitHub Enterprise Cloud
に対してIAM Identity Center
からSAMLアクセスを行う方法について試してみようと思います。