本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS工作負載登入資料提供者
AWS工作負載登入資料提供者會自動使用從 ACM 匯出的公有和私有 TLS 憑證。提供者會定期擷取憑證及其私有金鑰、將它們寫入設定的路徑,並選擇性地執行命令以重新載入相依服務,例如 Web 伺服器。
您可以搭配下列運算環境使用工作負載登入資料提供者:
-
Amazon Elastic Compute Cloud (Amazon EC2)
-
具有AWS登入資料的現場部署伺服器
工作負載登入資料提供者使用 IAM 角色假設來擷取憑證。它以原生方式在 Linux 和 Windows 上以系統服務的形式在專用低權限使用者下執行,並寫入許可受限的憑證檔案。
重要
只有可匯出的憑證才能與此提供者搭配使用。如需詳細資訊,請參閱AWS Certificate Manager 可匯出的公有憑證和匯出私有憑證。
AWS工作負載登入資料提供者是開放原始碼。如需原始程式碼和貢獻,請參閱 GitHub 儲存庫
憑證自動化的運作方式
供應商使用排程器,以固定間隔重新整理每個設定的憑證:
-
重新整理間隔為 24 小時。
-
在每個週期中,供應商會匯出憑證、將其與磁碟上的檔案進行比較,並只在內容變更時寫入新檔案。
-
憑證檔案更新時,設定的
refresh_command執行 (例如,重新載入 NGINX 或 Apache)。 -
如果憑證內容未變更,則會略過重新整理命令。
提供者會在每次系統開機時以及服務啟動後不久執行初始重新整理,並附帶一個小的隨機抖動,以避免多個提供者在機群中同時啟動時同步 API 呼叫。
提供者也支援動態組態重新載入,可讓您新增、移除或修改憑證,而無需重新安裝。如需詳細資訊,請參閱動態組態重新載入。
先決條件
安裝提供者之前,請確定您有下列項目:
-
具有 systemd 的 Linux 執行個體 (Amazon Linux 2023、Ubuntu 20.04+ 或 RHEL 8+)
-
或使用 PowerShell 5.1 或更新版本執行 Windows Server 2016 或更新版本的 Windows 執行個體
-
執行安裝程式的管理員存取權
-
ACM 中的可匯出憑證
-
具有 ACM 匯出許可的 IAM 角色 (請參閱 所需的許可)
-
AWS執行個體上可用的登入資料 (執行個體描述檔、環境變數或登入資料檔案)
安裝提供者
設定提供者
使用憑證詳細資訊建立 TOML 組態檔案。當您使用 --config選項/etc/aws-workload-credentials-provider/config.toml時,安裝程式會將此檔案複製到 。
注意
省略 chain_path 時,憑證鏈會附加到 的 檔案certificate_path,以產生全鏈檔案。這與預期包含憑證及其鏈的單一檔案的 Web 伺服器相容。
動態組態重新載入
您可以執行 acm reload命令來更新提供者的組態,而無需重新安裝。這會驗證新組態、更新許可以符合新的憑證路徑,並重新啟動服務。
從組態中移除的憑證會停止重新整理。新憑證會立即開始第一次匯出。每個憑證都會做為獨立任務執行,因此其中的失敗不會影響其他憑證。
所需的許可
基本登入資料
供應商的基本登入資料 (執行個體描述檔或環境) 必須能夠擔任每個憑證的 中指定的角色role_arn:
{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/ACMExportRole" }
憑證匯出角色
在 中指定的角色role_arn需要下列許可:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "acm:ExportCertificate", "Resource": "arn:aws:acm:us-west-2:123456789012:certificate/*" } ] }
角色的信任政策必須允許提供者的基本身分擔任該角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/EC2InstanceRole" }, "Action": "sts:AssumeRole" } ] }
重新整理命令許可 (Linux)
在 Linux 上,提供者會執行refresh_command透過 設定的 sudo。安裝程式會在 產生 sudoers 項目/etc/sudoers.d/aws-workload-credentials-provider,允許提供者使用者在沒有密碼提示的情況下執行確切設定的命令。
重要
確保 /etc/sudoers包含 /etc/sudoers.d目錄。如果這包含指令不存在,安裝程式會發出警告。如果沒有它,產生的 sudoers 檔案就沒有效果,重新整理命令將會失敗。
在 Windows 上,提供者會將 觸發refresh_command為 SYSTEM 排程任務。
驗證安裝
安裝之後,請確認提供者正在執行,且正在寫入憑證:
組態參考
| 欄位 | 必要 | 預設 | 說明 |
|---|---|---|---|
logging.log_level |
否 | info |
記錄詳細資訊:debug、info、warn、error、 none |
logging.log_to_file |
否 | true |
將日誌寫入檔案 (true) 或 stdout/stderr (false) |
capabilities.acm.enabled |
否 | false |
啟用或停用 ACM 功能 |
certificates[].certificate_arn |
是 | — | 要匯出之 ACM 憑證的 ARN |
certificates[].role_arn |
是 | — | 要為ExportCertificate呼叫擔任的 IAM 角色 ARN |
certificates[].certificate_path |
是 | — | 寫入憑證檔案的絕對路徑 |
certificates[].private_key_path |
是 | — | 寫入私有金鑰檔案的絕對路徑 |
certificates[].chain_path |
否 | — | 寫入憑證鏈的絕對路徑。如果省略,鏈會附加到 certificate_path |
certificates[].refresh_command |
否 | — | 憑證檔案更新後要執行的命令。必須是絕對路徑 |
certificates[].certificate_and_chain_permission |
否 | 0600 |
cert 和 chain 檔案的檔案許可 (Linux mode 格式) |
certificates[].key_permission |
否 | 0600 |
私有金鑰檔案的檔案許可 (Linux mode 格式) |
記錄
在 Linux 上,提供者會記錄到 /opt/aws/workload-credentials-provider/logs/acm_provider.log。
在 Windows 上,提供者會記錄到 C:\ProgramData\AWS\WorkloadCredentialsProvider\logs\acm_provider.log。服務啟動和停止事件也會記錄在來源 下的 Windows 應用程式事件日誌中AWSWorkloadCredentialsProvider-ACM。
日誌輪換 — 當目前的檔案達到 10 MB 時,提供者會建立新的日誌檔案,並儲存最多五個封存的日誌檔案。
AWS服務記錄 — 當提供者呼叫 時ExportCertificate,該呼叫會以包含 的使用者代理程式字串記錄在AWSCloudTrail 中aws-workload-credentials-provider。提供者的內部操作 (排程器週期、檔案寫入) 只會出現在本機日誌中。
您可以使用 log_level和 log_to_file設定來設定記錄。如需詳細資訊,請參閱組態參考。