本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon Redshift CLI或 產生IAM身分的資料庫憑證 API
若要以程式設計方式產生臨時資料庫使用者憑證,Amazon Redshift 會提供 AWS Command Line Interface (AWS CLI) 和 GetClusterCredentialsAPI操作的 get-cluster-credentials 命令。或者,您可以使用 Amazon Redshift JDBC或驅動程式來設定SQL用戶端,這些ODBC驅動程式可管理呼叫GetClusterCredentials
操作、擷取資料庫使用者憑證,以及建立SQL用戶端與 Amazon Redshift 資料庫之間的連線。如需詳細資訊,請參閱JDBC 和 ODBC 選項來建立資料庫使用者憑證。
注意
建議使用 Amazon Redshift JDBC或ODBC驅動程式來產生資料庫使用者憑證。
在本節中,您可以找到以程式設計方式呼叫GetClusterCredentials
操作或 get-cluster-credentials命令、擷取資料庫使用者憑證,以及連線至資料庫的步驟。
產生及使用暫時性資料庫登入資料
-
建立或修改具有必要許可的使用者或角色。如需IAM許可的詳細資訊,請參閱 步驟 3:建立具有呼叫許可IAM的角色 GetClusterCredentials。
-
身為您在上一個步驟中授權的使用者或角色,請執行 get-cluster-credentials CLI 命令或呼叫
GetClusterCredentials
API操作,並提供下列值:-
叢集識別碼 — 包含資料庫之叢集的名稱。
-
資料庫使用者名稱 — 現有或新資料庫使用者的名稱。
-
如果使用者不存在於資料庫中且 AutoCreate 為 true,則會建立新的使用者並PASSWORD停用。
-
如果使用者不存在,且 AutoCreate 為 false,則請求會失敗。
-
針對此範例,資料庫使用者名稱為
temp_creds_user
。
-
-
自動建立 — (選用) 如果資料庫使用者名稱不存在,則建立新使用者。
-
資料庫名稱 — (選用) 使用者授權登入之資料庫的名稱。如果未指定資料庫名稱,使用者將可登入任何的叢集資料庫。
-
資料庫群組 — (選用) 現有資料庫使用者群組的清單。成功登入後,資料庫使用者將新增至指定的使用者群組。如果未指定群組,則使用者只有PUBLIC許可。使用者群組名稱必須符合附加至使用者或角色IAM的政策中ARNs指定的 dbgroup 資源。
-
過期時間 — (選用) 暫時性憑證過期前經過的時間 (以秒計)。您可指定 900 秒 (15 分鐘) 至 3600 秒 (60 分鐘) 之間的值。預設為 900 秒。
-
-
Amazon Redshift 會確定使用者具備用指定資源呼叫
GetClusterCredentials
操作的許可。 -
Amazon Redshift 將傳回暫時性密碼和資料庫使用者名稱。
下列範例使用 Amazon Redshift CLI 為名為 的現有使用者產生暫存資料庫憑證
temp_creds_user
。aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --db-name exampledb --duration-seconds 3600
結果如下所示。
{ "DbUser": "IAM:temp_creds_user", "Expiration": "2016-12-08T21:12:53Z", "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg==" }
下列範例使用 Amazon Redshift CLI搭配自動建立,為新使用者產生臨時資料庫憑證,並將使用者新增至群組
example_group
。aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --auto-create --db-name exampledb --db-groups example_group --duration-seconds 3600
結果如下所示。
{ "DbUser": "IAMA:temp_creds_user:example_group", "Expiration": "2016-12-08T21:12:53Z", "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg==" }
-
與 Amazon Redshift 叢集建立 Secure Socket Layer (SSL) 身分驗證連線,並從
GetClusterCredentials
回應傳送具有使用者名稱和密碼的登入請求。請在使用者名稱中加入IAM:
或IAMA:
字首,例如,IAM:temp_creds_user
或IAMA:temp_creds_user
。重要
將SQL用戶端設定為需要 SSL。否則,如果您的SQL用戶端自動嘗試與 連線SSL,則如果發生任何失敗,可能會回復為非SSL 。在這種情況下,第一次連線嘗試可能會失敗,因為憑證已過期或無效,然後第二次連線嘗試會失敗,因為連線不是 SSL。此時,可能會跳過第一個錯誤訊息。如需使用 連線至叢集的詳細資訊SSL,請參閱 設定連線的安全選項。
-
如果連線不使用 SSL,連線嘗試會失敗。
-
叢集會將
authentication
請求傳送至SQL用戶端。 -
然後,SQL用戶端會將臨時密碼傳送至叢集。
-
如果密碼為有效且尚未過期,叢集將完成連線。