
Microsoft Entra ID から Amazon Quick に SAML SSO ログインする手順
こんにちは、こーへいです。
Amazon Quick を組織で導入する際、ユーザーに個別の AWS アカウントを発行せず、既存の ID 基盤でログインさせたいケースは多いと思います。本記事では Microsoft Entra ID(旧 Azure AD)を使って Quick に SSO ログインする手順を紹介します。
今回はIAM Identity Centerを使用せず、直接連携する方法です。
SSO・SAML をざっくり解説
SSO(シングルサインオン)とは
一度の認証で複数のサービスにアクセスできる仕組みのことです。それを実現する具体的な技術として SAML や OIDC があります。
フェデレーション(認証連携)とは
異なる組織・サービス間で認証情報を信頼し合う仕組みです。
通常、サービスごとにユーザー ID とパスワードを管理しますが、フェデレーションでは IdP(ID プロバイダー)が認証を一手に引き受け、その結果を SP(サービスプロバイダー)が信頼して受け入れます。SP 側にパスワードを持つ必要がなくなります。
今回の例:
- IdP = Entra ID(ユーザーの認証を担当)
- SP = AWS(Entra ID の認証結果を信頼して Amazon Quick へのアクセスを許可)
SAML 2.0 とは
Web ブラウザ向けのフェデレーション認証プロトコルです。IdP(Entra ID)がユーザーを認証し、XML 形式の「SAML アサーション」を SP(AWS)に渡すことで、SP 側にパスワードを持たなくてもログインできます。
SAML アサーションとは
IdP が発行する「この人は認証済みです」というデジタル署名付きの証明データ(XML)です。以下の情報が含まれます:
| 含まれる情報 | 内容 |
|---|---|
| 認証ステートメント | いつ、どの方法で認証したか |
| 属性ステートメント | ユーザーの属性(ロール、メールアドレスなど) |
今回の構成では、SAML アサーションに「このユーザーの IAM ロールは 〇〇」「メールアドレスは user@example.com」といった属性が含まれており、AWS はその情報をもとに一時的な認証情報を発行します。デジタル署名が付いているため、AWS 側は「この情報は確かに信頼している Entra ID が発行したものだ」と検証できます。
フェデレーションメタデータ XML とは
IdP または SP が「自分はこういう者です」と相手に自己紹介するための設定ファイル(XML)です。お互いのメタデータを交換することで、信頼関係が成立します。
今回の構成では 2 つのメタデータ XML が登場します:
| メタデータ | 発行元 | 渡す先 | 含まれる情報 |
|---|---|---|---|
| Entra ID のメタデータ | Entra ID(IdP) | AWS(SP) | Entra ID の署名証明書、サインイン URL、エンティティ ID |
| AWS のメタデータ | AWS(SP) | Entra ID(IdP) | AWS のエンティティ ID(urn:amazon:webservices)、ACS URL、証明書 |
- Entra ID → AWS:AWS が「Entra ID からのアサーションは信頼してよい」と判断するために使う
- AWS → Entra ID:Entra ID が「アサーションの送り先は AWS のこの URL」と知るために使う
今回の構成
本記事では、SAML 2.0 を使って Entra ID から Amazon Quick にブラウザで SSO ログインする構成を紹介します。
| アクセス方法 | プロトコル | 認証フロー |
|---|---|---|
| ブラウザ版 Amazon Quick | SAML 2.0 | Entra ID で認証 → SAML アサーション → sts:AssumeRoleWithSAML で一時認証情報を取得 → Amazon Quick にログイン |
やってみた
前提条件
- AWS アカウントを持っていること
- Amazon Quick が有効化済みであること(Enterprise Edition)
- パスワードベースまたはシングルサインオン もしくは シングルサインオンのみ で有効化していること(参考)
- Microsoft Entra ID(旧 Azure AD)のテナントを持っていること
- Entra ID でエンタープライズアプリを作成できる権限があること(アプリケーション管理者以上)
- IAM でプロバイダー・ロールを作成できる権限があること
Entra ID 側
SAMLアプリの作成
エンタープライズアプリとは、Entra ID における「外部サービスとの接続設定を管理するための箇所」です。誰がアクセスできるか、どうやって認証するか、どんな属性を渡すかをまとめて管理します。
今回はノンギャラリー(独自アプリ)として作成します。ギャラリーに AWS 用テンプレートもありますが、Amazon Quick 向けに RelayState などをカスタムしたい場合はノンギャラリーの方が柔軟です。
- Microsoft Entra 管理センター →「エンタープライズ アプリ」→「新しいアプリケーション」

