Строгая транспортная безопасность на CloudFront с источником S3?

Сайт моей компании имеет статическую домашнюю страницу по причинам стоимости и скорости. Мы используем S3 в качестве источника для CloudFront. Теперь, мы хотели бы объявить Строгую Транспортную безопасность для всего домена, но S3, кажется, не отправляет любые заголовки, которые мы указываем (вне, запускающихся с подобного x-aws-). CloudFront, кажется, не имеет пользовательской опции заголовка также.

Действительно ли это возможно?

6
задан 22 September 2014 в 05:14
3 ответа

Начиная с 16.07.2017, функциональность, которую вы искали, доступна через Lambda @ Edge, см. http://docs.aws.amazon.com/AmazonCloudFront/latest/ DeveloperGuide / lambda-at-the-edge.html для получения общей документации или конкретный пример на https://nvisium.com/blog/2017/08/10/lambda-edge-cloudfront-custom- headers /

0
ответ дан 3 December 2019 в 00:45

Ответ Дэвида указывает на документы , которые сводятся к следующему:

  1. Создайте такую ​​лямбда-функцию. Обратите внимание, что Lambda @ Edge имеет ограниченный набор сред выполнения и некоторые дополнительные ограничения по сравнению с другими функциями Lambda. Например, все функции должны быть созданы в us-east-1 - CloudFront автоматически копирует их в другие регионы - уровни не поддерживаются, и все триггеры должны использовать явный ARN - без псевдонимов или с использованием $ ПОСЛЕДНИЙ .
'use strict';
exports.handler = (event, context, callback) => {
  const response = event.Records[0].cf.response;
  const headers = response.headers;

  headers['strict-transport-security'] = [{
    key: 'Strict-Transport-Security',
    /* 
     * verify that max-age and 'includeSubdomains' are the settings you want
     */
    value: 'max-age=31536000; includeSubdomains; preload' 
  }];

  callback(null, response);
};
  1. Опубликуйте версию и разверните ее в Lambda @ Edge. Вы не можете использовать $ LATEST или псевдоним для следующего шага.
  2. Свяжите опубликованную версию функции с распределением CloudFront. Если это разовая задача, ее, вероятно, проще выполнить через консоль Lambda . Если вы хотите связать свою функцию с несколькими дистрибутивами, вероятно, проще использовать консоль CloudFront .
  3. Вы захотите установить тип события как origin-response (между S3 и кешем) или viewer-response (между кешем и браузером) и указать ARN с версией, которую вы опубликовали выше - например,

    arn: aws: lambda: us-east-1: 1234567890: function: MY-FUNCTION-NAME: v1

  4. Дождитесь обновления дистрибутива и проверьте наличие заголовков в ответе

1
ответ дан 14 April 2020 в 15:07

Теперь вы можете добавлять заголовки HTTP-ответов изначально в CloudFront (, включая HSTS), без изменения вашего источника или написания функции. Создайте новую политику заголовков ответов с вашей конфигурацией, а затем прикрепите политику к одному или нескольким режимам кэширования.

Документация доступна здесь: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/adding-response-headers.html

1
ответ дан 2 November 2021 в 21:05

Теги

Похожие вопросы