Amazon Redshift CLI または API を使用して IAM ID のデータベース認証情報を生成する
プログラムで一時的なデータベースユーザー認証情報を生成するため、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 コマンドを呼び出し、データベースのユーザー認証情報を取得して、データベースに接続する手順を示します。
一時的データベース認証情報を生成して使用するには
-
必要なアクセス許可を使用してユーザーまたはロールを作成または変更します。IAM 許可の詳細については、「ステップ 3: GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールを作成する」を参照してください。
-
前のステップで認可したユーザーまたはロールとして、get-cluster-credentials CLI コマンドを実行するか、
GetClusterCredentials
API オペレーションを呼び出して以下の値を指定します。-
クラスター識別子 – データベースを含むクラスターの名前。
-
データベースユーザー名 – 既存の、または新しいデータベースユーザーの名前。
-
ユーザーがデータベースに存在せず、AutoCreate が true の場合、PASSWORD を無効にして新しいユーザーが作成されます。
-
ユーザーが存在せず、AutoCreate が false の場合、要求は失敗します。
-
この例では、データベースユーザー名は
temp_creds_user
です。
-
-
Autocreate – (オプション) データベースユーザー名が存在しない場合は新しいユーザーを作成します。
-
データベース名 – (オプション) ユーザーがログオンする権限が付与されているデータベースの名前。データベース名を指定しない場合、ユーザーは任意のクラスターデータベースにログインできます。
-
データベースグループ – (オプション) 既存のデータベースユーザーグループのリスト。正常にログインすると、データベースユーザーが、指定されたユーザーグループに追加されます。グループを指定しない場合、ユーザーは PUBLIC 許可のみを持ちます。ユーザーグループ名は、ユーザーまたはロールにアタッチされた IAM ポリシーに指定されている dbgroup リソース ARN と一致する必要があります。
-
有効期限 – (任意) 一時的認証情報が期限切れになるまでの時間 (秒単位)。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 と 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==" }
-
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 を使用したクラスターへの接続の詳細については、接続のセキュリティオプションを設定するを参照してください。
-
接続で SSL を使用しない場合、接続の試行は失敗します。
-
クラスターは
authentication
要求を SQL クライアントに送信します。 -
次に、SQL クライアントは一時パスワードをクラスターに送信します。
-
パスワードが有効で期限切れでない場合、クラスターは接続を完了します。