本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用來自命令列的IAM身分驗證連線至 Amazon Neptune 資料庫
如本文件中的許多範例所示,具有將查詢提交至 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憑證驗證。
使用 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) APIs或其中一個AWS CLI 包裝函式 來產生臨時憑證。
最好將STS呼叫傳回的 SecretAccessKey
、 AccessKeyId
和 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