本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
如本文件中的許多範例所示,具有將查詢提交至 Neptune 資料庫叢集的命令列工具非常方便。如果未啟用 IAM 身分驗證,curl
不過,若要保護您的資料,最好啟用 IAM 身分驗證。
當 IAM 身分驗證啟用時,每個請求都必須使用 Signature 第 4 版 (Sig4) 進行簽署。第三方 awscurlcurl
相同的語法,並且可以使用 Sig4 簽署來簽署查詢。以下 使用 awscurl 一節說明如何安全地使用 awscurl
搭配臨時憑證。
設定命令列工具來使用 HTTPS
Neptune 要求所有連線都使用 HTTPS。任何命令行工具 (例如 curl
或 awscurl
) 需要存取適當的憑證,才能使用 HTTPS。只要 curl
或 awscurl
可以找到適當的憑證,它們處理 HTTPS 連線的方式就跟 HTTP 連線一樣,無需額外參數。此文件的範例是以該案例為基礎。
若要了解如何取得這類憑證,以及如何將它們正確格式化為 curl
可以使用的憑證授權機構 (CA) 憑證存放區,請參閱 curl
文件中的 SSL 憑證驗證
然後,您可以使用 CURL_CA_BUNDLE
環境變數來指定此 CA 憑證存放區的位置。在 Windows 上,curl
會自動在名為 curl-ca-bundle.crt
的檔案中尋找它。它會先在和 curl.exe
相同的目錄中尋找,然後再尋找路徑的其他位置。如需詳細資訊,請參閱 SSL Certificate Verification
使用 awscurl
搭配臨時憑證,安全地連線至啟用 IAM 身分驗證的資料庫叢集
awscurlcurl
相同的語法,但也需要額外的資訊:
-
--access_key
– 有效的存取金鑰。如果未使用此參數提供,則必須在AWS_ACCESS_KEY_ID
環境變數或在組態檔案中提供它。 -
--secret_key
– 對應至存取金鑰的有效私密存鑰。如果未使用此參數提供,則必須在AWS_SECRET_ACCESS_KEY
環境變數或在組態檔案中提供它。 -
--security_token
– 有效的工作階段權杖。如果未使用此參數提供,則必須在AWS_SECURITY_TOKEN
環境變數或在組態檔案中提供它。
在過去,常見的做法是使用永久憑證搭配 awscurl
(例如 IAM 使用者憑證,甚至是根憑證),但不建議這麼做。相反地,使用其中一個 AWS
Security Token Service (STS) API 或其中一個 AWS CLI 包裝函式來產生臨時憑證。
最好將 STS 呼叫所傳回的 AccessKeyId
、SecretAccessKey
和 SessionToken
值放入 Shell 工作階段中的適當環境變數中,而不是放入組態檔案中。然後,當 Shell 終止時,憑證會自動捨棄,而組態檔案不是這種情況。同樣地,請不要為臨時憑證請求長於您可能需要的持續時間。
下列範例展示您可能在 Linux Shell 中採取的步驟,以使用 sts assume-role 取得有效半小時的臨時憑證,然後將它們放在 awscurl
可以找到它們的環境變數中:
aws sts assume-role \ --duration-seconds 1800 \ --role-arn "arn:aws:iam::
(account-id)
:role/(rolename)
" \ --role-session-name AWSCLI-Session > $output AccessKeyId=$(cat $output | jq '.Credentials''.AccessKeyId') SecretAccessKey=$(cat $output | jq '.Credentials''.SecretAccessKey') SessionToken=$(cat $output | jq '.Credentials''.SessionToken') export AWS_ACCESS_KEY_ID=$AccessKeyId export AWS_SECRET_ACCESS_KEY=$SecretAccessKey export AWS_SESSION_TOKEN=$SessionToken
然後,您可以使用 awscurl
對資料庫叢集提出簽署的請求,如下所示:
awscurl
(your cluster endpoint)
:8182/status \ --region us-east-1 \ --service neptune-db