透過外部程序取得憑證 - AWS Command Line Interface

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

透過外部程序取得憑證

警告

本主題討論從外部程序取得憑證。如果用於產生憑證的命令可由未經核准的程序或使用者所存取,這可能會有安全風險。我們建議您使用 AWS CLI 和 AWS 提供的受支援安全替代方案,以降低憑證洩露的風險。務必保護 config 檔案及任何支援檔案和工具,以防止洩露。

請確認您的自訂憑證工具不會將任何秘密資訊寫入 StdErr,因為軟體開發套件和 AWS CLI 可以擷取和記錄這類資訊,進而可能會將其暴露給未經授權的使用者。

如果您有方法產生或查詢 AWS CLI 不直接支援的憑證,您可以在 config 檔案中設定 credential_process 設定,以便設定 AWS CLI 來使用這些憑證。

例如,您在 config 檔案中可能包含類似以下的項目。

[profile developer] credential_process = /opt/bin/awscreds-custom --username helen
語法

若要以與任何作業系統相容的方式建立此字串,請遵循這些規則:

  • 如果路徑或檔案名稱包含空格,完整的路徑和檔案名稱請以雙引號 (「」) 括住。路徑和檔案名稱只能包含字元:A-Z a-z 0-9 – _. 空格

  • 如果參數名稱或參數值包含空格,則該元素請以雙引號 (「」) 括住。僅括住名稱或值,而非對組。

  • 請勿在字串中包含任何環境變數。例如,您無法包含 $HOME%USERPROFILE%

  • 請勿將主資料夾指定為 ~。您必須指定完整路徑。

適用於 Windows 的範例

credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"

適用於 Linux 或 macOS 的範例

credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"

登入資料程式的預期輸出

AWS CLI 執行描述檔中指定的命令,然後從 STDOUT 讀取資料。您指定的命令必須在 STDOUT 上產生符合以下語法的 JSON 輸出。

{ "Version": 1, "AccessKeyId": "an AWS access key", "SecretAccessKey": "your AWS secret access key", "SessionToken": "the AWS session token for temporary credentials", "Expiration": "ISO8601 timestamp when the credentials expire" }
注意

截至本文編寫時,Version 索引鍵必須設定為 1。這可能隨著結構演進而逐漸遞增。

Expiration 索引鍵是 ISO8601 格式的時間戳記。如果 Expiration 索引鍵未出現在工具的輸出中,CLI 會假設憑證是不重新整理的長期憑證。否則,憑證就視為臨時憑證,在過期之前可透過重新執行 credential_process 命令來自動重新整理。

注意

與擔任角色憑證不同,AWS CLI 不會快取外部程序憑證。如果需要快取,您必須在外部程序中實作它。

外部程序可能傳回非零傳回碼,以表示擷取憑證時發生錯誤。