Amazon Redshiftの引き受けロールの設定
Redshift IAMロールARNを使用するには、必要な信頼ポリシーを使用してRedshift IAMロールARNを設定し、Amazon Redshiftにアクセスするための一時的なセキュリティ資格情報を生成します。
次のいずれかのオプションを使用して、一時的なセキュリティ資格情報を生成できます。
AWSの設定 | 接続の詳細 |
---|
オプション1: IAMユーザーを有効にするようにAssumeRoleを設定します。 | IAMユーザーにAssumeRoleを使用するには、以下のIAMユーザーの詳細を指定します。 - - RedshiftアクセスキーID
- - Redshiftシークレットアクセスキー
- - Redshift IAMロールARN
|
オプション2: EC2インスタンスを定義して、Redshift IAMロールを引き受けます。 | Amazon EC2のAssumeRoleを使用するには、次のようにします。 - - [Redshift IAMロールARN]値を指定します。
- - [ロールの引き受けにEC2ロールを使用]チェックボックスをオンにします。
|
要件に基づいて一時的なセキュリティ資格情報を生成します。
Amazon Redshiftの一時的なセキュリティ資格情報ポリシーの生成
一時的なセキュリティ資格情報を使用してAmazon Redshiftに接続するには、IAMユーザーとIAMロールの両方にポリシーが必要です。
次のセクションに、IAMユーザーとIAMロールに必要なポリシーを示します。
- IAMユーザー
- IAMユーザーは、同じAWSアカウントまたは異なるAWSアカウントで一時的なセキュリティ資格情報を使用するために、sts:AssumeRoleポリシーを持っている必要があります。IAMユーザーの資格情報は、接続プロパティでRedshiftアクセスキーとRedshift秘密鍵を入力するために使用されます。
- 次のサンプルポリシーでは、IAMユーザーにAWSアカウントで一時的なセキュリティ資格情報を使用することを許可しています。
{
"Version":"2012-10-17",
"Statement":
{ "Effect":"Allow",
"Action":"sts:AssumeRole",
"Resource":"arn:aws:iam::<ACCOUNT-HYPHENS>:role/<REDSHIFT-IAM-ROLE-NAME>"
}
}
注: 詳細モードでマッピングを実行するには、このポリシーを必ずワーカーノードロールに割り当ててください。
- Redshift IAMロールの信頼ポリシー
- Redshift IAMロールポリシーは、[Redshift IAMロールARN]で指定されたロールに関係します。IAMユーザーが一時的なセキュリティ資格情報を使用してRedshiftにアクセスできるようにするには、IAMロールに信頼ポリシーがアタッチされている必要があります。
次のポリシーは、サンプルの信頼ポリシーです。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{ "AWS":"arn:aws:iam::AWS-account-ID:<IAM-USER>" },
"Action":"sts:AssumeRole"
}
]
}
}
例えば、ロールまたはユーザーを次の形式で指定できます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<AWS-account>:role/<name-of-the-role>"
},
"Action": "sts:AssumeRole"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": " arn:aws:iam::<AWS-account>:user/<name-of-the-user>"
},
"Action": "sts:AssumeRole"
}
]
}
- 詳細モードでのマッピングのRedshift IAMロール信頼ポリシー
ワーカーノードがRedshiftロールを引き受け、AssumeRoleを介してAmazon Redshiftにアクセスできるようにするには、IAMロールに信頼ポリシーがアタッチされている必要があります。
次のポリシーは、サンプルの信頼ポリシーです。
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::<ACCOUNT-ID>:role/<WORKER-NODE-ROLE-ARN>" },
"Action": "sts:AssumeRole"
}
- Redshift IAMロールの最小限のアクセス許可ポリシー
次のポリシーは、Redshift IAMロールに必要なアクセス許可を示しています。これは、既存のAmazon Redshiftユーザーを使用してRedshiftデータベースに接続するためにIAMユーザーが引き受けます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"redshift:GetClusterCredentials",
"redshift:DescribeClusters"
],
"Resource": [
"arn:aws:redshift:<REGION>:<ACCOUNT-ID>:dbuser:<Cluster_Identifier>/<USER_NAME>",
"arn:aws:redshift:<REGION>:<ACCOUNT-ID>:dbname:<Cluster_Identifier>/<DATABASE_NAME>"
]
}
}
]
}
}
次のポリシーは、Redshift IAMロールにアタッチする必要があるアクセス許可を示しています。これは、[DBUserの自動作成]チェックボックスで新規作成されたユーザーがRedshiftデータベースに接続するために、IAMユーザーが引き受けます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"redshift:GetClusterCredentials",
"redshift:DescribeClusters",
"redshift:CreateClusterUser",
"redshift:JoinGroup"
],
"Resource": [
"arn:aws:redshift:<REGION>:<ACCOUNT-ID>:dbuser:<Cluster_Identifier>/<USER_NAME>",
"arn:aws:redshift:<REGION>:<ACCOUNT-ID>:dbname:<Cluster_Identifier>/<DATABASE_NAME>",
"arn:aws:redshift:<REGION>:<ACCOUNT-ID>:dbgroup:<Cluster_Identifier>/<GROUP_NAME>"
]
}
}
]
}
EC2にAssumeRoleを使用した一時的なセキュリティ資格情報の生成
Amazon EC2ロールにAssumeRoleを使用した一時的なセキュリティ資格情報を使用すると、同じAWSアカウントまたは異なるAWSアカウントからAmazon Redshiftに接続することができます。
Amazon EC2ロールにより、RedshiftアクセスキーとRedshiftシークレットキーを必要とせずに、同じAWSアカウントまたは異なるAWSアカウントから別のIAMロールを引き受けることができます。
AssumeRole for EC2を使用して一時的なセキュリティ資格情報を使用する場合は、次の前提条件を考慮してください。
- •AssumeRole for EC2を使用して一時的なセキュリティ資格情報を使用するには、Amazon EC2などのAWSサービスにSecure Agentをインストールします。
- •AWS EC2サービスにアタッチされたEC2ロールは、Amazon Redshiftへのアクセス権を持っていてはいけませんが、別のIAMロールを引き受ける権限が必要です。
- •EC2ロールが引き受ける必要のあるIAMロールには、アクセス許可ポリシーと信頼ポリシーがアタッチされている必要があります。
[Redshift IAMロールARN]接続プロパティで指定したIAMロールを引き受けるようにEC2ロールを設定するには、接続プロパティの[ロールの引き受けにEC2ロールを使用]チェックボックスをオンにします。
- EC2サービスロールの信頼ポリシー
- 以下は、EC2インスタンスにアタッチされたEC2ロールの信頼関係で定義されている信頼ポリシーの例です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EC2のロールを引き受ける場合のRedshift IAMロールの信頼ポリシーの例を以下に示します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "redshift.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<Account-ID:role>/ec2_role_attached_to_ec2_instance"
},
"Action": "sts:AssumeRole"
}
]
}
EC2インスタンスにアタッチする必要がある権限ポリシーは、IAMユーザーに対して定義されたポリシーと同じです。