mcpField
B
building-identity-federation-with-saml-azure-ad

building-identity-federation-with-saml-azure-ad

github.com/mukul975セキュリティ35.2k153 回インストール8 週間前に更新
リポジトリ

building-identity-federation-with-saml-azure-ad について

オンプレミスのAD FSまたはサードパーティIdPとMicrosoft Entra IDのSAMLフェデレーションを設定する、ID・クラウド管理者向けスキルです。SaaSのシングルサインオン、クレーム、証明書管理、接続検証も扱います。

主な機能

  1. 01AD FSとEntra IDのフェデレーション設定
  2. 02SaaSアプリのSAML SSO設定
  3. 03ユーザー属性とクレームのマッピング
  4. 04署名証明書のライフサイクル管理
  5. 05フェデレーションログインの検証

活用シーン

  1. 01オンプレミス認証をクラウドリソースに拡張
  2. 02SaaSアプリのシングルサインオン設定
  3. 03署名証明書の更新とフォールバックの計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill building-identity-federation-with-saml-azure-ad

インストール後、Claude Code で/building-identity-federation-with-saml-azure-adを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

詳細

SAML Azure AD での ID フェデレーションの構築

概要

ID フェデレーションを使用すると、ある ID プロバイダーで認証されたユーザーが、個別の認証情報を管理することなく、別の ID プロバイダーが管理するリソースにアクセスできます。このスキルでは、組織のオンプレミス Active Directory(AD FS またはサードパーティ IdP 経由)と Microsoft Entra ID(旧 Azure AD)間の SAML 2.0 フェデレーションの確立、およびサードパーティ SaaS アプリケーション向けのフェデレーション SSO の設定を扱います。フェデレーションにより、パスワード同期に関する懸念を解消し、認証の権限をオンプレミスに保持しながら、クラウドリソースにも SSO を拡張できます。

使用する場面

  • 環境に building identity federation with saml azure ad の機能を導入または設定する場合
  • コンプライアンス要件に沿ったセキュリティ制御を確立する場合
  • この分野のセキュリティアーキテクチャを構築または改善する場合
  • この実装が必要なセキュリティ評価を実施する場合

前提条件

  • オンプレミス Active Directory ドメイン
  • AD FS 2019 以降、またはサードパーティ SAML IdP(Okta、Ping など)
  • Microsoft Entra ID テナント(P1 または P2 ライセンスを推奨)
  • Azure AD Connect(バックアップとしてパスワードハッシュ同期を使用するハイブリッド ID の場合)
  • フェデレーションエンドポイント用のパブリック TLS 証明書
  • フェデレーションサービス名の DNS レコード

コアコンセプト

フェデレーションモデル
モデル認証権限ユースケース
フェデレーション(AD FS)オンプレミス AD FS認証をオンプレミスに保持する規制要件
マネージド(PHS)パスワードハッシュ同期を使用する Azure AD最もシンプルなクラウド認証。AD FS は不要
マネージド(PTA)パススルーエージェント経由のオンプレミスクラウド認証をオンプレミス AD に照合して検証
サードパーティフェデレーション外部 IdP(Okta、Ping)複数の IdP がある環境
SAML フェデレーションアーキテクチャ
User → Cloud App (SP)
   │
   └── Redirect to Azure AD
          │
          ├── Azure AD checks federated domain
          │
          └── Redirect to on-premises AD FS
                 │
                 ├── AD FS authenticates against Active Directory
                 │
                 ├── AD FS issues SAML token
                 │
                 └── Token posted back to Azure AD
                        │
                        ├── Azure AD validates federation trust
                        │
                        ├── Azure AD issues its own token
                        │
                        └── User receives access token for cloud app
フェデレーショントラストのコンポーネント
コンポーネント説明
トークン署名証明書IdP が SAML アサーションへの署名に使用する X.509 証明書
フェデレーションメタデータIdP のエンドポイントと機能を記述した XML ドキュメント
証明書利用者信頼各 SP(Azure AD)向けの AD FS の設定
クレームルールAD 属性を SAML クレームに変換
Issuer URIIdP の一意の識別子(エンティティ ID)

ワークフロー

ステップ 1:AD FS インフラストラクチャの準備
# Install AD FS role
Install-WindowsFeature ADFS-Federation -IncludeManagementTools

# Configure AD FS farm
Install-AdfsFarm `
    -CertificateThumbprint $certThumbprint `
    -FederationServiceDisplayName "Corp Federation Service" `
    -FederationServiceName "fs.corp.example.com" `
    -ServiceAccountCredential $gmsaCredential

# Verify AD FS is operational
Get-AdfsProperties | Select-Object HostName, Identifier, FederationPassiveAddress
ステップ 2:Azure AD フェデレーションドメインの設定
# Install Microsoft Graph PowerShell module
Install-Module Microsoft.Graph -Scope CurrentUser

