S3ステージングのAssumeRole認証を設定するには、AWSコンソールでIAMユーザーとIAMロールに最小限の権限ポリシーと信頼ポリシーをアタッチする必要があります。
IAMユーザーは、AssumeRoleを使用して、Amazon S3リソースに一時的にアクセスできます。Amazon S3リソースの引き受けロールの使用方法の詳細については、次のHow-Toライブラリの記事も参照してください:
Using an assume role for Amazon S3 resourcesAmazon S3ステージング用のAssumeRoleを使用して一時的なセキュリティ資格情報を生成すると、Amazon S3ステージングバケットにアクセスできます。EC2インスタンスがIAMロールを引き受けてS3ステージングバケットに安全にアクセスできるようにする場合は、AssumeRole for EC2インスタンスを使用して生成された一時的なセキュリティ資格情報を使用します。
Amazon S3ステージングにAssumeRoleを使用した一時的なセキュリティ資格情報の生成
AssumeRoleを使用した一時的なセキュリティ資格情報を使用すると、同じAWSアカウントまたは異なるAWSアカウントからAmazon S3ステージングバケットにアクセスできます。
sts:AssumeRole権限が割り当てられており、AWSアカウント内に一時的なセキュリティ資格情報を使用するための信頼関係が構築されていることを確認します。信頼関係は、ロールを作成するときに、IAMロールの信頼ポリシーで定義します。IAMロールにより、IAMユーザーを信頼されたエンティティとして追加し、IAMユーザーに一時的なセキュリティ資格情報の使用とAWSアカウントへのアクセスを許可します。信頼関係を構築する方法の詳細については、AWSのマニュアルを参照してください。
信頼されたIAMユーザーが一時的なセキュリティ資格情報を要求すると、AWS Security Token Service(AWS STS)によって、指定した期間有効な一時的なセキュリティ資格情報が動的に生成され、信頼されたIAMユーザーにその資格情報が提供されます。一時的なセキュリティ資格情報は、アクセスキーID、シークレットアクセスキー、シークレットトークンで構成されます。
動的に生成された一時的なセキュリティ資格情報を使用するには、Amazon Redshift V2接続を作成するときに[S3 IAMロールARN]接続プロパティの値を入力します。IAMロールARNでは、AWSリソースが一意に識別されます。次に、[一時的な資格情報の期間]詳細ソースプロパティおよびターゲットプロパティで、一時的なセキュリティ資格情報を使用できる期間を秒単位で指定します。
外部ID
Amazon S3バケットがIAMユーザーまたはEC2インスタンスとは別のAWSアカウントにある場合に、Amazon S3バケットへのより安全なアクセスを確立するための外部IDを指定できます。
必要に応じて、AWS Security Token Service(STS)へのAssumeRole要求で外部IDを指定できます。
外部IDは文字列である必要があります。次のサンプルは、引き継がれたIAMロールの信頼ポリシー内の外部ID条件を示しています。
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AWS_Account_ID : user/user_name"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "dummy_external_id"
}
}
}
]
一時的なセキュリティ資格情報のポリシー
一時的なセキュリティ資格情報を使用してAmazon S3ステージングバケットにアクセスするには、IAMユーザーとIAMロールにポリシーが必要です。
次のセクションに、IAMユーザーとIAMロールに必要なポリシーを示します。
- IAMユーザー
- IAMユーザーは、同じAWSアカウントまたは異なるAWSアカウントで一時的なセキュリティ資格情報を使用するために、sts:AssumeRoleポリシーを持っている必要があります。
- 次のサンプルポリシーでは、IAMユーザーにAWSアカウントで一時的なセキュリティ資格情報を使用することを許可しています。
{
"Version":"2012-10-17",
"Statement":
{ "Effect":"Allow", "Action":"sts:AssumeRole",
"Resource":"arn:aws:iam::<ACCOUNT-HYPHENS>:role/<ROLE-NAME>" }
}
- 次のサンプルポリシーでは、中国地域のIAMユーザーにAWSアカウントで一時的なセキュリティ資格情報を使用することを許可しています。
{
"Version":"2012-10-17",
"Statement":
{
"Effect":"Allow", "Action":"sts:AssumeRole",
"Resource":"arn:aws-cn:iam::<ACCOUNT-HYPHENS>:role/<ROLE-NAME>"
}
}
- IAMロール
- IAMロールには、IAMユーザーに対して一時的なセキュリティ資格情報を使用したAmazon S3バケットへのアクセスを許可するために、sts:AssumeRoleポリシーとIAMロールにアタッチされた信頼ポリシーが必要です。このポリシーは、IAMユーザーがアクセスできるAmazon S3バケットと、IAMユーザーが実行できるアクションを指定します。信頼ポリシーは、Amazon S3バケットにアクセスできるAWSアカウントのIAMユーザーを指定します。
次のポリシーは、サンプルの信頼ポリシーです。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{ "AWS":"arn:aws:iam::AWS-account-ID:<ROLE-NAME" },
"Action":"sts:AssumeRole"
}
]
}
}
KMSに対する一時的なセキュリティ資格情報
AWS Key Management Service(AWS KMS)で管理されたカスタママスタキーを使用する一時的なセキュリティ資格情報を使用し、KMSを使用した暗号化を有効にするには、KMSポリシーを作成する必要があります。
次の操作を実行すると、一時的なセキュリティ資格情報を使用し、KMSを使用した暗号化を有効にすることができます。
- •GenerateDataKey
- •DescribeKey
- •暗号化
- •復号化
- •ReEncrypt
次のサンプルポリシーを使用できます。
{
"Version":"2012-10-17",
"Statement":[
{ "Effect":"Allow",
"Action":
[ "kms:GenerateDataKey", "kms:DescribeKey", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ],
"Resource": ["arn:aws:kms:region:account:key/<KMS_key>"]
}
]
}
KMSを設定し、中国地域のAmazon S3エンドポイントにアクセスする場合は、次のサンプルポリシーを使用します。
{
"Version":"2012-10-17",
"Statement":[
{ "Effect":"Allow",
"Action":[ "kms:GenerateDataKey", "kms:DescribeKey", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ],
"Resource": ["arn:aws-cn:kms:region:account:key/<KMS_key>"]
}
]
}
EC2にAssumeRoleを使用した一時的なセキュリティ資格情報の生成
Amazon EC2ロールにAssumeRoleを使用した一時的なセキュリティ資格情報を使用すると、同じAWSアカウントまたは異なるAWSアカウントからAmazon S3ステージングバケットにアクセスできます。
Amazon EC2ロールにより、永続的なアクセスキーとシークレットキーを必要とせずに、同じAWSアカウントまたは異なるAWSアカウントから別のIAMロールを引き受けることができます。Amazon EC2ロールにより、別のリージョンから別のIAMロールを引き受けることもできます。
AssumeRole for EC2を使用した一時的なセキュリティ資格情報を使用する場合は、次の前提条件を考慮してください。
- •AssumeRole for EC2を使用して一時的なセキュリティ認証情報を使用するには、Amazon EC2などのAWSサービスにSecure Agentをインストールします。
- •AWS EC2サービスにアタッチされたEC2ロールは、Amazon S3へのアクセス権を持っていてはいけませんが、別のIAMロールを引き受ける権限が必要です。
- •EC2ロールが引き受ける必要のあるIAMロールには、アクセス許可ポリシーと信頼ポリシーがアタッチされている必要があります。
[IAMロールARN]接続プロパティで指定したIAMロールを引き受けるようにEC2ロールを設定するには、接続プロパティの[ロールの引き受けにEC2ロールを使用]チェックボックスをオンにします。