SAML、OIDC、Web Identity Federation
外部のアイデンティティプロバイダーやアプリのログインをAWSに接続します。
「SAML、OIDC、Web Identity Federation」はCoddyKit上の無料AWS Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Security Academyコースには全4レッスンが含まれています。
フェデレーションとは
フェデレーションを使用すると、AWS の外部で定義されたアイデンティティが、IAM ユーザーを作成することなくサインインし、AWS の権限を取得できます。
外部のアイデンティティプロバイダー(IdP)がユーザーを認証し、AWS はそのアサーションを信頼して一時的な認証情報を発行します。これによりアカウントの重複を避け、既存のディレクトリを信頼できる情報源として維持できます。
SAML 2.0フェデレーション
SAML(Security Assertion Markup Language)2.0は、エンタープライズフェデレーションで長く使われている標準規格です。
- IAMにIdPをSAMLアイデンティティプロバイダーとして登録します。
- ユーザーのログイン後、IdPは署名付きのアサーションを送信します。
- AWSはそれをSTS経由で、一時的なロール認証情報と交換します。
Active Directory Federation Servicesや、同様の企業向けIdPで一般的に使われています。
OIDCフェデレーション
OIDC(OpenID Connect)は、OAuth 2.0を基盤とする最新のトークンベース標準です。
ワークロードとCI/CDシステムのフェデレーションに適しています。たとえば、GitHub ActionsのパイプラインはOIDCトークンを提示し、AWSは保存済みのキーを使わずにロールを引き受けられます。プロバイダーはIAMのOIDCアイデンティティプロバイダーとして登録します。
Webアイデンティティフェデレーション
Webアイデンティティフェデレーションを使うと、Google、Facebook、Amazonなどのパブリックプロバイダーでユーザーがサインインできます。モバイルアプリやWebアプリで一般的な方式です。
アプリはプロバイダーのトークンをAssumeRoleWithWebIdentity経由でSTSに渡し、ロールの範囲に限定された一時的な認証情報を受け取ります。ユーザーにIAMアイデンティティは必要ありません。
STSの役割
すべてのフェデレーション方式はSTS(Security Token Service)に集約されます。STSは、検証済みの外部アサーションを、IAMロールに紐付いた短期間有効なAWS認証情報と交換します。
- SAMLではAssumeRoleWithSAMLを使用します。
- OIDCとWebアイデンティティではAssumeRoleWithWebIdentityを使用します。
フェデレーションユーザーが実行できる操作は、ロールの権限によって決まります。
フェデレーション用の信頼ポリシー
フェデレーションユーザーが引き受けるIAMロールには、IdPをプリンシパルとして指定する信頼ポリシーがあります。
信頼ポリシーの条件によって、そのプロバイダーの誰がロールを引き受けられるかを制限できます。たとえば、特定のSAML属性やOIDCのsubクレームを照合します。これにより、広範なプロバイダーが全員にアクセスを許可してしまう事態を防げます。
{
"Effect": "Allow",
"Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/token.actions.githubusercontent.com" },
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": { "StringLike": { "token.actions.githubusercontent.com:sub": "repo:my-org/my-repo:*" } }
}Identity Centerと従来のフェデレーションの比較
IAM Identity Centerは、洗練されたポータルと許可セットを備えた、ワークフォース向けのフェデレーションレイヤーです。
従来のIAM SAMLまたはOIDCプロバイダーは、より低レベルの構成要素です。そのため、アプリケーションとワークロードのフェデレーションや、レガシー環境に適しています。試験では、人間のSSOにはIdentity Center、パイプラインにはOIDCロールを選択することが求められます。
Amazon Cognitoアイデンティティプール
コンシューマー向けアプリでは、Amazon CognitoアイデンティティプールがWebアイデンティティフェデレーションを仲介します。
ソーシャルログインやユーザープールのログインを一時的なAWS認証情報と交換し、STSの呼び出しを内部で処理します。モバイルアプリでは、AssumeRoleWithWebIdentityを直接呼び出すよりも、この方法が推奨されます。
埋め込みキーを避ける
フェデレーションの目的は、アプリ、パイプライン、デバイスに長期的なキーを埋め込まないことです。
- 漏えいした静的キーは、侵害の主な原因の一つです。
- フェデレーショントークンは短期間だけ有効で、検証済みのアイデンティティに紐付いています。
シナリオにハードコードされたアクセスキーが登場したら、通常はフェデレーションが解決策です。
適切な標準の選択
接続元に合わせて標準を選択します。
- 従来型のエンタープライズIdPやADにはSAML。
- 最新のワークロードやCI/CDにはOIDC。
- パブリックアプリのユーザーにはWebアイデンティティ / Cognito。
いずれも一時的な認証情報を提供しますが、主な違いはトークン形式と用途です。
フェデレーションアクセスの監査
フェデレーションセッションは、引き受けたロールのアイデンティティとフェデレーションイベントとともにCloudTrailに記録されます。
IAMユーザーが存在しない場合でも、どのIdPのどの外部ユーザーがアクションを開始したかを追跡でき、説明責任を維持できます。ロール名に一貫性を持たせると、ログがはるかに読みやすくなります。
クイックチェック
適切なフェデレーション方式を選択してください。
まとめ
フェデレーションの標準を比較しました。
- エンタープライズIdPにはSAML、ワークロードにはOIDC、アプリユーザーにはWebアイデンティティ/Cognitoを使用します。
- いずれも検証済みの外部アサーションをSTS経由で一時的なロール認証情報と交換します。
- フェデレーションにより、長期的なキーを埋め込む必要がなくなります。
AI チューターと学ぶ AWS Security Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「SAML、OIDC、Web Identity Federation」レッスンは無料ですか?
はい。「SAML、OIDC、Web Identity Federation」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Security Academyコースには全4レッスンが含まれています。
「SAML、OIDC、Web Identity Federation」で何を学びますか?
外部のアイデンティティプロバイダーやアプリのログインをAWSに接続します。 ブラウザで直接実行するハンズオンコードでAWS Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AWS Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAWS Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「SAML、OIDC、Web Identity Federation」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAWS Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのAWS Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- IAM Identity Centerによるシングルサインオン
- SAML、OIDC、Web Identity Federation
- クロスアカウントロールとリソースポリシー
- IAM Access Analyzerによる共有の監査