💭

Azure AD (Microsoft Entra ID)とAWS SSOの連携について

2024/12/17に公開

Azure AD (現在のMicrosoft Entra ID)とAWS SSOの連携についてメモ。

SAML (Security Assertion Markup Language) 認証の仕組み

そもそもSAML認証とは、という所から。

SAMLの基本的な登場人物

  1. ユーザー:認証を行う人
  2. IdP (Identity Provider):認証を担当する側(この場合はEntra ID)
  3. 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