メニュー
Amazon Redshift
クラスター管理ガイド (API バージョン 2012年12月1日)

Amazon Redshift CLI または API を使用した IAM データベース認証情報の生成

プログラムで一時的データベースユーザー認証情報を生成するため、Amazon Redshift は AWS コマンドラインインターフェイス (AWS CLI) および GetClusterCredentials API アクション用に get-cluster-credentials コマンドを提供します。または、GetClusterCredentials アクションを呼び出し、データベースユーザー認証情報を取得して、SQL クライアントと Amazon Redshift データベース間の接続を確立するプロセスを管理する、Amazon Redshift JDBC または ODBC ドライバーを使用して SQL クライアントを設定できます。詳細については、「データベースユーザー認証情報を作成するための JDBC および ODBC のオプション」を参照してください。

注記

Amazon Redshift JDBC または ODBC ドライバーを使用して、データベースユーザー認証情報を生成することをお勧めします。

このセクションでは、プログラムで GetClusterCredentials アクションまたは get-cluster-credentials コマンドを呼び出し、データベースのユーザー認証情報を取得して、データベースに接続するステップを示します。

一時的データベース認証情報を生成して使用するには

  1. 必要なアクセス許可を使用して、IAM ユーザーまたはロールを作成または変更します。IAM 権限の詳細については、「GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールまたはユーザーを作成する」を参照してください。

  2. 前のステップで許可した IAM ユーザーまたはロールとして、get-cluster-credentials CLI コマンドを実行するか、GetClusterCredentials API アクションを呼び出し、次の値を指定します。

    • Cluster identifier – データベースを含むクラスターの名前。

    • Database user name – 既存の、または新しいデータベースユーザーの名前。

      • ユーザーがデータベースに存在せず、AutoCreate が true の場合、PASSWORD を無効にして新しいユーザーが作成されます。

      • ユーザーが存在せず、AutoCreate が false の場合、リクエストは失敗します。

      • この例では、データベースユーザー名は temp_creds_user です。

    • Autocreate – (オプション) データベースユーザー名が存在しない場合は新しいユーザーを作成します。

    • Database name – (オプション) ユーザーがログオンする権限が付与されているデータベースの名前。データベース名を指定しない場合、ユーザーは任意のクラスターデータベースにログオンできます。

    • Database groups – (オプション) 既存のデータベースユーザーグループのリスト。正常にログオンすると、データベースユーザーが、指定されたユーザーグループに追加されます。グループを指定しない場合、ユーザーには PUBLIC アクセス許可のみが与えられます。このユーザーグループ名は、IAM ユーザーまたはロールにアタッチされた IAM ポリシーで指定された dbgroup リソースの ARN に一致する必要があります。

    • Expiration time – (オプション) 一時的認証情報が期限切れになるまでの時間 (秒単位)。900 秒 (15 分) と 3600 秒 (60 分間) の間の値を指定できます。デフォルト値は 900 秒です。

  3. Amazon Redshift は、IAM ユーザーに、指定されたリソースで 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 と autocreate を使用して、新しいユーザー用の一時的データベース認証情報を生成し、そのユーザーをグループ example_group に追加します。

    aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user -–autocreate true --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 Sockets Layer (SSL) 認証接続を確立し、GetClusterCredentials のレスポンスからのユーザー名とパスワードとともにログオンリクエストを送信します。ユーザー名には IAM: または IAMA: というプレフィックスを含めます (例: IAM:temp_creds_user または IAMA:temp_creds_user)。

    重要

    SSL を必要とするように SQL クライアントを設定します。それ以外の場合、SQL クライアントが自動的に SSL との接続を試みた場合、なんらかの失敗があると、非 SSL にフォールバックする可能性があります。その場合、最初の接続の試行は、認証情報が期限切れまたは無効なために失敗する可能性があり、2 番目の接続の試行は、接続が SSL でないために失敗します。その場合、最初のエラーメッセージは表示されない可能性があります。SSL を使用したクラスターへの接続の詳細については、「接続のセキュリティオプションを設定する」を参照してください。

  6. 接続で SSL を使用しない場合、接続の試行は失敗します。

  7. クラスターは authentication リクエストを SQL クライアントに送信します。

  8. 次に、SQL クライアントは一時パスワードをクラスターに送信します。

  9. パスワードが有効で期限切れでない場合、クラスターは接続を完了します。