💭
Azure AD (Microsoft Entra ID)とAWS SSOの連携について
Azure AD (現在のMicrosoft Entra ID)とAWS SSOの連携についてメモ。
SAML (Security Assertion Markup Language) 認証の仕組み
そもそもSAML認証とは、という所から。
SAMLの基本的な登場人物
- ユーザー:認証を行う人
- IdP (Identity Provider):認証を担当する側(この場合はEntra ID)
- SP (Service Provider):サービスを提供する側(この場合はAWS)
認証フローの詳細
1. 最初のアクセス(SP-initiated flow)
- ユーザーがAWSコンソールにアクセス
- AWSは認証が必要と判断し、SAMLリクエストを生成
- ブラウザをIdP(Entra ID)にリダイレクト
2. IdPでの認証
- Entra IDのログイン画面が表示
- ユーザーが認証情報(メールアドレス・パスワード)を入力
- Entra IDが認証を実行
- 認証成功後、SAMLアサーション(認証情報を含むXML)を生成
3. SPへの認証情報伝達
- SAMLアサーションがブラウザ経由でAWSに送信される
- アサーションには以下の情報が含まれる:
- ユーザーの識別情報
- 認証時刻
- 有効期限
- ユーザーの属性情報(グループ所属など)
4. セッション確立
- AWSがSAMLアサーションを検証
- 正当性が確認されたら、一時的なセッショントークンを発行
- ユーザーのブラウザにAWSコンソールが表示される
重要なポイント
- SAMLアサーションは署名され、改ざんを防止
- IdPとSP間で事前に証明書を交換して信頼関係を確立
- すべての通信はHTTPS上で行われる
- ブラウザを介した通信なので、クロスドメインの問題を回避
これにより、ユーザーは社内の認証基盤(Entra ID)の認証情報だけで、外部サービス(AWS)にもアクセスできるようになる。
Azure AD (現在のMicrosoft Entra ID)とAWS SSOの連携について
主な動作の流れは以下:
1. 初期設定フェーズ
- Azure ADとAWS間で信頼関係を確立
- Azure ADがSAML IdP (Identity Provider)として設定
- AWSはSPサービスプロバイダーとして設定
- Azure ADでアプリケーションとしてAWS SSOを登録
2. 認証フローの仕組み
- ユーザーがAWS SSOのポータルにアクセス
- AWS SSOはユーザーをAzure ADの認証画面にリダイレクト
- ユーザーがAzure ADで認証を行う(会社のMicrosoftアカウント)
- 認証成功後、Azure ADはSAMLアサーションを生成
- SAMLアサーションにはユーザーの属性情報(グループ所属など)が含まれる
- このSAMLアサーションがAWS SSOに送られる
- AWS SSOはSAMLアサーションを検証し、該当するAWSリソースへのアクセス権を付与
3. アクセス制御の仕組み
- Azure ADのグループをAWSのPermission Setsにマッピングできる
- Permission Setsは特定のAWSアカウントの特定の権限セットを定義する
- ユーザーがAzure ADのどのグループに所属しているかによって、AWSでのアクセス権が決定される
4. セッション管理
- SAMLベースのシングルサインオンセッションが確立される
- セッションの有効期限はAWS側とAzure AD側の両方で設定可能
- ユーザーがAzure ADからサインアウトすると、AWS SSOセッションも終了
メリット
- 従業員の認証情報を一元管理できる
- パスワードポリシーやMFAなどのセキュリティ設定を統一できる
- ユーザーの入社・退社に伴うアクセス権の付与・剥奪が自動化できる
- 複数のAWSアカウントへのアクセスを一元管理できる
Discussion