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 コマンドを実行するか、GetClusterCredentialsAPI 操作を呼び出して、以下の値を指定します。

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

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

      • ユーザーがデータベースに存在せず、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. パスワードが有効で期限切れでない場合、クラスターは接続を完了します。