#laravel #amazon-s3
Вопрос:
У меня есть корзина S3, которая используется для хранения файлов через Laravel. Я обновил политику корзины, чтобы использовать CMK, управляемый клиентом, и я не могу понять или найти, какую конфигурацию использовать в Laravel
Это то, что у меня есть, config/filesystems
и оно отлично работает со стандартной политикой корзины и CMK, управляемым AWS
'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, управляемый клиентом?
Ответ №1:
Неясно, что именно вы передаете, ServerSideEncryption
поскольку вы получаете это из env var, но это параметры, доступные в PHP SDK для putObject:
'SSEKMSKeyId' => '<string>',
'ServerSideEncryption' => 'AES256|aws:kms',
Исходя из этого, я считаю, что ваша конфигурация должна выглядеть следующим образом:
'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' => 'aws:kms',
'SSEKMSKeyId' => env('SSE_KMS_KEY_ARN')
],
],
где SSE_KMS_KEY_ARN
находится ARN ключа KMS CMK, с помощью которого вы хотите зашифровать.