はじめに
SAMLはXMLベースの認証プロトコルです。
以下のような方におすすめの内容になっています。
- IDプロバイダーで設定するSAMLの意味がわからない
- 外部サービスとの連携を安全にしたい
この記事では、SAMLの基本から、AWSや他のクラウド環境での事例までをわかりやすく解説します。
SAMLとは?
SAML(Security Assertion Markup Language)は、シングルサインオン(SSO)やパスワードレス認証を行うために使用されるプロトコルです。
例えば、企業内のユーザーが一度ログインするだけで、社内システムの他にクラウドサービスにアクセスできる仕組みを作成するときに使用されるのがSAMLです。
仕組み
SAMLを理解するために、2つの主要な役割をの関係を知っておく必要があります。
- Identity Provider(IdP)
- Service Provider(SP)
IdPはユーザー認証をする役割を持ち、SPは認証情報を受け取って、アクセスを許可します。
認証フローは以下のように進みます。
- IdPにアクセスをリクエスト
- IdPが認証をする
- 認証トークンをIdPに送り、他サービスも認証
SAMLが重要な理由
SAMLは利便性とセキュリティの高さから注目されています。
SSOにより、ユーザーは一度のログインで複数のサービスのログインを行うことができます。
パスワードの使い回しや忘れるといったリスクを軽減することができます。
AWS等のクラウド環境では、複数アカウントの管理を求められることが多いので、SAMLを活用することで管理者の負担を大幅に減らすことができます。
外部サービスとの連携も行えるので、クラウド環境と統合する際によく使用されます。
メリットとデメリット
今までの内容からメリットをまとめました。
- セキュリティの向上
- SSOによる利便性の向上
- クラウド環境と統合がしやすい
- 導入実績が豊富
SAMLの最大のメリットは、セキュリティと利便性の両立です。
ユーザーは一度の認証で複数のリソースにアクセスできるため、システム全体が使いやすくなります。
フィッシングや不正アクセスのリスクを抑えることができます。
逆にデメリットも存在します。
- 初期設定の複雑さ(メタデータや証明書の管理)
- OIDC等の新しいプロトコルに比べて少し重い
- 柔軟性が低く、モバイルや軽量アプリケーションに不向き
設定がやや複雑であることが挙げられます。
メタデータや証明書の管理が必要で、特に証明書の有効期限が切れた場合、サービスが利用できなくなることがあります。
モバイルアプリや軽量な認証が必要な場合には、SAMLよりもOIDC(OpenID Connect)のほうが適している場合があります。
SAMLのユースケース
一部のユースケースをご紹介します。
クラウドサービスへのシングルサインオン(SSO)
企業では、AWSやAzureなど複数のクラウドサービスを使用することが一般的です。
SAMLを活用することで、社員は一度ログインするだけで、すべてのクラウドリソースにアクセスできるようになります。
エンタープライズ環境の統合
SAMLは、オンプレミスの認証基盤(Active Directoryなど)とクラウドサービスをつなぎ機能します。
これにより、企業は既存の認証基盤を活かしながら、クラウド移行をスムーズに行うことができます。
特定サービスとのセキュアな連携
SAMLを使うことで、SaaS製品やクラウドサービスと安全に認証を統合できます。
これにより、外部サービスにアクセスする際のセキュリティを向上させると同時に、運用を簡単にできます。
SAMLとOIDCの比較
SAMLとOIDCを比較して、場合によって使い分けましょう。
SAML (Security Assertion Markup Language) | OIDC (OpenID Connect) | |
---|---|---|
用途 | エンタープライス環境やSSO | モバイルやクラウドネイティブ環境 |
認証プロトコル | XMLベースの認証プロトコル | OAuth2.0を拡張したJSONベースの認証プロトコル |
対応システム | Active Directory、Okta、AWS IAM、Google Workspace等 | AWSCognito、Google、Facebook、GitHubActions |
軽量さ | 重い(XMLを利用) | 軽量(JSONを利用) |
セキュリティ | 高度なセキュリティ(証明書や署名による検証) | セキュリティは十分だが、SAMLに比べてシンプル |
設定難易度 | エンタープライズ環境、複数クラウドサービスの一括管理 | クラウドネイティブアプリ、サーバーレス環境 |
推奨環境 | AWS IAMのSAML IDプロバイダー、Azure ADのSSO | GitHub ActionsとAWSのOIDC連携、AWS Cognitoでの認証管理 |
まとめ
SAMLは、エンタープライズ環境やクラウドサービスにおける認証基盤としての役割を果たすプロトコルです。
セキュリティ・利便性の向上というメリットがありますが、複雑で少し重いというデメリットがあります。
クラウド環境でも使用されることがあるので、この記事を参考にSAMLの基本を理解しておきましょう。
OIDCを深掘りをして、AWS IAMでのSAML設定手順を実践してみてください。