ablog

不器用で落着きのない技術者のメモ

IAMユーザーのクレデンシャルで認証後、スイッチロールして S3 にアクセスする設定

AWS CLI で IAM ユーザーのクレデンシャルで認証して、スイッチロールして S3 にアクセスする設定。

実行コマンド
$ aws s3 ls  --profile s3_access --endpoint-url https://bucket.vpce-********-********.s3.ap-northeast-1.vpce.amazonaws.com
  • IAMロールで認証後にスイッチロールするので、STSVPC エンドポイントがないと失敗する。
2024-07-31 05:05:46,977 - MainThread - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (2): sts.ap-northeast-1.amazonaws.com:443

AWS 側の設定

IAM ユーザー: s3-upload-user
  • アタッチする IAM ポリシー
    • AmazonS3ReadOnlyAccess(AWS管理)
    • s3-upload-policy(カスタマー管理)
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/s3-upload-role"
            ]
        }
    ]
}
  • クレデンシャルを発行して、AWS CLI 側で設定する
IAMロール: s3-upload-role
  • アタッチする IAM ポリシー
    • AmazonS3FullAccess(AWS管理)
  • 信頼関係
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/s3-upload-user"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
VPCエンドポイント
  • com.amazonaws.ap-northeast-1.s3(Interface型)
  • com.amazonaws.ap-northeast-1.sts(Interface型)

クライアント側設定

  • ~/.aws/config
[profile s3_access]
region = ap-northeast-1
role_arn = arn:aws:iam::123456789012:role/s3-upload-role
source_profile=s3_access
  • ~/.aws/credential
[s3_access]
aws_access_key_id = ********
aws_secret_access_key = ********