Azure ADを使ってAWS コンソールへSSOする設定を実施してみました。
調べてみると思ったよりも記事がなかったり、Azureのコンソールがアップデートされていたりで、意外と詰まりました。 今回利用しているAzureADのライセンスは、「free」です。
やっていることをMSのトライアルにある以下の構成図の通りです。
AzureAD側の1エンタープライズアプリケーションごとに、1AWS Account(IAM Role)の紐づけをしています。

【参考】
- チュートリアル:Azure Active Directory シングル サインオン (SSO) とアマゾン ウェブ サービス (AWS) の統合 | Microsoft Docs
- How to automate SAML federation to multiple AWS accounts from Microsoft Azure Active Directory | AWS Security Blog
Azure AD シングルサインオン 設定
エンダープライズアプリケーションの追加 [Azure 作業]
1. Azure Portalにログインし、「ホーム > Azure ADのディレクトリ >エンタープライズ アプリケーション - すべてのアプリケーション」画面より、[新しいアプリケーション] をクリック

2. 「ギャラリーから追加する」画面の検索欄に [aws] と入力し、表示された [Amazon Web Services (AWS)]をクリック
※AWS Consoleではないので注意

3. アプリケーションの名称を設定する画面が表示されるので、[名前]を入力し、[追加]をクリック
※ アプリケーションの表示名になるため、複数のAWS アカウントもしくは、IAM RoleをSAML連携する場合は、わかりやすい名称にすること。
アプリケーションがデプロイされるまで少し待ちます。

SAML設定 ①[Azure 作業]
1.アプリケーションのデプロイが完了すると設定画面が表示される。[シングルサインオン] - [SAML] をクリック

2.「基本的な SAML 構成」の [編集ボタン] をクリック
※事前に値が自動入力されていますが、必ずこの作業をする必要があります。

3. 内容は変更せずに、[保存] をクリック
※連携するAWSアカウントが複数ある場合は、awsのURL(https://signin.aws.amazon.com/saml) 以降に [#任意の値 ] を入力します。
https://signin.aws.amazon.com/saml#2

4. 「ユーザー属性とクレーム」の [編集ボタン] をクリック

5. [新しいクレームの追加] をクリックし、以下の3つの値を追加

| Name | ソース属性 | 名前空間 | 必須 / 任意 |
|---|---|---|---|
| RoleSessionName | user.userprincipalname | https://aws.amazon.com/SAML/Attributes | 必須 |
| Role | user.assignedroles | https://aws.amazon.com/SAML/Attributes | 必須 |
| SessionDuration | 「900 秒 (15 分) から43200 秒 (12 時間) の値を指定してください」 | https://aws.amazon.com/SAML/Attributes | 任意 |
※ SessionDuration は、コンソールセッションの有効期限。デフォルトは90秒(15分)
6. 属性が追加されていることを確認

7. 「SAML 署名証明書」-「フェデレーション メタデータ XML」の[ダウンロード] をクリック
ダウンロードしたxmlファイルを保存します。AWS上の作業で利用します。

IAM関連設定 [AWS 作業]
ID プロバイダー設定
1. AWSコンソールにログインし、[IAM] - [Identity Providers]より、[Configure Provider]をクリック

2. ID プロバイターの値を入力し、[Next Step]をクリック
- Provider Type* : SAML
- Provider Name* : <任意の値>
- Metadata Document* : 先ほどAzure portalでダウンロードしたxmlファイルを指定する

3. 「Verify Provider Information 」画面で内容を確認し、[Create] をクリック

IAM Role 設定
- [IAM] - [Roles] より、[Create role]をクリック

2. 「Choose a SAML 2.0 provider」画面にて必要項目を入力し、[Next] をクリック
- SAML provider : <先ほど作成したID プロバイダー>
- [Allow programmatic and AWS Management Console access]を選択

3. SSOした後に付与する権限を選択し、[Next] をクリック

4. 「Review]」画面にて、必要項目を入力し、[Create Role]をクリック

IAM User 設定
1. [IAM] - [Policies] より、[Create policy] をクリック

2. 以下のJSON を入力し、 [Review policy] をクリック
Iam Roleのリストの権限を付与しています。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ListRoles"
],
"Resource": "*"
}
]
}
3. 必要な項目を入力し、[Create Policy] をクリック
- Name : <任意の値>
- Description : <任意の値>

4. [IAM] - [Users] より、[Add User] をクリック

5. 必要な項目を入力し、[Next] をクリック
- User name : <任意の値>
- Access type : Programmatic access 選択

6. 「Set permissions」画面で、[先ほど作成したIAM Policy] を選択し、[Next]をクリック

7. 「Review」 画面で内容を確認し、[Create user] をクリック

8. 「Access key ID」と「Secret access key] の内容をコピーする

SAML設定 ②[Azure 作業]
1. アプリケーション設定画面より、[プロビジョニング] をクリックし、以下の値を入力。最後に [保存] をクリック
- clientsecret : "Access key ID"
- シークレット トークン : "Secret access key"

2. 再度 [プロビジョニング] をクリックし、プロビジョニング状態の [オン] をクリックし、 [保存] をクリック

3. IAM Roleの状態を取得していることを確認する

アプリケーションの紐づけ [Azure 作業]
Azure ADのFree プランでは、ユーザーとの紐づけのみ可能なので、ユーザーと紐づけます。
1. アプリケーション設定画面より、[プロビジョニング] をクリックし、[ユーザーの追加] をクリック

2. 以下の必要な項目を選択し、[割り当て] をクリック
- ユーザー : 割り当てを行うユーザーを選択
- ロールの選択 : AWS側で作成したロール名を選択

3.ユーザーが表示されていることを確認する

動作確認
1. ブラウザで https://myapps.microsoft.com/ にアクセスし、 紐づけしたユーザーでログインする
2. AWSのアイコンが一覧に表示されているので、アイコンをクリック

3. AWSコンソールにログインできることを確認する

以上で設定は完了となります。
最後に
今回はAzure ADのユーザーとAWSアカウントを紐づけましたが、実環境で設定するなら管理を簡略化するために、AzureのSecurity Groupを紐づけると良いです。 そのためには、Azure ADのライセンスをPREMIUM P1以上にする必要があります。
料金 - Active Directory | Microsoft Azure
複数のAWSアカウントやIAM Roleへシングルサインオンする場合は、ライセンスに注意が必要です。FreeやOFFICE 365では、連携できるアプリケーション数は10となっています。それ以上の連携が必要な場合は、PREMIUM P1やPREMIUM P2を利用してください。