- 「独自のアプリケーションの作成」をクリック

- 名前を入力(例:
Amazon Quick 検証用)→「ギャラリーに見つからないその他のアプリケーションを統合します」を選択 →「作成」

基本SAML設定
作成したアプリケーションの「シングル サインオン」→「SAML」を選択し、基本的な SAML 構成を編集します。
ここでは「SAML アサーションをどこに・誰宛に送るか」を定義します。

| 項目 | 値 | 意味 |
|---|---|---|
| 識別子(エンティティ ID) | urn:amazon:webservices |
「この SAML 通信の相手は AWS です」という識別子。AWS が自分宛のアサーションだと判別するために使う。AWS が定めた固定値で、どのアカウント・リージョンでも同じ |
| 応答 URL(ACS URL) | https://signin.aws.amazon.com/saml |
認証完了後に SAML アサーションを POST で送る先。AWS の SAML 受付窓口 |
| リレー状態(RelayState) | https://quicksight.aws.amazon.com |
ログイン成功後にリダイレクトする最終的な行き先 |

属性とクレーム
属性(Attribute)とクレーム(Claim)は同じものを別の視点から呼んだ用語です。
| 用語 | 使う側 | 意味 |
|---|---|---|
| 属性(Attribute) | SAML 仕様 / AWS 側 | アサーション内のデータ項目 |
| クレーム(Claim) | Microsoft Entra ID / ADFS 側 | IdP が発行する主張 |
Entra ID で「クレームを設定する」= SAML アサーションに含める「属性を設定する」ということです。
SAML 設定画面の「属性とクレーム」セクションで「編集」をクリックし、以下のクレームを追加します:

- 「新しいクレームの追加」をクリック

- 名前・名前空間・ソース属性を入力して保存
今回設定するクレーム(属性)は以下の通りです:
| クレーム名 | 名前空間 | ソース属性 |
|---|---|---|
| Role | https://aws.amazon.com/SAML/Attributes |
user.assignedroles |
| RoleSessionName | https://aws.amazon.com/SAML/Attributes |
user.userprincipalname |
| PrincipalTag:Email | https://aws.amazon.com/SAML/Attributes |
user.userprincipalname |

フェデレーションメタデータXMLをダウンロード
SAML 設定画面の「SAML 証明書」セクションから「フェデレーション メタデータ XML」の「ダウンロード」をクリックします。このファイルを次の AWS 側の設定で使用します。

アプリロールの作成(アプリの登録 → アプリのロール)
アプリロールとは、Entra ID の「アプリの登録」で定義できるアプリケーション固有のロールです。ユーザーやグループに割り当てることで、SAML アサーションの Role クレームに値を渡す仕組みとして使います。
今回の構成では、アプリロールの「値」に 後続の手順で作成するAWS 側の IAM ロール ARN と SAML プロバイダー ARN をカンマ区切りで設定します。これにより、ユーザーが SSO ログインした際に「このユーザーは AWS 上でどの IAM ロールを引き受けるか」が SAML アサーションに含まれるようになります。
- 「アプリの登録」→ 作成したアプリを選択

- 左メニューの「アプリのロール」→「アプリ ロールの作成」

- 以下を入力して保存:
| 項目 | 値 |
|---|---|
| 表示名(何でも良い) | Amazon Quick Role |
| 許可されたメンバーの種類 | ユーザー/グループ |
| 値 | <IAMロールARN>,<SAMLプロバイダーARN> |

