You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel对接AWS S3使用客户托管CMK的配置修改方法咨询

适配客户托管CMK的Laravel S3配置修改方案
  • 首先确认AWS_SERVER_SIDE_ENCRYPTION环境变量值设置为aws:kms,客户托管CMK强制要求使用该加密类型
  • 在s3配置的options数组中新增SSEKMSKeyId参数,传入你在AWS KMS中创建的客户托管CMK的ARN(推荐使用ARN避免跨区域、跨账号场景下的识别歧义)
  • 确保你使用的AWS访问密钥对应的IAM身份,已被授予对应CMK的kms:GenerateDataKey、kms:Decrypt权限,否则上传/读取文件时会触发权限报错

修改后的config/filesystems.php完整S3配置如下:

's3' => [
    'driver'   => 's3',
    'key'      => env('AWS_ACCESS_KEY_ID'),
    'secret'   => env('AWS_SECRET_ACCESS_KEY'),
    'region'   => env('AWS_DEFAULT_REGION'),
    'bucket'   => env('AWS_BUCKET'),
    'url'      => env('AWS_URL'),
    'endpoint' => env('AWS_ENDPOINT'),
    'options'  => [
        'ServerSideEncryption' => env('AWS_SERVER_SIDE_ENCRYPTION'),
        // 新增客户托管CMK配置项
        'SSEKMSKeyId' => env('AWS_S3_KMS_KEY_ID'),
    ],
],

对应.env文件新增配置示例:

# 客户托管CMK加密类型固定为aws:kms
AWS_SERVER_SIDE_ENCRYPTION=aws:kms
# 替换为你的CMK实际ARN,格式参考:arn:aws:kms:区域:账号ID:key/密钥ID
AWS_S3_KMS_KEY_ID=arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-1234567890ab

如果需要对个别文件使用不同的CMK加密,可在上传时手动指定参数覆盖全局配置:

Storage::disk('s3')->put('example.txt', $fileContent, [
    'SSEKMSKeyId' => '其他CMK的ARN'
]);

内容的提问来源于stack exchange,提问作者matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:09:06