認証の準備
Amazon S3にアクセスするために、複数の認証タイプを設定できます。
接続プロパティを設定する前に、使用する認証のタイプに基づいて認証の詳細を用意しておく必要があります。
最小限の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セッショントークンです。セッショントークンは、一時的なセキュリティ認証情報を指定する場合にのみ必要です。
IAM Roles Anywhere認証
AWS IAM Roles Anywhere認証を設定して、長期的な認証情報の代わりにX.509証明書を使用して、AWS外部のサーバー、アプリケーション、またはコンテナからAmazon S3リソースに安全にアクセスするための一時的なセキュリティ資格情報を生成できます。
IAM Roles Anywhere認証を設定するには、CA証明書の作成、一時的な資格情報の生成、資格情報プロファイルファイルの作成など、特定の前提条件を完了する必要があります。
資格情報プロファイルファイルには、トラストアンカー、プロファイル、IAMロールの各ARN、およびCA証明書とプライベートキーのファイルパスが含まれている必要があります。
IAM Roles Anywhere認証を使用するには、次の前提条件を満たす必要があります。
- 1認証局を設定します。
AWS Private Certificate Authorityを使用して認証局を作成し、CA証明書をインストールして認証局をアクティブ化します。
- 2IAM Roles Anywhereを設定します。
- aIAM Roles Anywhereで、作成した認証局を使用してトラストアンカーを作成します。
- b最小限のS3権限を持つIAMロールと、IAM Roles Anywhereがそのロールを引き受けることを許可する信頼ポリシーを作成します。
- cIAM Roles Anywhereコンソールでプロファイルを作成し、IAMロールをトラストアンカーにリンクします。
- 3証明書を生成してダウンロードします。
- aAWS Certificate Managerで、認証局に関連付けられたプライベート証明書を要求して取得します。
- b証明書本体、証明書チェーン、および証明書プライベートキーをダウンロードしてエクスポートします。
- cOpenSSLを使用してプライベートキーを復号します。
- dプライベートキー、復号されたプライベートキー、および証明書をローカルディレクトリに配置します。
- 4IAM資格情報ヘルパーをインストールし、aws_signing_helperツールを使用して、CreateSession APIを介して一時的な資格情報を要求します。
- 5証明書ファイルとキーファイルへのARNやパスなど、プロファイルの詳細が含まれるAWS資格情報ファイルを作成します。
資格情報プロファイルファイルで以下のパラメータを指定します。
- - <agent_loc>\aws_signing_helper.exe.AWS資格情報ヘルパーツールへのパス。
- - --certificate <agent_loc>\certificate.pem.X.509証明書ファイルへのパス。この証明書は、IAM Roles Anywhereから一時的な資格情報を要求するIDを認証するために使用されます。
- - --private-key <agent_loc>\decrypted_private_key.pem.証明書に対応する復号されたプライベートキーへのパス。
- - --trust-anchor-arn <arn of trust anchor>IAM Roles Anywhereと認証局の間の信頼を確立するトラストアンカーのAmazonリソースネーム(ARN)。
- - --profile-arn <arn of profile>IAM Roles Anywhereで設定したプロファイルのARN。プロファイルは、引き受けることができるIAMロールや、発行された一時的なセキュリティ資格情報で実行できる操作を指定します。
- - --role-arn <arn of role>資格情報ヘルパーが引き受けるIAMロールのARN。
- - --session-duration <time in seconds>一時セッション資格情報が有効な期間。このパラメータはオプションです。
次の例は、資格情報プロファイルファイルを示しています:
[profile_name]
credential_process = <Secure Agent installation drirectory>\aws_signing_helper.exe credential-process --certificate <agent_loc>\certificate.pem --private-key <agent_loc>\decrypted_private_key.pem --trust-anchor-arn <arn of trust anchor> --profile-arn <arn of profile> --role-arn <arn of role> --session-duration <time in seconds>
Amazon S3 V2接続の作成時に[その他の認証タイプ]フィールドで[資格情報プロファイルファイル認証]を選択し、資格情報プロファイルファイルのパスとプロファイル名を指定します。
資格情報プロファイルファイルのルール
認証情報プロファイルファイルについては、次のルールを考慮してください。
IAM Roles Anywhere認証の設定方法の詳細については、
AWS documentationを参照してください。