mcpField
I
implementing-zero-trust-for-saas-applications

implementing-zero-trust-for-saas-applications

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

implementing-zero-trust-for-saas-applications について

SaaS アプリケーションにゼロトラスト制御を導入するためのセキュリティ実装スキルです。ID 連携、条件付きアクセス、CASB による検出と制御、OAuth ガバナンス、SaaS のセキュリティ態勢監視を扱います。

主な機能

  1. 01ID プロバイダー経由の SaaS サインイン連携
  2. 02条件付きアクセスによる MFA と準拠デバイスの要求
  3. 03CASB によるシャドー IT の検出と管理
  4. 04OAuth 権限の確認と制限
  5. 05SaaS 設定のセキュリティ態勢監視

活用シーン

  1. 01Microsoft 365 と Salesforce のアクセス保護
  2. 02準拠していないデバイスからの SaaS アクセス遮断
  3. 03未承認 SaaS アプリの検出と制御
  4. 04過剰な OAuth 同意権限の特定

インストール

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

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill implementing-zero-trust-for-saas-applications

インストール後、Claude Code で/implementing-zero-trust-for-saas-applicationsを入力して読み込まれたか確認します。

同梱ファイル

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

LICENSE
references/
api-reference.md
scripts/
agent.py

詳細

SaaS アプリケーションにゼロトラストを実装する

使用するタイミング

  • SaaS アプリケーション(Microsoft 365、Google Workspace、Salesforce、Slack)へのアクセスを保護するとき
  • SaaS に対する MFA とデバイスの準拠を要求する条件付きアクセス ポリシーを実装するとき
  • シャドー IT の検出や、承認されていないアプリのブロックを目的に CASB を導入するとき
  • 機密性の高い SaaS データに対して、セッション単位の制御(DLP、ダウンロード制限)を適用するとき
  • OAuth アプリケーションのアクセス許可を管理し、過剰な同意付与を検出するとき

次の用途には使用しないでください。 SaaS ネイティブのセキュリティ制御の代替(まずネイティブの制御を構成してください)、SAML/OIDC をサポートしないアプリケーション、または CASB/SSPM 向けの API 統合を SaaS ベンダーがサポートしていない場合。

前提条件

  • 条件付きアクセスに対応した ID プロバイダー:Microsoft Entra ID P1/P2、Okta
  • CASB ソリューション:Microsoft Defender for Cloud Apps、Netskope、または Zscaler CASB
  • SAML 2.0 または OIDC による SSO を構成した SaaS アプリケーション
  • デバイス準拠シグナルを取得するための MDM 登録(Intune、Jamf)
  • 機密データのカテゴリに対して定義された DLP ポリシー

ワークフロー

ステップ 1:ID プロバイダーを介して SaaS 認証をフェデレーションする

単一の IdP を介して、すべての SaaS アプリケーションの認証を一元化します。

# Configure SAML SSO for Salesforce via Entra ID
Connect-MgGraph -Scopes "Application.ReadWrite.All"

# Create enterprise application for Salesforce
$app = New-MgServicePrincipal -AppId "SALESFORCE_APP_ID" -DisplayName "Salesforce"

# Configure SAML SSO settings
$samlSettings = @{
    preferredSingleSignOnMode = "saml"
    samlSingleSignOnSettings = @{
        relayState = ""
    }
}
Update-MgServicePrincipal -ServicePrincipalId $app.Id -BodyParameter $samlSettings

# Assign user groups to the application
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $app.Id -BodyParameter @{
    principalId = "SALES_GROUP_ID"
    resourceId = $app.Id
    appRoleId = "DEFAULT_ROLE_ID"
}
ステップ 2:SaaS アプリケーション向けの条件付きアクセス ポリシーを作成する

SaaS へのアクセスを許可する前に、ID とデバイスの要件を適用します。

# Block access from non-compliant devices to sensitive SaaS apps
$policy = @{
    displayName = "ZT - Require Compliant Device for SaaS"
    state = "enabled"
    conditions = @{
        applications = @{
            includeApplications = @("SALESFORCE_APP_ID", "M365_APP_ID", "SLACK_APP_ID")
        }
        users = @{
            includeUsers = @("All")
            excludeGroups = @("BREAK_GLASS_GROUP")
        }
        clientAppTypes = @("browser", "mobileAppsAndDesktopClients")
    }
    grantControls = @{
        operator = "AND"
        builtInControls = @("mfa", "compliantDevice")
    }
    sessionControls = @{
        cloudAppSecurity = @{
            isEnabled = $true
            cloudAppSecurityType = "mcasConfigured"
        }
        signInFrequency = @{
            value = 8
            type = "hours"
            isEnabled = $true
        }
    }
}
New-MgIdentityConditionalAccessPolicy -BodyParameter $policy

