🔐 AWS IAM フェデレーション入門

IdP・SAML2.0・SSOを使ったシングルサインオンをやさしく解説

🏢
IAMとは?

🏠 たとえ話:会社のセキュリティシステム

IAM(Identity and Access Management) は、会社の入退室管理システムのようなものです。

  • 👤 誰が (Identity:身元確認)
  • 🚪 どこに入れるか (Access:アクセス権限)
  • ⚙️ 何ができるか (Management:管理)

🔍 身元確認

ユーザーが本当に本人かどうかを確認

🛡️ アクセス制御

適切な権限を持つ人だけがリソースにアクセス可能

📊 一元管理

すべてのユーザーと権限を中央で管理

🏛️
IdP(Identity Provider)とは?

🆔 たとえ話:身分証明書の発行機関

IdP は、運転免許証を発行する警察署や、学生証を発行する大学のような 信頼できる身元証明機関 です。

🏛️ 会社のIdP
(Active Directory等)
👤 従業員
☁️ AWS

IdPが身元を証明 → ユーザーがAWSにアクセス

🔐 認証の専門家

ユーザーのパスワードやMFAを管理

🤝 信頼関係

AWSがIdPを信頼してユーザーを受け入れ

📜
SAML 2.0とは?

📋 たとえ話:標準化された身分証明書のフォーマット

SAML 2.0 は、身分証明書の 国際標準フォーマット のようなものです。どこの国でも読める共通の形式です。

SAMLトークンの中身

📝 ユーザー情報: 田中太郎

🏢 所属: ABC株式会社

📧 メール: tanaka@abc.com

👥 グループ: 開発部

有効期限: 1時間

🔏 電子署名: IdPによる改ざん防止

🌐 標準プロトコル

異なるシステム間でも共通理解

🔒 セキュア

暗号化と電子署名で保護

⚡ 効率的

一度認証すれば複数サービスで利用可能

🔗
フェデレーションとは?

🤝 たとえ話:提携関係

フェデレーション は、大学間の単位互換制度のような 組織間の信頼関係 です。A大学の学生証でB大学の図書館も使えるイメージです。

フェデレーションの仕組み

フェデレーションの仕組みの図 フェデレーションは、大学間の単位互換制度のような組織間の信頼関係です。3個のコンポーネント(矩形)、矢印や接続線で構成された図。9個のラベル付き要素を含む。 🏛️ 会社IdP Active Directory ☁️ AWS クラウドサービス 👤 ユーザー 従業員 信頼関係 認証 アクセス

🔑
SSO(シングルサインオン)とは?

🗝️ たとえ話:マスターキー

SSO は、ホテルのマスターキーのようなもので、 一度ログインすれば複数のサービス にアクセスできます。

SSO の利点

1回のログイン
会社のIDでログイン
複数サービス利用
AWS・Office365・Slack等

😊 ユーザビリティ向上

パスワードを覚える負担軽減

🛡️ セキュリティ強化

パスワード使い回しのリスク削減

⚙️ 管理コスト削減

IT部門の管理負担軽減

🛒
SP(Service Provider)とAWS登録

🏪 たとえ話:提携店舗への登録

SP(Service Provider) は、クレジットカード会社(IdP)と提携する お店 のようなものです。AWSを「お店」として登録することで、従業員が「会社カード」でサービスを利用できます。

IdPとSPの関係

🏛️ IdP
Identity Provider
認証の専門家

会社のActive Directory

信頼関係構築

SPとして登録

☁️ SP
Service Provider
サービス提供者

AWS・Office365・Slack

📝 IdP側の設定

• SP識別子(Entity ID)
• アクセス先URL(ACS URL)
• 属性マッピング設定

☁️ AWS側の設定

• SAMLプロバイダー作成
• IAMロール設定
• 信頼関係の構築

具体的な登録プロセス

1 IdP管理者
「AWSを信頼できるサービスとして登録」
📋 設定項目

• Entity ID: urn:amazon:webservices

• ACS URL: https://signin.aws.amazon.com/saml

• 属性マッピング: 部署 → IAMロール

2 AWS管理者
「会社IdPを信頼できる認証機関として登録」
⚙️ 設定項目

• SAMLプロバイダー: CompanyAD

• メタデータ: IdPの設定情報(XMLファイル)

• IAMロール: SAML-DeveloperRole

🎯 登録完了後の状態

登録前: 従業員はAWS専用のパスワードが必要
登録後: 会社のIDとパスワードだけでAWSにアクセス可能!
部署に応じて自動的に適切な権限が割り当てられます

🔄
全体の流れ

🎭 たとえ話:劇場への入場

会社のIDカードで劇場(AWS)に入る流れを想像してください。

SAMLフェデレーションの完全な流れ

1 ユーザー
AWSにアクセス要求
2 AWS
IdPにリダイレクト
3 IdP
ユーザー認証
4 IdP
SAMLトークン発行
5 ユーザー
トークンをAWSに提示
6 AWS
アクセス許可!
🎯 実際の例

1. 田中さんがAWSコンソールにアクセス
2. AWSが「会社のIdPで認証してください」と案内
3. 田中さんが会社のパスワードでログイン
4. IdPが「田中さんは開発部の正社員です」という証明書(SAMLトークン)を発行
5. 田中さんがその証明書をAWSに提示
6. AWSが証明書を確認して、開発部用の権限でアクセス許可

🎫
SAMLアサーションとは?

🎫 たとえ話:コンサートの入場チケット

