本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中使用外部程序來來源憑證 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
金鑰是 ISO8601Expiration
金鑰不存在於工具的輸出中, 會CLI假設憑證是不會重新整理的長期憑證。否則,憑證就視為臨時憑證,在過期之前可透過重新執行 credential_process
命令來自動重新整理。
注意
AWS CLI 不會像擔任角色憑證一樣快取外部程序憑證。如果需要快取,您必須在外部程序中實作它。
外部程序可能傳回非零傳回碼,以表示擷取憑證時發生錯誤。