# Block downloads on unmanaged devices
$downloadPolicy = @{
    displayName = "ZT - Block Downloads on Unmanaged Devices"
    state = "enabled"
    conditions = @{
        applications = @{ includeApplications = @("SHAREPOINT_APP_ID") }
        users = @{ includeUsers = @("All") }
        devices = @{
            deviceFilter = @{
                mode = "include"
                rule = "device.isCompliant -ne True -or device.trustType -ne 'ServerAD'"
            }
        }
    }
    sessionControls = @{
        cloudAppSecurity = @{
            isEnabled = $true
            cloudAppSecurityType = "mcasConfigured"
        }
    }
}
New-MgIdentityConditionalAccessPolicy -BodyParameter $downloadPolicy
ステップ 3:シャドー IT の検出とアプリのガバナンスに CASB を導入する

Microsoft Defender for Cloud Apps を構成し、SaaS の利用状況を検出して制御します。

# Query discovered cloud apps via Defender for Cloud Apps API
curl -X GET "https://api.cloudappsecurity.com/api/v1/discovery/" \
  -H "Authorization: Token ${MDCA_API_TOKEN}" \
  -H "Content-Type: application/json"

# Get list of unsanctioned apps
curl -X GET "https://api.cloudappsecurity.com/api/v1/discovery/discovered_apps/" \
  -H "Authorization: Token ${MDCA_API_TOKEN}" \
  -d '{
    "filters": {
      "appTag": {"eq": "unsanctioned"},
      "traffic": {"gte": 1000}
    },
    "sortField": "traffic",
    "sortDirection": "desc"
  }'

# Create session policy for DLP enforcement
curl -X POST "https://api.cloudappsecurity.com/api/v1/policies/" \
  -H "Authorization: Token ${MDCA_API_TOKEN}" \
  -d '{
    "name": "Block PII Upload to SaaS",
    "policyType": "SESSION",
    "severity": "HIGH",
    "enabled": true,
    "sessionPolicyType": "CONTROL_UPLOAD",
    "filters": {
      "fileType": {"eq": ["DOCUMENT", "SPREADSHEET"]},
      "contentInspection": {
        "dataType": ["CREDIT_CARD", "SSN", "PASSPORT"]
      }
    },
    "actions": {
      "block": true,
      "notify": {
        "emailRecipients": ["[email protected]"]
      }
    }
  }'
ステップ 4:OAuth アプリのガバナンスを構成する

OAuth アプリケーションのアクセス許可を確認して制限し、過剰な同意を防止します。

