程序認證提供者 - AWS SDKs和工具

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

程序認證提供者

SDK 提供了一種擴展自定義用例的憑證提供者鏈的方法。

IAM 角色隨處提供一種取得在以外執行之工作負載或程序的臨時登入資料的方法 AWS。若要credential_process針對此用途進行配置,請參閱IAM Roles Anywhere

警告

下列說明從外部處理程序取得認證的方法。這可能是潛在的危險, 所以謹慎行事. 如果可能的話,應該優先選擇其他認證提供者。如果使用此選項,您應該使用適用於您的作業系統的安全性最佳實務來確保config檔案已盡可能鎖定。確認您的自訂認證工具不會將任何秘密資訊寫入StdErr,因為 SDK AWS CLI 可以擷取並記錄此類資訊,進而可能會將其暴露給未經授權的使用者。

使用下列項目設定此功能:

credential_process-共享 AWS config文件設置

指定 SDK 或工具代表您執行的外部命令,以產生或擷取要使用的驗證認證。該設置指定 SDK 將調用的程序/命令的名稱。當 SDK 調用該進程時,它會等待進程將 JSON 數據寫入。stdout自訂提供者必須以特定格式傳回資訊。該資訊包含 SDK 或工具可用來驗證您的認證。

注意

處理程序認證提供者是的一部分憑證提供者鏈。但是,只有在本系列中的其他幾個提供者之後才會檢查進程憑證提供者。因此,如果您希望程式使用此提供者的認證,您必須從組態中移除其他有效的認證提供者,或使用不同的設定檔。或者,您可以在程式碼中指定使用處理序憑證提供者,而不是依賴認證提供者鏈來自動探索哪個提供者傳回有效的認證。您可以在建立服務用戶端時直接指定認證來源。

指定認證程式的路徑

該設置的值是一個字符串,其中包含 SDK 或開發工具代表您運行的程序路徑:

  • 路徑和檔案名稱只能由下列字元組成:A-Z、a-z、0-9、連字號 (-)、底線 (_)、句點 (.)、正斜線 (/)、反斜線 (\) 和空格。

  • 如果路徑或檔案名稱包含空格,完整的路徑和檔案名稱請以雙引號 (「」) 括住。

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

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

  • 請勿將主資料夾指定為~。* 您必須指定完整路徑或基底檔案名稱。如果有基底檔案名稱,系統會嘗試在PATH環境變數指定的資料夾內尋找程式。

    以下示例顯示了在 Linux/macOS 上的共享config文件中設置憑據 _ 進程。

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

    下列範例顯示在 Windows 上的共用config檔案中設定認證程序。

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

憑證程式的有效輸出

SDK 會依照設定檔中指定的方式執行命令,然後從標準輸出串流讀取資料。您指定的命令 (無論是指令碼還是二進位程式) 都必須產生符STDOUT合下列語法的 JSON 輸出。

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

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

Expiration金鑰是 RFC3339 格式的時間戳記。如果Expiration金鑰不存在於工具的輸出中,SDK 會假設認證是不重新整理的長期認證。否則,認證會被視為暫時證明資料,而且會在認證到期之前重新執行credential_process命令來自動重新整理這些證明資料。

注意

SDK 會像假設角色認證那樣快取外部處理序認證。如果需要快取,您必須在外部程序中實作它。

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

與 AWS 開發套件的相容性

下列 SDK 支援本主題中描述的功能和設定。注意到任何部分例外情況。和唯一支援任何 JVM 系統屬 AWS SDK for Java 性設 適用於 Kotlin 的 AWS SDK 定。