認証の準備
Amazon S3にアクセスするために、複数の認証タイプを設定できます。
接続プロパティを設定する前に、使用する認証のタイプに基づいて認証の詳細を用意しておく必要があります。
- •基本認証には、AWSアカウントからのアクセスキーとシークレットキーの値が必要です。
- •IAM認証では、特定のフォルダパスへのアクセスを許可し、Amazon S3オブジェクトにアクセスするために、EC2ロールにポリシーをアタッチする必要があります。
- •EC2ロール認証を使用したAssumeRoleでは、EC2ロールがIAMロールARNで指定された別のIAMロールを引き受けることができるようにする必要があります。
- •IAMユーザー認証を使用したAssumeRoleには、IAMユーザーのアクセスキーとシークレットキーの値、およびIAMロールのARNが必要です。
- •資格情報プロファイルファイル認証には、資格情報プロファイルファイルのパスとプロファイル名が必要です。
- •フェデレーティッドユーザーシングルサインオン認証には、フェデレーティッドユーザーのユーザー名とパスワード、IdP SSO URL、SAML IDプロバイダのARN、およびフェデレーティッドユーザーが引き受けるIAMロールのARNが必要です。SSOにはADFS 3.0(IDP)のみを使用できます。
最小限のAmazon IAMポリシーの作成
AWSコンソールでIAMポリシーを設定できます。AWS IAM認証を使用すると、Amazon S3リソースへのアクセスを安全に制御できます。
ユーザーが、Amazon S3バケットからデータの読み取りを行うことができるようにするには、次に示す最低限必要なポリシーを使用します。
ユーザーが、Amazon S3バケットにデータの書き込みを行うことができるようにするには、次に示す最低限必要なポリシーを使用します。
- •PutObject
- •GetObject
- •DeleteObject
- •ListBucket
- •ListBucketMultipartUploads.詳細モードのマッピングにのみ適用されます。
次のサンプルポリシーは、Amazon S3バケットにデータを書き込むための最小限のAmazon IAMポリシーを示しています。
{
"Version": "2012-10-17",
"Statement":
[
{
"Effect": "Allow",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads"
],
"Resource": [
"arn:aws:s3:::<bucket_name>/*",
"arn:aws:s3:::<bucket_name>"
]
}
]
}
詳細モードでバケットレベルのアクセスを行うには、ListBucketMultipartUploads権限とともに、バケットレベルでAllowListBucketMultipartUploads権限を付与する必要があります。
次のサンプルポリシーは、詳細モードのバケットレベルでS3バケットにアクセスするための最小限のAmazon IAMポリシーを示しています。
{
"Sid": "AllowListBucketMultipartUploads",
"Action": [
"s3:ListBucketMultipartUploads"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::infa.qa.minimum.access.bucket"
]
},
詳細モードのマッピングの場合、同じAWSリージョン内で異なるAWSアカウントを使用できます。マッピングで使用するAWSアカウントへのアクセスがAmazon IAMポリシーで承認されていることを確認します。
IAM認証
IAM認証を設定するには、Secure AgentをAmazon Elastic Compute Cloud(EC2)システム上で実行する必要があります。キーを指定したり、IAMロールARNを使用したりしない場合は、S3バケットにアクセスできるEC2に最小限のポリシーを割り当てます。
サーバーレスランタイム環境を使用している場合、IAM認証を設定することはできません。
接続でアクセスキーとシークレットキーが指定されていない場合、Amazon S3 V2コネクタでは、必要に応じてAWS資格情報プロバイダチェーンが使用され、資格情報が次の順序で検索されます。
- 1AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYまたはAWS_ACCESS_KEYとAWS_SECRET_KEY環境変数。
- 2aws.accessKeyIdとaws.secretKey javaシステムプロパティ。
- 3デフォルトの場所~/.aws/credentialsにある資格情報プロファイルファイル。
- 4Amazon EC2メタデータサービスによって配信されるインスタンスプロファイル資格情報。
EC2でIAM認証を設定するには、次の手順を実行します。
- 1最小限のAmazon IAMポリシーを作成します。
- 2Amazon EC2ロールを作成します。Amazon EC2ロールは、EC2システムを作成する場合に使用されます。Amazon EC2ロールの作成の詳細については、AWSのマニュアルを参照してください。
- 3最小限のAmazon IAMポリシーをAmazon EC2ロールにリンクします。
- 4EC2インスタンスを作成します。手順2で作成したAmazon EC2ロールをEC2インスタンスに割り当てます。
- 5EC2システムにセキュアエージェントをインストールします。
EC2ロールとIAMユーザーを使用したAssumeRole
EC2ロールまたはIAMユーザーを使用したAssumeRoleを設定し、Amazon S3に接続できます。
AssumeRoleを使用した一時的なセキュリティ資格情報を使用すると、同じAWSアカウントまたは異なるAWSアカウントからAWSリソースにアクセスできます。
EC2ロールまたはIAMユーザーを使用したAssumeRoleを設定する場合は、一時的なセキュリティ資格情報を使用するために、[sts:AssumeRole]権限とAWSアカウント内で確立された信頼関係があることを確認してください。信頼関係は、ロールを作成するときに、IAMロールの信頼ポリシーで定義されます。IAMロールにより、EC2ロールまたはIAMユーザーを信頼されたエンティティとして追加し、EC2ロールまたはIAMユーザーに一時的なセキュリティ資格情報の使用とAWSアカウントへのアクセスを許可します。
信頼関係を構築する方法の詳細については、AWSのマニュアルを参照してください。
信頼されたEC2ロールまたはIAMユーザーが一時的なセキュリティ資格情報を要求すると、AWS Security Token Service(AWS STS)によって、指定した期間有効な一時的なセキュリティ資格情報が動的に生成され、信頼されたEC2ロールまたはIAMユーザーにその資格情報が提供されます。
EC2ロールを使用したAssumeRole
[IAMロールARN]接続プロパティで指定したIAMロールを引き受けるようにEC2ロールを設定するには、Amazon S3 V2接続プロパティの[ロールの引き受けにEC2ロールを使用]チェックボックスをオンにします。
Amazon EC2ロールにより、永続的なアクセスキーとシークレットキーを必要とせずに、同じAWSアカウントまたは異なるAWSアカウントから別のIAMロールを引き受けることができます。Amazon EC2ロールにより、別のリージョンから別のIAMロールを引き受けることもできます。
EC2ロールを使用したAssumeRoleを設定する前に、次の前提条件を考慮してください。
- •Secure AgentをAmazon EC2などのAWSサービスにインストールします。
- •AWS EC2サービスにアタッチされたEC2ロールは、Amazon S3へのアクセス権を持っていてはいけませんが、別のIAMロールを引き受ける権限が必要です。
- •EC2ロールが引き受ける必要のあるIAMロールには、アクセス許可ポリシーと信頼ポリシーがアタッチされている必要があります。
IAMユーザーを使用したAssumeRole
IAMユーザーを使用したAssumeRoleを設定するには、Amazon S3 V2接続の作成時に[IAMロールARN]接続プロパティの値を指定します。IAMロールARNは、AWSリソースを一意に識別します。次に、[一時的な資格情報の期間]詳細ソースプロパティおよびターゲットプロパティで、一時的なセキュリティ資格情報を使用できる期間を秒単位で指定します。
IAMユーザーを使用してAssumeRoleを設定する場合は、いくつかのガイドラインに従う必要があります。詳細については、「」を参照してください。
外部ID
Amazon S3バケットが同じAWSアカウントまたは異なるAWSアカウントにある場合に、Amazon S3バケットへのより安全なアクセスのために、AWSアカウントの外部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"
}
}
}
]
AssumeRoleポリシー
一時的なセキュリティ資格情報を使用してAWSリソースにアクセスするには、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ユーザーに一時的なセキュリティ資格情報を使用してAWSリソースにアクセスすることを許可するために、sts:AssumeRoleポリシーと、IAMロールにアタッチされた信頼ポリシーを持っている必要があります。ポリシーは、IAMユーザーがアクセスできるAWSリソースと、IAMユーザーが実行できるアクションを指定します。信頼ポリシーは、AWSリソースにアクセスできるAWSアカウントのIAMユーザーを指定します。
次のポリシーは、サンプルの信頼ポリシーです。
{
"Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::AWS-account-ID:root" },
"Action":"sts:AssumeRole" }
]
}
}
このポリシーでは、Principal属性で、IAMユーザーのARNを入力して、指定されたユーザーが一時的なセキュリティ資格情報を動的に生成できるようにすることもでき、それ以上のアクセスを制限できます。
以下に例を示します。
"Principal" : { "AWS" : "arn:aws:iam:: AWS-account-ID :user/ user-name " }
資格情報プロファイルファイルの認証
Amazon S3との接続を確立するために必要な資格情報は、資格情報プロファイルファイルで指定できます。
認証情報プロファイルファイルのパスを指定しない場合は、デフォルトの認証情報ファイルのパスが使用されます。プロファイル名を指定しない場合、認証情報は認証情報ファイルのデフォルトプロファイルから使用されます。
認証情報プロファイルファイルについては、次のルールを考慮してください。
次の例は、資格情報プロファイルファイルを示しています:
[default]
aws_access_key_id = 1233333
aws_secret_access_key = abcabcabc
[test-profile]
aws_access_key_id = 1233333
aws_secret_access_key = abcabcabc
aws_session_token = jahaheieomdrtflmlioerp
aws_access_key_idとaws_secret_access_keyは、ユーザーを認証するための認証情報の一部として使用されるAWSアクセスキーとシークレットキーです。
aws_session_tokenは、ユーザーを認証するための認証情報の一部として使用されるAWSセッショントークンです。セッショントークンは、一時的なセキュリティ認証情報を指定する場合にのみ必要です。