# Query OAuth apps with high-privilege permissions
$oauthApps = Invoke-MgGraphRequest -Method GET `
  "https://graph.microsoft.com/v1.0/servicePrincipals?\$filter=tags/any(t:t eq 'WindowsAzureActiveDirectoryIntegratedApp')&\$select=displayName,appId,oauth2PermissionScopes"

# Review consent grants
$grants = Get-MgOauth2PermissionGrant -All
$highRisk = $grants | Where-Object {
    $_.Scope -match "Mail.ReadWrite|Files.ReadWrite.All|Directory.ReadWrite.All"
}

Write-Host "High-risk OAuth grants: $($highRisk.Count)"
$highRisk | ForEach-Object {
    $sp = Get-MgServicePrincipal -ServicePrincipalId $_.ClientId
    Write-Host "  App: $($sp.DisplayName) | Scope: $($_.Scope) | Type: $($_.ConsentType)"
}

# Configure app consent policy to require admin approval
$consentPolicy = @{
    displayName = "Require Admin Approval for High-Risk Permissions"
    conditions = @{
        clientApplications = @{ includeAllClientApplications = $true }
        permissions = @{
            permissionClassification = "high"
            permissions = @(
                @{ permissionValue = "Mail.ReadWrite"; permissionType = "delegated" }
                @{ permissionValue = "Files.ReadWrite.All"; permissionType = "delegated" }
            )
        }
    }
}
ステップ 5:SaaS セキュリティ体制管理(SSPM)を実装する

SaaS のセキュリティ構成のドリフトを監査し、修正します。

# Query SaaS security posture via CASB API
curl -X GET "https://api.cloudappsecurity.com/api/v1/security_config/" \
  -H "Authorization: Token ${MDCA_API_TOKEN}" \
  -d '{"app": "Microsoft 365"}'

# Common SSPM checks:
# - MFA enforcement for all admin accounts
# - External sharing restrictions in SharePoint/OneDrive
# - Email forwarding rules to external domains blocked
# - Idle session timeout configured (< 8 hours)
# - Legacy authentication protocols disabled
# - Admin consent workflow enabled
# - Conditional access policies active
# - Audit logging enabled for all services

主な概念

用語定義
CASBCloud Access Security Broker。ユーザーと SaaS アプリケーションの間でセキュリティ ポリシーを適用する仲介サービス
SSPMSaaS Security Posture Management。SaaS アプリケーションのセキュリティ構成を継続的に監視すること
OAuth ガバナンスOAuth の同意フローを通じて付与されたサードパーティ アプリケーションのアクセス許可を確認、制御すること
セッション制御SaaS のアクティブなセッション中に適用するリアルタイムのアクセス制限(ダウンロードのブロック、DLP 検査、電子透かし)
シャドー ITIT の承認やセキュリティ審査を受けずに従業員が使用する、許可されていない SaaS アプリケーション
条件付きアクセスSaaS へのアクセスを許可する前に、ID、デバイス、場所、リスクのシグナルを評価するポリシー エンジン

ツールとシステム

  • Microsoft Defender for Cloud Apps:シャドー IT の検出、セッション制御、DLP、SSPM を提供する CASB
  • Microsoft Entra ID Conditional Access:SaaS アプリケーションへの ID ベースのアクセス制御を行うポリシー エンジン
  • Netskope CASB:インラインおよび API ベースの SaaS セキュリティ制御を備えたクラウドネイティブ CASB
  • Okta Identity Governance:SaaS アプリケーション向けの OAuth アプリ ガバナンスとアクセス認定
  • SSPM ツール:SaaS 構成の監視に使用する AppOmni、Adaptive Shield、Valence Security

よくあるシナリオ

シナリオ:1,000 ユーザーの組織における Microsoft 365 と Salesforce のセキュリティ確保

コンテキスト:従業員 1,000 人のプロフェッショナルサービス企業が、Microsoft 365、Salesforce、Slack、その他 20 以上の SaaS アプリを利用しています。業界で複数のデータ侵害が発生したことを受け、すべての SaaS アクセスを対象とするゼロトラストの取り組みを進めています。

アプローチ:

  1. SAML SSO を使用して、すべての SaaS 認証を Entra ID 経由でフェデレーションします
  2. すべての SaaS アプリで MFA と準拠デバイスを必須とする条件付きアクセス ポリシーを作成します
  3. シャドー IT の検出のために Defender for Cloud Apps を導入します(未承認のアプリを 150 個以上特定します)
  4. 未承認のアプリを未許可としてマークし、SWG/プロキシ経由でブロックします
  5. セッション制御を設定します:管理されていないデバイスでのダウンロードをブロックし、ファイルアップロードに DLP を適用します
  6. OAuth アプリのアクセス許可を確認します:リスクの高い同意付与を 45 件取り消し、管理者承認ワークフローを有効にします
  7. Microsoft 365 と Salesforce の構成に対する SSPM の監視を有効にします
  8. セキュリティ責任者向けに、週次の自動セキュリティ態勢レポートを設定します

注意点:条件付きアクセス ポリシーでは、緊急用アカウントを除外する必要があります。一部のレガシー SaaS アプリは、最新の認証方式に対応していない場合があります。セッション制御にはプロキシベースの CASB が必要で、パフォーマンスに影響する可能性があります。OAuth アプリのアクセス許可を取り消すと連携が機能しなくなる場合があるため、事前にアプリの所有者と調整してください。

出力形式

Zero Trust SaaS Security Report
==================================================
Organization: ProServices Corp
Report Date: 2026-02-23

SAAS INVENTORY:
  Sanctioned Apps: 25
  Unsanctioned (blocked): 127
  Shadow IT Users: 342 (discovered in last 30 days)

CONDITIONAL ACCESS:
  Policies active: 8
  Sign-ins evaluated: 456,789
  Blocked by policy: 2,345 (0.5%)
  MFA enforced: 100% of sign-ins

DEVICE COMPLIANCE:
  Compliant device required: All 25 sanctioned apps
  Sign-ins from compliant: 448,123 (98.1%)
  Sign-ins blocked (non-compliant): 8,666

CASB / DLP:
  DLP violations detected: 89
  Files blocked from upload: 34
  Downloads blocked (unmanaged): 1,234

OAUTH GOVERNANCE:
  Total OAuth apps: 312
  High-risk permissions: 12 (reviewed)
  Revoked consents: 45
  Pending admin approval: 8

SSPM FINDINGS:
  Critical misconfigurations: 3
  High: 7
  Medium: 15
  Remediated this month: 18

コメント