ステップ 3: GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールを作成する - Amazon Redshift

ステップ 3: GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールを作成する

SQL クライアントには、自動的に GetClusterCredentials オペレーションを呼び出すための許可が必要です。その許可を付与するには、ユーザーまたはロールを作成し、必要なアクセス許可を付与するポリシーをアタッチします。

GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールを作成するには
  1. IAM サービスを使用して、ユーザーまたはロールを作成します。既存のユーザーまたはロールを使用することもできます。たとえば、アイデンティティプロバイダアクセス用の IAM ロールを作成したら、そのロールに必要な IAM ポリシーをアタッチできます。

  2. redshift:GetClusterCredentials オペレーションを呼び出すアクセス許可を持つアクセス許可ポリシーをアタッチします。指定するオプションパラメータにより、追加のアクションやリソースをポリシーで許可または制限することもできます。

    • SQL クライアントによるクラスター ID、AWS リージョン、およびポートの取得を許可するには、redshift:DescribeClusters オペレーションを呼び出すアクセス許可を Redshift クラスターリソースに含めます。

    • AutoCreate オプションを使用する場合、redshift:CreateClusterUser を呼び出すアクセス許可を dbuser リソースに含めます。次の Amazon リソースネーム (ARN) は、Amazon Redshift dbuserを指定します。regionaccount-id、および cluster-name を、お使いの AWS リージョン、アカウント、およびクラスターの値に置き換えます。dbuser-nameに、クラスターデータベースへのログインに使用するユーザー名を指定します。

      arn:aws:redshift:region:account-id:dbuser:cluster-name/dbuser-name
    • (任意)次の形式で Amazon Redshift dbname リソースを指定する ARN を追加します。regionaccount-id、および cluster-name を、お使いの AWS リージョン、アカウント、およびクラスターの値に置き換えます。database-name に、ユーザーがログインするデータベースの名前を指定します。

      arn:aws:redshift:region:account-id:dbname:cluster-name/database-name
    • DbGroups オプションを使用する場合、次の形式で、redshift:JoinGroup オペレーションを呼び出すアクセス許可を Amazon Redshift dbgroup リソースに含めます。regionaccount-id、および cluster-name を、お使いの AWS リージョン、アカウント、およびクラスターの値に置き換えます。dbgroup-name には、ユーザーがログイン時に参加するユーザーグループの名前を指定します。

      arn:aws:redshift:region:account-id:dbgroup:cluster-name/dbgroup-name

詳細な説明と例については、GetClusterCredentials のリソースポリシーを参照してください。

次の例では、IAM ロールで GetClusterCredentials オペレーションの呼び出しを許可するポリシーを示します。Amazon Redshift dbuser リソースを指定すると、exampleclusterというクラスターで、データベースユーザー名 temp_creds_user にロールのアクセスが付与されます。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/temp_creds_user" } }

ワイルドカード (*) を使用して、クラスター名、ユーザー名、およびデータベースグループ名のすべてまたは一部を置き換えることができます。次の例では、指定したアカウントのすべてのクラスターで、temp_ で始まるすべてのユーザー名が許可されます。

重要

次の例のステートメントでは、指定された文字から始まるすべてのリソースがポリシーで許可されるように、リソースの値の一部として、ワイルドカード文字 (*) を指定します。IAM ポリシーでワイルドカード文字を使用すると、過度に許可される場合があります。ベストプラクティスとして、ビジネスアプリケーションを最も制限する現実的なポリシーを使用することをお勧めします。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:*/temp_*" } }

次の例では、IAM ロールが GetClusterCredentials オペレーションを呼び出すことを許可するポリシーを示します。オプションで新しいユーザーを自動的に作成し、ログイン時にユーザーが参加するグループを指定することができます。"Resource": "*" 句により、クラスター、データベースユーザー、またはユーザーグループを含めて、任意のリソースへのロールアクセスが許可されます。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials", "redshift:CreateClusterUser", "redshift:JoinGroup" ], "Resource": "*" } }

詳細については、Amazon Redshift ARN 構文を参照してください。