<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Teleport on Tarragon</title><link>https://tarrragon.github.io/blog/tags/teleport/</link><description>Recent content in Teleport on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Mon, 18 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/teleport/index.xml" rel="self" type="application/rss+xml"/><item><title>Teleport</title><link>https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/teleport/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/teleport/</guid><description>&lt;p>Teleport 是 &lt;em>Identity-Aware Proxy + PAM&lt;/em>（Privileged Access Management）、把 SSH / Database / Kubernetes / Windows Desktop / Cloud API / 內部 web app 的 &lt;em>privileged session&lt;/em> 統一收到一個 zero-trust 入口、所有 session 改走 &lt;em>short-lived cert + per-session MFA + 全程錄影&lt;/em>、取代傳統「long-lived SSH key + bastion + 手動 audit」。它跟 &lt;a href="https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/okta/" data-link-title="Okta" data-link-desc="SaaS Identity Provider 主流選項、SSO / MFA / lifecycle 整合、第三方信任邊界的代價">Okta&lt;/a> 是兩層職責 — Okta 認證 &lt;em>人是誰&lt;/em>、Teleport 控制 &lt;em>拿到身份後 privileged session 怎麼進、留什麼證據&lt;/em>；典型部署是 &lt;em>Okta SSO into Teleport、Teleport proxies SSH/DB/K8s session&lt;/em>。&lt;/p>
&lt;h2 id="服務定位">服務定位&lt;/h2>
&lt;p>Teleport 的核心定位是 &lt;em>infrastructure access plane&lt;/em>、不是 IdP、不是 secret store、也不是 network mesh。它的責任是 &lt;em>把 admin / engineer 對 production 資源的 session 通通走可治理的入口&lt;/em>、每個 session 有 &lt;em>identity-bound short-lived cert&lt;/em>、有 &lt;em>audit log&lt;/em>、有 &lt;em>錄影&lt;/em>、有 &lt;em>MFA gate&lt;/em>。比較對象：&lt;/p>
&lt;ul>
&lt;li>跟 &lt;a href="https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/okta/" data-link-title="Okta" data-link-desc="SaaS Identity Provider 主流選項、SSO / MFA / lifecycle 整合、第三方信任邊界的代價">Okta&lt;/a> / Azure AD 等 IdP 比、Teleport 不取代 SSO、而是 &lt;em>把 SSO identity 帶到 infrastructure layer&lt;/em> — Okta 給 user identity + group、Teleport 把這個 identity 翻譯成 SSH cert / DB cert / K8s cert&lt;/li>
&lt;li>跟傳統 bastion + SSH key 比、Teleport 把 &lt;em>long-lived SSH key&lt;/em> 換成 &lt;em>short-lived cert&lt;/em>（預設 TTL 數小時、過期自動失效）、把 &lt;em>看不到的 session&lt;/em> 換成 &lt;em>全程錄影 + searchable audit log&lt;/em>&lt;/li>
&lt;li>跟 HashiCorp Boundary 比、Teleport 走 &lt;em>protocol-aware proxy&lt;/em>（懂 SSH / PostgreSQL / Kubernetes API 協議、可以 decode keystroke 跟 query）、Boundary 走 &lt;em>generic TCP proxy&lt;/em>（協議無感、不能錄 keystroke 但部署更輕）&lt;/li>
&lt;li>跟 Tailscale SSH 比、Tailscale 是 &lt;em>network mesh 加 SSH&lt;/em>、適合小團隊 flat network；Teleport 是 &lt;em>PAM + 多協議 + 跨環境 audit&lt;/em>、適合需要 SOC handoff 的環境&lt;/li>
&lt;li>跟 &lt;a href="https://tarrragon.github.io/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &amp;#43; DDoS &amp;#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare Access&lt;/a> 比、Cloudflare Access 是 &lt;em>application-layer ZTNA&lt;/em>（內部 web app / API 用）、Teleport 是 &lt;em>infrastructure-layer ZTNA&lt;/em>（SSH / DB / K8s 用）、兩者互補&lt;/li>
&lt;/ul>
&lt;p>關鍵張力：&lt;em>PAM 的覆蓋完整度&lt;/em> ↔ &lt;em>operator 摩擦&lt;/em>。Teleport 開越多（per-session MFA、Access Request 要 approval、Device Trust 強制企業裝置）、helpdesk SE 那種「拿到密碼直接進 prod」的 blast radius 越小、但 on-call engineer 在凌晨三點修事故時的摩擦也越大。要根據 &lt;em>資源敏感度分層&lt;/em> 設定、不是一刀切。&lt;/p></description><content:encoded><![CDATA[<p>Teleport 是 <em>Identity-Aware Proxy + PAM</em>（Privileged Access Management）、把 SSH / Database / Kubernetes / Windows Desktop / Cloud API / 內部 web app 的 <em>privileged session</em> 統一收到一個 zero-trust 入口、所有 session 改走 <em>short-lived cert + per-session MFA + 全程錄影</em>、取代傳統「long-lived SSH key + bastion + 手動 audit」。它跟 <a href="/blog/backend/07-security-data-protection/vendors/okta/" data-link-title="Okta" data-link-desc="SaaS Identity Provider 主流選項、SSO / MFA / lifecycle 整合、第三方信任邊界的代價">Okta</a> 是兩層職責 — Okta 認證 <em>人是誰</em>、Teleport 控制 <em>拿到身份後 privileged session 怎麼進、留什麼證據</em>；典型部署是 <em>Okta SSO into Teleport、Teleport proxies SSH/DB/K8s session</em>。</p>
<h2 id="服務定位">服務定位</h2>
<p>Teleport 的核心定位是 <em>infrastructure access plane</em>、不是 IdP、不是 secret store、也不是 network mesh。它的責任是 <em>把 admin / engineer 對 production 資源的 session 通通走可治理的入口</em>、每個 session 有 <em>identity-bound short-lived cert</em>、有 <em>audit log</em>、有 <em>錄影</em>、有 <em>MFA gate</em>。比較對象：</p>
<ul>
<li>跟 <a href="/blog/backend/07-security-data-protection/vendors/okta/" data-link-title="Okta" data-link-desc="SaaS Identity Provider 主流選項、SSO / MFA / lifecycle 整合、第三方信任邊界的代價">Okta</a> / Azure AD 等 IdP 比、Teleport 不取代 SSO、而是 <em>把 SSO identity 帶到 infrastructure layer</em> — Okta 給 user identity + group、Teleport 把這個 identity 翻譯成 SSH cert / DB cert / K8s cert</li>
<li>跟傳統 bastion + SSH key 比、Teleport 把 <em>long-lived SSH key</em> 換成 <em>short-lived cert</em>（預設 TTL 數小時、過期自動失效）、把 <em>看不到的 session</em> 換成 <em>全程錄影 + searchable audit log</em></li>
<li>跟 HashiCorp Boundary 比、Teleport 走 <em>protocol-aware proxy</em>（懂 SSH / PostgreSQL / Kubernetes API 協議、可以 decode keystroke 跟 query）、Boundary 走 <em>generic TCP proxy</em>（協議無感、不能錄 keystroke 但部署更輕）</li>
<li>跟 Tailscale SSH 比、Tailscale 是 <em>network mesh 加 SSH</em>、適合小團隊 flat network；Teleport 是 <em>PAM + 多協議 + 跨環境 audit</em>、適合需要 SOC handoff 的環境</li>
<li>跟 <a href="/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &#43; DDoS &#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare Access</a> 比、Cloudflare Access 是 <em>application-layer ZTNA</em>（內部 web app / API 用）、Teleport 是 <em>infrastructure-layer ZTNA</em>（SSH / DB / K8s 用）、兩者互補</li>
</ul>
<p>關鍵張力：<em>PAM 的覆蓋完整度</em> ↔ <em>operator 摩擦</em>。Teleport 開越多（per-session MFA、Access Request 要 approval、Device Trust 強制企業裝置）、helpdesk SE 那種「拿到密碼直接進 prod」的 blast radius 越小、但 on-call engineer 在凌晨三點修事故時的摩擦也越大。要根據 <em>資源敏感度分層</em> 設定、不是一刀切。</p>
<h2 id="本章目標">本章目標</h2>
<p>讀完本頁、讀者能判斷：</p>
<ol>
<li>Teleport 在 access stack 中承擔哪一段（infrastructure session）、哪些不屬於它（user identity 屬 Okta、long-lived service secret 屬 <a href="/blog/backend/07-security-data-protection/vendors/hashicorp-vault/" data-link-title="HashiCorp Vault" data-link-desc="Self-hosted secret management 與 dynamic credential / encryption-as-a-service / PKI engine、跨雲跨環境的 secret 控制面">Vault</a>、application access 可用 Cloudflare Access）</li>
<li>Cluster / Proxy / Auth Service / Node 拓樸的部署選擇（Cloud SaaS vs Self-hosted、Trusted Cluster 跨環境）</li>
<li>Roles + Access Requests + Per-session MFA + Session Recording 四件套的工程化設定（誰能 approve、TTL 多長、錄影存哪）</li>
<li>何時用 Teleport、何時走 Boundary / Tailscale SSH / Cloudflare Access 的取捨</li>
</ol>
<h2 id="最短判讀路徑">最短判讀路徑</h2>
<p>判斷 Teleport deployment 是否健康、最少看四件事：</p>
<ul>
<li><strong>是否還有 long-lived credential 旁路</strong>：production host 是否仍接受 <code>~/.ssh/authorized_keys</code> 的長期 key、DB 是否仍有 shared admin password、K8s kubeconfig 是否還在 engineer laptop 永存 — Teleport 收編失敗的最大訊號是 <em>存在 bypass Teleport 的捷徑</em></li>
<li><strong>Per-session MFA 是否對 sensitive resource 強制</strong>：prod SSH / prod DB / payment system 進 session 時是否每次都 re-MFA、不是「早上登入一次後 8 小時都通行」、role 設定有沒有 <code>require_session_mfa: true</code></li>
<li><strong>Access Request 的 standing privilege 是否收零</strong>：日常 role 是否只有 read-only、所有 write / admin operation 是否走 <em>Access Request</em> + approver gate + TTL、approver 是否 SOC / SRE on-call 而非任意 lead</li>
<li><strong>Session Recording 是否真的可回查</strong>：SSH / K8s / DB session 錄影是否落地 S3 / GCS、是否可在 audit log 透過 user / time / resource 三軸搜尋並回放、recording retention 是否符合合規（金融通常 7 年）</li>
</ul>
<p>四件事任一缺失、就回到 <a href="/blog/backend/07-security-data-protection/identity-access-boundary/" data-link-title="7.2 身分與授權邊界" data-link-desc="以問題驅動方式整理身分、授權、會話與供應商身分鏈">7.2 身分與授權邊界</a> 補設定。最容易踩的是第三點 — Teleport 裝了但日常 role 仍給 standing admin、Access Request 變裝飾、helpdesk SE 場景的 mitigation 等於沒上。</p>
<h2 id="日常操作與決策形狀">日常操作與決策形狀</h2>
<p><strong>Cluster + Proxy + Auth Service 拓樸</strong>：Teleport cluster 由三個 first-class component 組成 — <em>Auth Service</em>（CA、簽 cert、存 audit log、policy decision point）、<em>Proxy</em>（user 連線入口、做 protocol translation、把 SSH / DB / K8s request 轉到 Node）、<em>Node</em>（被保護的資源、裝 Teleport agent 或走 agentless 模式）。Cloud（SaaS）把 Auth + Proxy 託管、客戶只管 Node；Self-hosted 三層都自管、適合需要 data residency / FedRAMP 的環境。</p>
<p><strong>多協議 Resource Access</strong>：Teleport 是 <em>protocol-aware proxy</em>、不是 generic TCP tunnel — SSH Access 懂 OpenSSH、Database Access 懂 PostgreSQL / MySQL / MongoDB / Snowflake / Redis wire protocol、Kubernetes Access 懂 K8s API + RBAC impersonation、Desktop Access 懂 RDP、Application Access 懂 HTTP（包 AWS / GCP console 跟內部 web app）。協議感知的價值是 <em>可以錄 keystroke / query / 滑鼠移動</em>、可以做 <em>per-query approval</em>（DB Access 可設「DROP TABLE 要 approver」）、generic proxy 做不到。</p>
<p><strong>Roles + RBAC</strong>：Teleport role 是 YAML 定義的 RBAC policy、控制 <em>誰可以連哪些 resource、用什麼 OS user、執行什麼指令、session TTL 多長、要不要 per-session MFA</em>。Role 跟 Okta group 透過 SAML / OIDC attribute mapping 綁定 — Okta <code>group=sre-prod</code> 自動拿到 Teleport <code>role=prod-ssh-readonly</code>、不用 Teleport 端維護 user list。</p>
<p><strong>Access Requests（JIT approval）</strong>：standing privilege 收零的核心機制 — engineer 平常只有 read-only role、需要 write / admin 時透過 CLI / web UI 開 <em>Access Request</em>、指定 role + reason + TTL、approver 在 Slack / web 收到通知後 approve / deny、approve 後該 user 拿到該 role TTL（例如 4 小時）、過期自動 revoke。對應 <a href="/blog/backend/07-security-data-protection/red-team/cases/identity-access/mgm-2023-identity-lateral-impact/" data-link-title="7.R7.1.4 MGM 2023：身分流程被打穿後的營運中斷" data-link-desc="社交工程造成身分邊界失守後，如何演變成可用性與營運衝擊">MGM 2023</a> 的 mitigation — 即使 helpdesk SE 拿到 user 密碼、該 user 也沒有 standing admin 可用、要進 prod 必須額外開 Access Request + approver 看到 reason 異常會 deny。</p>
<p><strong>Per-session MFA</strong>：高敏 session 強制每次連線都 re-MFA、不是登入一次後 session TTL 內都通行。role 設 <code>require_session_mfa: true</code>、user <code>tsh ssh prod-db-01</code> 時會跳 Yubikey / WebAuthn 提示、過了才連得進去。對應 <a href="/blog/backend/07-security-data-protection/red-team/cases/identity-access/uber-2022-mfa-fatigue/" data-link-title="7.R7.1.1 Uber 2022：MFA 疲勞與內部工具擴散" data-link-desc="從社交工程到內部工具存取，拆解身分流程與權限邊界的失效點">Uber 2022 MFA Fatigue</a> 的 lesson — 即使 attacker 用 push fatigue 拿到 IdP session、要進 prod infrastructure 還會撞到第二道 MFA。</p>
<p><strong>Session Recording + Audit</strong>：所有 SSH / K8s / DB / Desktop session 全程錄影、SSH 錄 keystroke + output、DB 錄 SQL query、K8s 錄 API call、Desktop 錄畫面。錄影預設存 Auth Service local disk、production 應該設 <em>sync mode</em> 即時寫 S3 / GCS、不要等 session 結束才上傳（attacker 結束前 wipe）。Audit log 走結構化 JSON、可 export 到 <a href="/blog/backend/07-security-data-protection/vendors/splunk/" data-link-title="Splunk" data-link-desc="業界 SIEM 標準、forwarder &#43; indexer &#43; search head 架構、SPL 為核心查詢語言、ingestion-based 計費跟偵測覆蓋率的 trade-off">Splunk</a> / Elastic、是 SOC 的 first-class signal。</p>
<p><strong>Trusted Cluster 跨環境 federation</strong>：dev / staging / prod 各自跑 Teleport cluster、用 <em>Trusted Cluster</em> 建立信任關係、user 從 root cluster 一次 login 就能 <code>tsh ssh --cluster=prod node-01</code>、不用每個環境各 login。設計重點是 <em>root cluster 是 SSO + 政策中心、leaf cluster 是各環境本地控制</em>、leaf 出事不會把 root identity 拖下水。</p>
<p><strong>跟 Okta / GitHub OIDC SSO 整合</strong>：Teleport 不做 user identity、authentication 全部委派給 IdP — Okta 設 SAML app、Teleport 設 SAML connector、user <code>tsh login</code> 跳 Okta 認證後拿 Teleport short-lived cert。GitHub Actions 也可以用 OIDC token 換 Teleport cert（給 CI 用、見下方 Machine ID）、不用埋 GitHub Actions secret。</p>
<h2 id="核心取捨表">核心取捨表</h2>
<table>
  <thead>
      <tr>
          <th>取捨維度</th>
          <th>Teleport</th>
          <th>HashiCorp Boundary</th>
          <th>Tailscale SSH</th>
          <th>Cloudflare Access</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>主要 surface</td>
          <td>Infrastructure（SSH / DB / K8s / Desktop）</td>
          <td>Infrastructure（generic TCP）</td>
          <td>Network mesh + SSH</td>
          <td>Application（web app / API）</td>
      </tr>
      <tr>
          <td>協議感知</td>
          <td>強 — 懂 SSH / DB / K8s / RDP / HTTP</td>
          <td>弱 — generic TCP proxy、不解協議</td>
          <td>弱 — SSH 為主、其他靠 network</td>
          <td>HTTP-only</td>
      </tr>
      <tr>
          <td>Short-lived cert</td>
          <td>強 — 各協議都有專屬 cert（SSH / DB / K8s）</td>
          <td>中 — 主要靠 Vault credential broker</td>
          <td>中 — SSH cert by Tailscale CA</td>
          <td>N/A（HTTP token）</td>
      </tr>
      <tr>
          <td>Session 錄影</td>
          <td>全程 keystroke / query / 畫面</td>
          <td>TCP-level 連線 metadata、不錄內容</td>
          <td>基本 SSH log、不錄 keystroke</td>
          <td>HTTP request log</td>
      </tr>
      <tr>
          <td>JIT access</td>
          <td>Access Request + approver + TTL</td>
          <td>Vault dynamic credential lease</td>
          <td>ACL tag、無 approver workflow</td>
          <td>Policy + identity gate</td>
      </tr>
      <tr>
          <td>Per-session MFA</td>
          <td>第一級支援、role 級別 toggle</td>
          <td>透過 Vault MFA、間接</td>
          <td>透過 Tailscale identity、間接</td>
          <td>App-level MFA（透過 Cloudflare）</td>
      </tr>
      <tr>
          <td>部署模型</td>
          <td>Cloud SaaS / Self-hosted（含 air-gapped）</td>
          <td>Self-hosted（OSS）+ HCP Boundary（SaaS）</td>
          <td>SaaS only</td>
          <td>SaaS only（Cloudflare 邊緣）</td>
      </tr>
      <tr>
          <td>計費</td>
          <td>Per protected resource + MAU、Cloud / Self</td>
          <td>跟 Vault Enterprise 綁定</td>
          <td>Per user / device</td>
          <td>Per user</td>
      </tr>
      <tr>
          <td>適合場景</td>
          <td>需要 PAM + audit + JIT 的 admin session 治理</td>
          <td>已是 Vault 重度使用者、generic TCP 多</td>
          <td>小團隊 flat network、SSH 為主</td>
          <td>內部 web app / API 走 ZTNA、非 infra</td>
      </tr>
      <tr>
          <td>退場成本</td>
          <td>中 — role YAML / Trusted Cluster 設定多</td>
          <td>中 — Boundary target 設定</td>
          <td>低 — ACL 移植性高</td>
          <td>低 — policy 簡單</td>
      </tr>
  </tbody>
</table>
<p>選 Teleport 的核心訴求：<em>多協議 infrastructure session</em> + <em>session recording + JIT + per-session MFA 是 SOC 必要證據</em> + <em>跨環境 federation</em>（dev / staging / prod / partner）+ <em>願意承擔 cluster 維運成本（self-hosted）或 SaaS 訂閱</em>。純小團隊 flat network 走 Tailscale 更輕、純內部 web app 走 Cloudflare Access 更便宜、純 Vault-driven workflow 走 Boundary 整合更順。</p>
<h2 id="進階主題">進階主題</h2>
<p><strong>Machine ID — service-to-service short-lived cert</strong>：CI / 內部 worker / cron job 也走 Teleport 拿 short-lived cert、不用埋長期 SSH key 或 DB password。Machine ID agent（<code>tbot</code>）跑在 CI runner、用 IAM role / GitHub OIDC token / Kubernetes service account 證明自己身份、Teleport 簽 short-lived SSH cert / DB cert（TTL 通常 1 小時）。對應 <a href="/blog/backend/07-security-data-protection/vendors/spire/" data-link-title="SPIRE" data-link-desc="SPIFFE Runtime Environment、attested workload identity、short-lived SVID &#43; Trust Bundle、跨組織 federation">SPIRE</a> 的 workload identity 概念、Teleport Machine ID 是 SPIRE 在 infrastructure access surface 的對等實作。</p>
<p><strong>Device Trust — 裝置驗證</strong>：除了 user identity + MFA、Teleport Enterprise 還可以強制 <em>只有企業 enrolled 裝置可以連 prod</em>。裝置透過 TPM / Secure Enclave 註冊 hardware-bound key、Teleport login 時驗證裝置 cert。對應 BYOD 風險 — 即使 attacker 拿到 user credential + MFA token、沒有企業裝置就連不進 prod。</p>
<p><strong>Moderated Session + Session Live View</strong>：高敏 session 設定 <em>需要第二人在線 moderate</em>、SOC analyst 即時看 keystroke、可以 <code>kill session</code>。對應金融 / 政府的「四眼原則」合規要求。Live View 也可以給 SOC 在 incident 進行中即時看 attacker 操作（如果 attacker 不知道被監聽）。</p>
<p><strong>FedRAMP / HIPAA / PCI compliance</strong>：Teleport Enterprise 有 FedRAMP Moderate authorization、Self-hosted 模式可部署 air-gapped 環境、audit log 滿足 HIPAA / PCI 的 access logging 要求。Cloud 版本走 SOC 2 Type II、FedRAMP 版本走 GovCloud 部署。</p>
<p><strong>跟 <a href="/blog/backend/07-security-data-protection/vendors/hashicorp-vault/" data-link-title="HashiCorp Vault" data-link-desc="Self-hosted secret management 與 dynamic credential / encryption-as-a-service / PKI engine、跨雲跨環境的 secret 控制面">Vault</a> / <a href="/blog/backend/07-security-data-protection/vendors/spire/" data-link-title="SPIRE" data-link-desc="SPIFFE Runtime Environment、attested workload identity、short-lived SVID &#43; Trust Bundle、跨組織 federation">SPIRE</a> 的職責切分</strong>：Vault 管 <em>service-to-service secret</em>（DB password、API key、PKI CA）、SPIRE 管 <em>workload identity</em>（SVID、跨服務 mTLS）、Teleport 管 <em>人類 admin session + service short-lived cert（透過 Machine ID）</em>。三者互補不重疊 — Vault 不該直接給 engineer 拿 SSH key、SPIRE 不該管 helpdesk admin 怎麼進 prod、Teleport 不該變成長期 API key 倉庫。</p>
<h2 id="排錯與失敗快速判讀">排錯與失敗快速判讀</h2>
<ul>
<li><strong>裝了 Teleport 但 engineer 還在用直接 SSH key</strong>：production host 沒收掉 <code>authorized_keys</code>、long-lived key 旁路存在 — host onboarding 流程強制走 Teleport Node enrollment、CI 跑 <code>sshd_config</code> audit 抓 <code>AuthorizedKeysFile</code></li>
<li><strong>Access Request 變裝飾、approver 秒按</strong>：approver 是同團隊 lead 沒看 reason、TTL 設 24 小時等於 standing — approver 改 SOC on-call / cross-team、TTL 預設 1-4 小時、high-impact role 強制兩人 approve</li>
<li><strong>Per-session MFA 開了但 user 抱怨太煩</strong>：所有 role 一刀切要 MFA — 分層：dev / staging role 只要登入 MFA、prod role 才 per-session MFA、payment / PII DB 加 moderated session</li>
<li><strong>Session recording 沒存到 S3、attacker 結束前 wipe</strong>：用 default async mode、recording 留在 Auth Service local — 改 <em>sync mode</em> 即時寫 S3、S3 開 object lock 防刪除</li>
<li><strong>Trusted Cluster leaf 出事拖累 root</strong>：leaf cluster admin 也有 root cluster 權限 — leaf 用獨立 role mapping、leaf admin 不繼承 root identity、leaf 出事只影響該環境</li>
<li><strong>Cloud SaaS 跨區 latency 高</strong>：team 在亞太但 Teleport Cloud 在 us-east — 選 Teleport Cloud 地區 / 改 Self-hosted 部署在自家最近 region</li>
<li><strong>Machine ID cert TTL 短導致 CI 中途失效</strong>：long-running job &gt; cert TTL — 在 job 內定期 <code>tbot</code> renew、或拉長 TTL 但收緊 IAM role binding</li>
</ul>
<h2 id="何時改走其他服務">何時改走其他服務</h2>
<table>
  <thead>
      <tr>
          <th>需求形狀</th>
          <th>改走</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>純內部 web app / API access</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &#43; DDoS &#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare Access</a>（application-layer ZTNA）</td>
      </tr>
      <tr>
          <td>小團隊 flat network + SSH</td>
          <td>Tailscale SSH（network mesh + 輕量 SSH cert）</td>
      </tr>
      <tr>
          <td>已重度使用 Vault、generic TCP 為主</td>
          <td>HashiCorp Boundary（跟 Vault credential broker 整合）</td>
      </tr>
      <tr>
          <td>Service-to-service secret 跟 long-lived</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/hashicorp-vault/" data-link-title="HashiCorp Vault" data-link-desc="Self-hosted secret management 與 dynamic credential / encryption-as-a-service / PKI engine、跨雲跨環境的 secret 控制面">HashiCorp Vault</a> / <a href="/blog/backend/07-security-data-protection/vendors/aws-secrets-manager/" data-link-title="AWS Secrets Manager" data-link-desc="AWS 原生 secret store &#43; 內建 RDS / Redshift rotation Lambda、Resource Policy 跨帳號共享、KMS 加密">AWS Secrets Manager</a></td>
      </tr>
      <tr>
          <td>Workload identity / SVID</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/spire/" data-link-title="SPIRE" data-link-desc="SPIFFE Runtime Environment、attested workload identity、short-lived SVID &#43; Trust Bundle、跨組織 federation">SPIRE</a></td>
      </tr>
      <tr>
          <td>人類 SSO / IdP</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/okta/" data-link-title="Okta" data-link-desc="SaaS Identity Provider 主流選項、SSO / MFA / lifecycle 整合、第三方信任邊界的代價">Okta</a> / <a href="/blog/backend/07-security-data-protection/vendors/keycloak/" data-link-title="Keycloak" data-link-desc="Open source self-hosted Identity Provider、Red Hat 主導、Realm-based multi-tenancy、適合資料主權與自訂 flow 需求">Keycloak</a></td>
      </tr>
      <tr>
          <td>Session audit log 進 SIEM</td>
          <td><a href="/blog/backend/07-security-data-protection/vendors/splunk/" data-link-title="Splunk" data-link-desc="業界 SIEM 標準、forwarder &#43; indexer &#43; search head 架構、SPL 為核心查詢語言、ingestion-based 計費跟偵測覆蓋率的 trade-off">Splunk</a> / <a href="/blog/backend/07-security-data-protection/vendors/elastic-security/" data-link-title="Elastic Security" data-link-desc="Elastic Stack 上的 SIEM &#43; EDR &#43; Cloud Security 套件、OSS 起源、KQL/EQL/Lucene/ES|QL 多查詢語言、resource-based pricing">Elastic Security</a></td>
      </tr>
  </tbody>
</table>
<h2 id="不在本頁內的主題">不在本頁內的主題</h2>
<ul>
<li>Teleport role YAML 完整 reference、predicate language 進階用法</li>
<li>Teleport Cloud vs Self-hosted 的 SLA / pricing 細節</li>
<li>Teleport Connect（桌面 client app）的具體操作流程</li>
<li>Air-gapped 部署的 license server 跟 update workflow</li>
<li>各協議的 wire protocol 解析（PostgreSQL / MySQL session 怎麼被 decode）</li>
</ul>
<h2 id="案例回寫">案例回寫</h2>
<p>Teleport 沒有 vendor-level 公開事故、但 07 案例庫的 identity / access 系列都是 PAM 設計的對照：</p>
<table>
  <thead>
      <tr>
          <th>案例</th>
          <th>跟 Teleport 的關係（對照啟示）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="/blog/backend/07-security-data-protection/red-team/cases/identity-access/mgm-2023-identity-lateral-impact/" data-link-title="7.R7.1.4 MGM 2023：身分流程被打穿後的營運中斷" data-link-desc="社交工程造成身分邊界失守後，如何演變成可用性與營運衝擊">MGM 2023 Identity Lateral Impact</a></td>
          <td>helpdesk SE 拿到 reset 密碼後直接進 prod admin — Teleport JIT Access Request + per-session MFA 是 first-class mitigation、standing access 收零後 SE 拿到密碼也進不了 prod</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/07-security-data-protection/red-team/cases/identity-access/uber-2022-mfa-fatigue/" data-link-title="7.R7.1.1 Uber 2022：MFA 疲勞與內部工具擴散" data-link-desc="從社交工程到內部工具存取，拆解身分流程與權限邊界的失效點">Uber 2022 MFA Fatigue</a></td>
          <td>push-based MFA fail 後 attacker 拿到 standing internal tool access — Teleport per-session MFA 是第二道 gate（即使 IdP session 被劫、進 prod infra 還要 re-MFA）+ session recording 給 SOC 事後重建</td>
      </tr>
      <tr>
          <td><a href="/blog/backend/07-security-data-protection/cases/okta-support-system-incident-2023/" data-link-title="7.C5 Okta：2023 Support System 事件" data-link-desc="支援系統憑證風險如何擴散到客戶租戶的案例。">Okta Support System 2023</a></td>
          <td>IdP 端 support tool compromise 後 attacker 拿到客戶 session token — 客戶側 Teleport audit log 仍能看到「異常 source IP / device 進 SSH session」、是 IdP 失守時的補位偵測層</td>
      </tr>
  </tbody>
</table>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>上游：<a href="/blog/backend/07-security-data-protection/identity-access-boundary/" data-link-title="7.2 身分與授權邊界" data-link-desc="以問題驅動方式整理身分、授權、會話與供應商身分鏈">7.2 身分與授權邊界</a>、<a href="/blog/backend/07-security-data-protection/secrets-and-machine-credential-governance/" data-link-title="7.6 秘密管理與機器憑證治理" data-link-desc="以問題驅動方式整理 secret、token、key 與機器身份治理">7.6 秘密管理與機器憑證治理</a></li>
<li>平行：HashiCorp Boundary / Tailscale SSH / <a href="/blog/backend/07-security-data-protection/vendors/cloudflare-waf/" data-link-title="Cloudflare WAF" data-link-desc="Edge WAF &#43; DDoS &#43; Bot management 整合套件、global anycast 網路、控制面信任邊界跟客戶側補強的對照">Cloudflare Access</a></li>
<li>互補：<a href="/blog/backend/07-security-data-protection/vendors/okta/" data-link-title="Okta" data-link-desc="SaaS Identity Provider 主流選項、SSO / MFA / lifecycle 整合、第三方信任邊界的代價">Okta</a>（IdP、user identity）、<a href="/blog/backend/07-security-data-protection/vendors/hashicorp-vault/" data-link-title="HashiCorp Vault" data-link-desc="Self-hosted secret management 與 dynamic credential / encryption-as-a-service / PKI engine、跨雲跨環境的 secret 控制面">HashiCorp Vault</a>（service secret）、<a href="/blog/backend/07-security-data-protection/vendors/spire/" data-link-title="SPIRE" data-link-desc="SPIFFE Runtime Environment、attested workload identity、short-lived SVID &#43; Trust Bundle、跨組織 federation">SPIRE</a>（workload identity）</li>
<li>偵測：<a href="/blog/backend/07-security-data-protection/vendors/splunk/" data-link-title="Splunk" data-link-desc="業界 SIEM 標準、forwarder &#43; indexer &#43; search head 架構、SPL 為核心查詢語言、ingestion-based 計費跟偵測覆蓋率的 trade-off">Splunk</a> / <a href="/blog/backend/07-security-data-protection/vendors/elastic-security/" data-link-title="Elastic Security" data-link-desc="Elastic Stack 上的 SIEM &#43; EDR &#43; Cloud Security 套件、OSS 起源、KQL/EQL/Lucene/ES|QL 多查詢語言、resource-based pricing">Elastic Security</a>（session audit log 入 SIEM）</li>
<li>跨模組：<a href="/blog/backend/08-incident-response/vendors/" data-link-title="事故處理 Vendor 清單" data-link-desc="規劃 on-call、incident response、status page 與 postmortem 工具的服務頁撰寫順序與判準">8 事故處理 vendor 清單</a>（compromise session 走 IR workflow）</li>
<li>官方：<a href="https://goteleport.com/docs/">Teleport Documentation</a></li>
</ul>
]]></content:encoded></item></channel></rss>