実際のRoleの値は後続のAWS側のリソース作成が完了してから入力してください。
SAML アサーション内の https://aws.amazon.com/SAML/Attributes/Role 属性としてそのまま渡されます。
ユーザー割り当て
作成したアプリロールをユーザーまたはグループに割り当てます。ここで割り当てられたユーザーだけが、このエンタープライズアプリ経由で AWS に SSO ログインできるようになります。
- 「エンタープライズ アプリ」→ 作成したアプリを選択

- 左メニューの「ユーザーとグループ」→「ユーザーまたはグループの追加」

- 割り当てるユーザーを選択 →「ロールの選択」で先ほど作成したアプリロール(Amazon Quick Role)を選択 →「割り当て」

割り当てが完了すると、そのユーザーの user.assignedroles に値がセットされ、SAML アサーションの Role クレームとして AWS に送信されます。
AWS側の設定
IAM に ID プロバイダーを登録
IAM の ID プロバイダーとは、外部の IdP(Entra ID など)を AWS に登録するためのリソースです。「この外部の認証基盤を信頼します」という宣言を IAM 上で表現したものであり、Entra ID のメタデータ XML(署名証明書・エンティティ ID・サインイン URL)を AWS に預けることで、受け取った SAML アサーションが確かに Entra ID が署名したものだと検証できるようになります。
登録後、arn:aws:iam::<アカウントID>:saml-provider/EntraID-Quick という ARN が発行され、IAM ロールの信頼ポリシーで「この IdP からの認証を信頼する」と指定する際に使います。
- AWS マネジメントコンソール → IAM →「ID プロバイダー」→「プロバイダを追加」
- プロバイダーのタイプ:「SAML」を選択
- プロバイダ名を入力(例:
EntraID-Quick) - メタデータドキュメント:先ほど Entra ID からダウンロードしたフェデレーションメタデータ XML をアップロード
- 「プロバイダを追加」をクリック

IAMロールの作成
SAML フェデレーション用の IAM ロールには、信頼ポリシーと権限ポリシーの 2 つを設定します。
- IAM →「ロール」→「ロールを作成」
- 信頼されたエンティティタイプ:「SAML 2.0 フェデレーション」を選択
- SAML 2.0 ベースのプロバイダー:先ほど作成した
EntraID-Quickを選択 - 次へ進み、権限ポリシーをアタッチ(今回は検証のためAdmin権限を付与)
- ロール名を入力(例:
QuickSAMLRole)→「ロールを作成」
信頼ポリシー
「Entra ID で認証されたユーザーがこのロールを引き受けてよい」という許可です。
{
"Statement": [{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<アカウントID>:saml-provider/EntraID-Quick"
},
"Action": ["sts:AssumeRoleWithSAML", "sts:TagSession"],
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
}]
}
参考:権限ポリシー
Amazon Quick へのアクセスに必要な最小限の権限です。このポリシーにより、初回 SSO ログイン時にユーザーが自動プロビジョニングされます。
管理者としてプロビジョニングする場合:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["quicksight:CreateAdmin"],
"Effect": "Allow",
"Resource": ["arn:aws:quicksight::<アカウントID>:user/${aws:userid}"]
}
]
}
| アクション | プロビジョニングされるロール |
|---|---|
quicksight:CreateAdmin |
管理者 |
quicksight:CreateUser |
作成者(Author) |
quicksight:CreateReader |
閲覧者(Reader) |
ポリシーに複数のアクションが含まれる場合、最上位の権限レベルで自動プロビジョニングされます(手動招待は不要)。
Entra ID に戻ってアプリロールの値を入力
IAM ID プロバイダーと IAM ロールの作成が完了したら、Entra ID のアプリロールに実際の値を入力します。
- Microsoft Entra 管理センター →「アプリの登録」→ 作成したアプリ →「アプリのロール」
- 先ほど作成したロール(Amazon Quick Role)を編集
- 「値」に以下の形式で入力:
arn:aws:iam::<アカウントID>:role/QuickSAMLRole,arn:aws:iam::<アカウントID>:saml-provider/EntraID-Quick
SSO ログインの確認
ここまでの設定が完了したら、実際に SSO ログインできるか確認します。
手順
-
ブラウザで https://myapps.microsoft.com/ にアクセスし、Entra ID のユーザーでログイン
-
作成したエンタープライズアプリ(例:「Amazon Quick 検証用」)のタイルをクリック