SAMLアサーション は、コンサートの 入場チケット のようなもので、ユーザーの身元と権限を証明する「デジタル身分証明書」です。

SAMLアサーション(デジタルチケット)の中身

🎫 SAMLアサーション

👤 認証情報

ユーザー: 田中太郎

認証時刻: 2025-06-06 14:30

認証方法: パスワード + MFA

🏢 属性情報

メール: tanaka@company.com

部署: 開発部

グループ: Developers

🔑 認可情報

AWSロール: arn:aws:iam::123456789:role/DeveloperRole

有効期限: 1時間

発行者: 会社IdP(電子署名付き)

🔐 セキュリティ機能

デジタル署名 :改ざん検出
暗号化 :情報保護
有効期限 :リスク最小化

📋 含まれる情報

認証情報 :誰が、いつ、どうやって
属性情報 :ユーザーの詳細
認可情報 :アクセス権限

⚡ 特徴

一時的 :短時間で失効
標準化 :SAML 2.0準拠
信頼性 :IdPの保証付き

SAMLアサーションの流れ

1 IdP
「田中さんは本物の従業員です!」
2 SAMLアサーション生成
デジタル署名付きXML文書
3 ユーザー
アサーションをAWSに提示
4 AWS
署名検証 → アクセス許可
💡 重要なポイント

SAMLアサーションは 「使い捨てのデジタルチケット」 です。
一度使用すると短時間で無効になり、毎回新しいものが発行されるため、
セキュリティが高く保たれています。

🏨
信頼ポリシー - なぜ必要?

🏨 たとえ話:高級ホテルのVIPルーム

信頼ポリシー は、高級ホテルが作る 「信頼できる旅行代理店リスト」 のようなものです。事前に「どの代理店からの予約なら受け入れるか」を決めておきます。

登場人物の関係

🏨 高級ホテル
(AWS)

VIPルームを管理

🏢 旅行代理店
(SAMLプロバイダー)

予約を取り扱う

👤 お客様
(ユーザー)

VIPルームを利用したい

📋 信頼リスト
(信頼ポリシー)

受付マニュアル

❌ 信頼ポリシーがない場合

👤 田中さん
「VIPルーム予約の田中です!」
🏨 ホテル
「どちらの代理店?聞いたことないですね...🤔」
❌ お断り!セキュリティリスク!

✅ 信頼ポリシーがある場合

📋 事前作成:信頼できる代理店リスト

ABC株式会社旅行部 (SAMLプロバイダー)

XYZ旅行代理店

❌ 怪しい代理店X(登録なし)

👤 田中さん
「ABC株式会社で予約した田中です!」
🏨 ホテル
「ABC株式会社は信頼リストにありますね!✅」
✅ VIPルームへご案内!

🔒 セキュリティ

知らない代理店(IdP)からの予約(SAMLアサーション)は受け入れない

📋 明確なルール

事前に「誰を信頼するか」を決めておく受付マニュアル

⚡ 自動判断

リストにあれば自動でOK、なければ自動でNG

⚙️
実際の信頼ポリシー設定

📝 たとえ話:ホテルの受付マニュアル

実際のAWS信頼ポリシーは、 ホテルの詳細な受付マニュアル のようなものです。

ホテルの受付マニュアル → AWS信頼ポリシー

🏨 ホテル受付マニュアル

📋 信頼する代理店:
ABC株式会社旅行部のみ


✅ 受け入れ条件:
• 正式な予約確認書を持参
• 開発部の社員のみ
• 平日営業時間内


🚫 禁止事項:
• リストにない代理店はNG
• 確認書なしはNG

☁️ AWS信頼ポリシー

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "SAML": "arn:aws:iam::123:saml-provider/ABC"
    },
    "Action": "sts:AssumeRoleWithSAML",
    "Condition": {
      "StringEquals": {
        "SAML:Department": "開発部"
      }
    }
  }]
}

設定項目の詳細説明

Principal
(信頼する相手)

SAML: 「この特定のSAMLプロバイダーを信頼します」

arn:aws:iam::123:saml-provider/ABC

→ ABC会社のIdPからの認証のみ受け入れ

Action
(許可する操作)

sts:AssumeRoleWithSAML

→ SAMLアサーションを使ってロールを引き受ける操作を許可

Condition
(追加条件)

SAML:Department = "開発部"

→ SAMLアサーションに「開発部」の属性がある場合のみ許可

🎯 実際の動作例

1. 田中さん(開発部)がAWSにアクセス
2. AWSが信頼ポリシーをチェック
3. 「ABC会社のIdP?✅」「開発部?✅」「OK!」
4. 山田さん(総務部)の場合は「総務部?❌」でNG

まとめ

🔐 IAM

AWSの セキュリティの門番
誰が何にアクセスできるかを管理

🏛️ IdP

信頼できる身元証明機関
ユーザーの認証を担当

📜 SAML 2.0

共通の身分証明書フォーマット
異なるシステム間の橋渡し

🤝 フェデレーション

組織間の信頼関係
外部IdPとAWSの連携

🔑 SSO

一度のログインで全てアクセス
利便性とセキュリティを両立

🎯 結果

効率的で安全なアクセス管理
ユーザーも管理者もハッピー

🎉 最終的に実現されること

会社のIDひとつで、AWS・Office365・Slackなど
すべてのクラウドサービスが使える!
パスワード管理の煩わしさから解放され、セキュリティも向上

Created by SSuzuki1063

AWS SAP Learning Resources

Created by SSuzuki1063

AWS SAP Learning Resources