# Connect to Microsoft Graph
Connect-MgGraph -Scopes "Domain.ReadWrite.All"

# Convert managed domain to federated
# Using AD FS federation metadata URL
$domainId = "corp.example.com"
$federationConfig = @{
    issuerUri = "http://fs.corp.example.com/adfs/services/trust"
    metadataExchangeUri = "https://fs.corp.example.com/adfs/services/trust/mex"
    passiveSignInUri = "https://fs.corp.example.com/adfs/ls/"
    signOutUri = "https://fs.corp.example.com/adfs/ls/?wa=wsignout1.0"
    signingCertificate = $base64Cert
    preferredAuthenticationProtocol = "saml"
}

# Apply federation settings to domain
New-MgDomainFederationConfiguration -DomainId $domainId -BodyParameter $federationConfig
ステップ 3:AD FS クレームルールの設定
# Add Relying Party Trust for Azure AD
Add-AdfsRelyingPartyTrust `
    -Name "Microsoft Office 365 Identity Platform" `
    -MetadataUrl "https://nexus.microsoftonline-p.com/federationmetadata/2007-06/federationmetadata.xml"

# Configure claim rules
$rules = @"
@RuleTemplate = "LdapClaims"
@RuleName = "Extract AD Attributes"
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
   Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory",
   types = ("http://schemas.xmlsoap.org/claims/UPN",
            "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
            "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
            "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"),
   query = ";userPrincipalName,mail,givenName,sn;{0}",
   param = c.Value);

@RuleTemplate = "PassThroughClaims"
@RuleName = "Pass Through UPN as NameID"
c:[Type == "http://schemas.xmlsoap.org/claims/UPN"]
=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
   Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer,
   Value = c.Value,
   ValueType = c.ValueType,
   Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"]
       = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent");
"@

Set-AdfsRelyingPartyTrust `
    -TargetName "Microsoft Office 365 Identity Platform" `
    -IssuanceTransformRules $rules
ステップ 4:サードパーティ SaaS フェデレーションの設定

Azure AD 経由の SAML SSO に対応する各 SaaS アプリケーションについて、次の手順を実行します。

  1. Microsoft Entra 管理センター > エンタープライズ アプリケーションに移動します
  2. ギャラリーからアプリケーションを追加します(またはカスタム SAML を作成します)
  3. シングル サインオン > SAML を設定します。
    • 識別子(エンティティ ID):アプリケーションのエンティティ ID
    • 応答 URL(ACS):アプリケーションのアサーションコンシューマーサービス URL
    • サインオン URL:アプリケーションのログイン URL
  4. ユーザー属性/クレームをマッピングします。
    • NameID:user.userprincipalname(メール形式)
    • アプリケーションで必要な追加クレーム
  5. フェデレーションメタデータ XML または証明書をダウンロードします
  6. Azure AD のフェデレーション情報を使用して SaaS アプリを設定します
ステップ 5:証明書ライフサイクル管理

AD FS のトークン署名証明書には有効期限があり、更新が必要です。

# Check current certificate expiration
Get-AdfsCertificate -CertificateType Token-Signing | Select-Object Thumbprint, NotAfter

# AD FS supports auto-rollover (enabled by default)
Get-AdfsProperties | Select-Object AutoCertificateRollover

# If manual rotation is needed:
# 1. Add new certificate as secondary
Set-AdfsCertificate -CertificateType Token-Signing -Thumbprint $newThumbprint -IsPrimary $false
# 2. Update Azure AD with new certificate
# 3. Promote to primary
Set-AdfsCertificate -CertificateType Token-Signing -Thumbprint $newThumbprint -IsPrimary $true
# 4. Remove old certificate
Remove-AdfsCertificate -CertificateType Token-Signing -Thumbprint $oldThumbprint

検証チェックリスト

  • AD FS ファームが有効な TLS 証明書とトークン署名証明書を使用して稼働している
  • Azure AD ドメインが正しいメタデータを使用してフェデレーションとして構成されている
  • クレームルールにより、AD 属性が SAML アサーションに適切に変換されている
  • テストユーザーがフェデレーションフローをエンドツーエンドで認証できる
  • AD FS または Azure AD の条件付きアクセスで MFA が適用されている
  • 証明書の自動ロールオーバーが有効になっている、または手動ローテーションが予定されている
  • フェデレーションメタデータのエンドポイントにパブリックからアクセスできる
  • ブルートフォース攻撃を防ぐためにスマートロックアウトが構成されている
  • AD FS でエクストラネットロックアウトポリシーが構成されている
  • AD FS の正常性と証明書の有効期限を監視するように構成されている
  • 災害復旧:マネージド認証へのフォールバックが文書化されている

参考資料

コメント