SAMLとは何か?XMLベースのシングルサインオン
SAMLはXMLベースの標準であり、アイデンティティプロバイダーがアプリケーションに対してユーザーが認証済みであることを伝え、シングルサインオンを可能にします。
SAML、すなわちSecurity Assertion Markup Languageは、エンタープライズのシングルサインオンのための最初期の標準の1つです。アイデンティティプロバイダーがユーザーを保証する署名付きのXMLアサーションをどう発行し、アプリケーションがそれをどう消費するかを定義します。エンジニアリングチームにとって、SAMLはしばしば、ソースホスト、クラウドコンソール、CI/CDダッシュボードへの人間のアクセスを制御するものです。
SAMLフローの仕組み
ユーザーがアプリケーション(サービスプロバイダー)に到達しようとします。アプリケーションはアイデンティティプロバイダーにリダイレクトし、プロバイダーはユーザーを認証して署名付きのSAMLアサーションを返します。アプリケーションは署名を検証し、アクセスを許可します。ユーザーはアプリケーションにパスワードを渡すことは決してありません。
主要な構成要素
- アイデンティティプロバイダー(IdP): ユーザーを認証し、アサーションを発行する。
- サービスプロバイダー(SP): ユーザーが到達したいアプリケーション。
- アサーション: ユーザーのアイデンティティと属性に関する署名付きのXMLステートメント。
SAMLとOpenID Connect
SAMLはXMLを使い、エンタープライズソフトウェアに深く根付いています。OpenID ConnectはJSONとJWTを使い、最新のWebやモバイルアプリにより自然に適合します。多くの組織は両方を運用し、各アプリケーションが何をサポートするかに基づいてアプリごとに選択します。
SAMLとCI/CDへのアクセス
SAMLは通常、CI/CDツールを含むプラットフォームへのインタラクティブな人間のアクセスを統制します。パイプライン自体はサービスへの認証にSAMLを使いません。トークンとOIDCを使います。SAMLは、jobがAPIを呼ぶことではなく、人がログインすることに関するものです。
セキュリティ上の考慮点
SAMLのセキュリティは署名の検証と正しい設定に依存します。誤って検証された署名、リプレイされたアサーション、広すぎる属性マッピングは、典型的な落とし穴です。IdPが信頼のアンカーであるため、強力に保護されなければなりません。
どこに位置づけられるか
Latchkeyを使うチームにとって、SAMLは誰がIdPを通じてダッシュボードにサインインできるかを統制する一方、runnerとパイプラインの認証は、SAMLアサーションではなく、スコープされた短命の認証情報に依存します。
重要なポイント
- SAMLは署名付きのXMLアサーションを使い、人間のアクセスに対してシングルサインオンを可能にします。
- アイデンティティプロバイダーと、その署名を信頼するサービスプロバイダーを組み合わせます。
- マシン間のパイプライン認証ではなく、インタラクティブなログインを統制します。