本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為在 Amazon EKS 上執行的應用程式設定相互 TLS 身份驗證
創建者:馬亨德拉·西達帕 (AWS)
環境:PoC 或試點 | 技術: DevOps; 安全性,身份,合規性 | AWS 服務:Amazon EKS;Amazon Route 53 |
Summary
憑證型相互傳輸層安全性 (TLS) 是選用的 TLS 元件,可在伺服器與用戶端之間提供雙向對等驗證。使用相互 TLS 時,用戶端必須在工作階段交涉程序期間提供 X.509 憑證。伺服器會使用此憑證來識別和驗證用戶端。
相互 TLS 是物聯網(IoT)應用程序的常見要求,可用於開放銀行等 business-to-business 應用程序或標準。
此模式說明如何使用 NGINX 輸入控制器,為在 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集上執行的應用程式設定相互 TLS。您可以透過註解輸入資源,為 NGINX 輸入控制器啟用內建的相互 TLS 功能。如需有關 NGINX 控制器上相互 TLS 註解的詳細資訊,請參閱 Kubernetes 文件中的用戶端憑證驗證
重要:此模式使用自我簽署憑證。我們建議您僅在測試叢集中使用此模式,而不要在生產環境中使用。如果您想要在生產環境中使用此模式,可以使用 AWS 私有憑證授權單位 (AWS Private CA) 或現有的公開金鑰基礎設施 (PKI) 標準來發行私有憑證。
先決條件和限制
先決條件
有效的 Amazon Web Services (AWS) 帳戶。
現有 Amazon EKS 叢集。
AWS Command Line Interface (AWS CLI) (AWS CLI) 1.7 版或更新版本,可在 macOS、Linux 或視窗上安裝和設定。
kubectl 命令列公用程式已安裝並設定為存取 Amazon EKS 叢集。如需這方面的詳細資訊,請參閱 Amazon EKS 文件中的安裝 kubectl。
用於測試應用程式的現有網域名稱系統 (DNS) 名稱。
限制
此模式使用自我簽署憑證。我們建議您僅在測試叢集中使用此模式,而不要在生產環境中使用。
架構
技術堆疊
Amazon EKS
Amazon Route 53
庫貝克特爾
工具
Amazon Elastic Kubernetes Service (Amazon EKS) 可協助您在 AWS 上執行 Kubernetes,而無需安裝或維護自己的 Kubernetes 控制平面或節點。
Amazon Route 53 是一種可用性高、可擴展性強的 DNS Web 服務。
Kubectl 是您用來與 Amazon EKS 叢集互動的命令列公用程式。
史诗
任務 | 描述 | 所需技能 |
---|---|---|
產生 CA 金鑰和憑證。 | 執行下列命令,產生憑證授權單位 (CA) 金鑰和憑證。
| DevOps 工程師 |
產生伺服器金鑰和憑證,並使用 CA 憑證簽署。 | 產生伺服器金鑰和憑證,並執行下列命令以 CA 憑證簽署。
重要事項:請務必以現 | DevOps 工程師 |
產生用戶端金鑰和憑證,並使用 CA 憑證簽署。 | 產生用戶端金鑰和憑證,並執行下列命令以 CA 憑證簽署。
| DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
在您的 Amazon EKS 叢集中部署 NGINX 輸入控制器。 | 使用下列指令部署 NGINX 入口控制器。
| DevOps 工程師 |
確認 NGINX 輸入控制器服務正在執行。 | 使用下列命令確認 NGINX 入口控制器服務是否正在執行。
重要:請確定服務位址欄位包含網路負載平衡器的網域名稱。 | DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
在 Amazon EKS 叢集中建立命名空間。 | 執行下列命令,建立
這會部署範例應用程式以測試相互 TLS。 | DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
在 mtls 命名空間中建立 Kubernetes 部署和服務。 | 建立名為
執行下列命令,在
| DevOps 工程師 |
確認已建立 Kubernetes 部署。 | 執行下列命令以確認已建立部署,並且有一個網繭處於可用狀態。
| DevOps 工程師 |
確認已建立 Kubernetes 服務。 | 請執行下列命令,確認是否已建立 Kubernetes 服務。
| DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
為輸入資源建立密碼。 | 執行下列命令,使用您先前建立的憑證,為 NGINX 輸入控制器建立密碼。
您的密碼具有用於用戶端識別伺服器的伺服器憑證,以及伺服器用來驗證用戶端憑證的 CA 憑證。 | DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
在 mtls 命名空間中建立輸入資源。 | 建立名為
執行下列命令,在命
這表示 NGINX 入口控制器可以將流量路由到您的範例應用程式。 | DevOps 工程師 |
確認已建立輸入資源。 | 執行下列命令,確認輸入資源是否已建立。
重要:請確定輸入資源的位址顯示為 NGINX 輸入控制器建立的負載平衡器。 | DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
建立指向 NGINX 輸入控制器之負載平衡器的 CNAME 記錄。 | 登入 AWS 管理主控台,開啟 Amazon Route 53 主控台,然後建立指 如需詳細資訊,請參閱 Route 53 說明文件中的使用 Route 53 主控台建立記錄。 | DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
測試不使用憑證的相互 TLS 設定。 | 執行下列命令。
您應該會收到「400 未傳送必要的 SSL 憑證」錯誤回應。 | DevOps 工程師 |
使用憑證測試相互 TLS 設定。 | 執行下列命令。
您應該收到「MTL 正在工作」的響應。 | DevOps 工程師 |