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

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

プログラムで一時的なデータベースユーザー認証情報を生成するため、Amazon Redshift では AWS Command Line Interface (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 アクションを呼び出し、次の値を指定します。

    • クラスター識別子 – データベースを含むクラスターの名前。

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

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

      • ユーザーが存在せず、AutoCreate が false の場合、要求は失敗します。

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

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

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

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

    • 有効期限 – (任意) 一時的認証情報が期限切れになるまでの時間 (秒単位)。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 -–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 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. パスワードが有効で期限切れでない場合、クラスターは接続を完了します。