在 中使用外部程序來來源憑證 AWS CLI - AWS Command Line Interface

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

在 中使用外部程序來來源憑證 AWS CLI

警告

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

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

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

例如,您在 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 不會像擔任角色憑證一樣快取外部程序憑證。如果需要快取,您必須在外部程序中實作它。

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