-
Entra ID が SAML アサーションを生成し、AWS のサインインエンドポイント(
https://signin.aws.amazon.com/saml)に POST される -
RelayState により Amazon Quick(
https://quicksight.aws.amazon.com)にリダイレクトされる

- 初回ログイン時は、権限ポリシーに基づいてユーザーが自動プロビジョニングされる

- ログインが完了する

Amazon Quick
SSO の設定
オプションではありますが、この設定により、Amazon Quick のログイン画面から直接 Entra ID にリダイレクトされる SP-initiated SSO(Amazon Quick 起点の SSO)が有効になります。先ほどの myapps.microsoft.com からのログインは IdP-initiated SSO(Entra ID 起点)であり、両方向からのログインが可能になります。
- Amazon Quick コンソール → 右上のアイコン →「Quick の管理」
- 左メニューの「シングルサインオン (SSO)」を選択
- 以下を設定して保存:
| 項目 | 設定値 |
|---|---|
| ステータス | オン |
| IdP URL | エンタープライズアプリ →「プロパティ」→「ユーザーのアクセス URL」の値(下記画像参照) |
| RelayState パラメータ名 | RelayState |

同じ「シングルサインオン (SSO)」画面内にある「フェデレーティッドユーザーの E メール同期」をオンにして保存します。
これをオンにすると、SAML アサーションに含まれる E メール属性(PrincipalTag:Email)が Amazon Quick ユーザーのメールアドレスとして同期されます。オフのままだと、ユーザーのメールアドレスが空になり、共有やメール通知が正しく動作しません。
下記は設定例となります。

ハマりポイント:SP-initiated SSO で AADSTS750054 エラー
Amazon Quick の SSO 設定を有効にして https://quicksight.aws.amazon.com からログインしようとすると、以下のエラーが出る場合があります:
AADSTS750054: SAMLRequest or SAMLResponse must be present as query string parameters in HTTP request for SAML Redirect binding.
原因: Amazon Quick の SP-initiated SSO は、Entra ID に SAMLRequest を直接送るのではなく、launcher.myapps.microsoft.com 経由でリダイレクトする仕組みです。IdP URL に Entra ID の SAML エンドポイント(https://login.microsoftonline.com/.../saml2)を直接指定すると、SAMLRequest なしでアクセスしてしまいエラーになります。
対処: Quick の SSO 設定の「IdP URL」には、エンタープライズアプリ →「プロパティ」に表示されるユーザーのアクセス URL を指定してください。この URL は launcher.myapps.microsoft.com 経由で IdP-initiated フローを起動するため、SAMLRequest なしでも正常に動作します。
まとめ
本記事で行った設定フローの全体像です:
- Entra ID:エンタープライズアプリ作成 — ノンギャラリーアプリとして作成
- Entra ID:基本 SAML 設定 — エンティティ ID・ACS URL・RelayState を設定
- Entra ID:属性とクレーム — Role / RoleSessionName / PrincipalTag:Email を設定
- Entra ID:メタデータ XML ダウンロード — AWS にアップロードするファイルを取得
- Entra ID:アプリロール作成 — IAM ロール ARN と SAML プロバイダー ARN のペアを値に設定
- Entra ID:ユーザー割り当て — SSO を許可するユーザーにアプリロールを割り当て
- AWS:IAM ID プロバイダー登録 — Entra ID のメタデータ XML をアップロード
- AWS:IAM ロール作成 — 信頼ポリシー(Entra ID を信頼)+ 権限ポリシー(Quick へのアクセス)
- 確認:IdP-initiated SSO — myapps.microsoft.com からログイン
- (オプション)Amazon Quick:SSO 設定 — SP-initiated SSO を有効化







