使用 Amazon Redshift CLI或 產生IAM身分的資料庫憑證 API - Amazon Redshift

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

使用 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命令、擷取資料庫使用者憑證,以及連線至資料庫的步驟。

產生及使用暫時性資料庫登入資料
  1. 建立或修改具有必要許可的使用者或角色。如需IAM許可的詳細資訊,請參閱 步驟 3:建立具有呼叫許可IAM的角色 GetClusterCredentials

  2. 身為您在上一個步驟中授權的使用者或角色,請執行 get-cluster-credentials CLI 命令或呼叫 GetClusterCredentialsAPI操作,並提供下列值:

    • 叢集識別碼 — 包含資料庫之叢集的名稱。

    • 資料庫使用者名稱 — 現有或新資料庫使用者的名稱。

      • 如果使用者不存在於資料庫中且 AutoCreate 為 true,則會建立新的使用者並PASSWORD停用。

      • 如果使用者不存在,且 AutoCreate 為 false,則請求會失敗。

      • 針對此範例,資料庫使用者名稱為 temp_creds_user

    • 自動建立 — (選用) 如果資料庫使用者名稱不存在,則建立新使用者。

    • 資料庫名稱 — (選用) 使用者授權登入之資料庫的名稱。如果未指定資料庫名稱,使用者將可登入任何的叢集資料庫。

    • 資料庫群組 — (選用) 現有資料庫使用者群組的清單。成功登入後,資料庫使用者將新增至指定的使用者群組。如果未指定群組,則使用者只有PUBLIC許可。使用者群組名稱必須符合附加至使用者或角色IAM的政策中ARNs指定的 dbgroup 資源。

    • 過期時間 — (選用) 暫時性憑證過期前經過的時間 (以秒計)。您可指定 900 秒 (15 分鐘) 至 3600 秒 (60 分鐘) 之間的值。預設為 900 秒。

  3. Amazon Redshift 會確定使用者具備用指定資源呼叫 GetClusterCredentials 操作的許可。

  4. 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=="
    }
  5. 與 Amazon Redshift 叢集建立 Secure Socket Layer (SSL) 身分驗證連線,並從GetClusterCredentials回應傳送具有使用者名稱和密碼的登入請求。請在使用者名稱中加入 IAM:IAMA: 字首,例如,IAM:temp_creds_userIAMA:temp_creds_user

    重要

    將SQL用戶端設定為需要 SSL。否則,如果您的SQL用戶端自動嘗試與 連線SSL,則如果發生任何失敗,可能會回復為非SSL 。在這種情況下,第一次連線嘗試可能會失敗,因為憑證已過期或無效,然後第二次連線嘗試會失敗,因為連線不是 SSL。此時,可能會跳過第一個錯誤訊息。如需使用 連線至叢集的詳細資訊SSL,請參閱 設定連線的安全選項

  6. 如果連線不使用 SSL,連線嘗試會失敗。

  7. 叢集會將authentication請求傳送至SQL用戶端。

  8. 然後,SQL用戶端會將臨時密碼傳送至叢集。

  9. 如果密碼為有效且尚未過期,叢集將完成連線。