ステップ 3: GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールを作成する
SQL クライアントには、自動的に GetClusterCredentials
オペレーションを呼び出すための許可が必要です。その許可を付与するには、ユーザーまたはロールを作成し、必要なアクセス許可を付与するポリシーをアタッチします。
GetClusterCredentials を呼び出すアクセス許可を持つ IAM ロールを作成するには
-
IAM サービスを使用して、ユーザーまたはロールを作成します。既存のユーザーまたはロールを使用することもできます。たとえば、アイデンティティプロバイダアクセス用の IAM ロールを作成したら、そのロールに必要な IAM ポリシーをアタッチできます。
-
redshift:GetClusterCredentials
オペレーションを呼び出すアクセス許可を持つアクセス許可ポリシーをアタッチします。指定するオプションパラメータにより、追加のアクションやリソースをポリシーで許可または制限することもできます。-
SQL クライアントによるクラスター ID、AWS リージョン、およびポートの取得を許可するには、
redshift:DescribeClusters
オペレーションを呼び出すアクセス許可を Redshift クラスターリソースに含めます。 -
AutoCreate
オプションを使用する場合、redshift:CreateClusterUser
を呼び出すアクセス許可をdbuser
リソースに含めます。次の Amazon リソースネーム (ARN) は、Amazon Redshiftdbuser
を指定します。
、region
、およびaccount-id
を、お使いの AWS リージョン、アカウント、およびクラスターの値に置き換えます。cluster-name
に、クラスターデータベースへのログインに使用するユーザー名を指定します。dbuser-name
arn:aws:redshift:
region
:account-id
:dbuser:cluster-name
/dbuser-name
-
(任意)次の形式で Amazon Redshift
dbname
リソースを指定する ARN を追加します。
、region
、およびaccount-id
を、お使いの AWS リージョン、アカウント、およびクラスターの値に置き換えます。cluster-name
に、ユーザーがログインするデータベースの名前を指定します。database-name
arn:aws:redshift:
region
:account-id
:dbname:cluster-name
/database-name
-
DbGroups
オプションを使用する場合、次の形式で、redshift:JoinGroup
オペレーションを呼び出すアクセス許可を Amazon Redshiftdbgroup
リソースに含めます。
、region
、およびaccount-id
を、お使いの AWS リージョン、アカウント、およびクラスターの値に置き換えます。cluster-name
には、ユーザーがログイン時に参加するユーザーグループの名前を指定します。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 構文を参照してください。