Настройка доступа по защищенному токену
С помощью защищенных токенов (secure token) вы можете ограничить доступ к файлам CDN-ресурса. Доступ к файлам будет осуществляться по подписанным ссылкам с ограниченным сроком действия.
Также с помощью защищенных токенов можно задать доверенный IP-адрес, с которого будет разрешен доступ к CDN-ресурсу.
Включение доступа
Чтобы включить доступ по защищенному токену:
-
Придумайте секретный ключ — произвольную строку длиной от 6 до 32 символов. Он будет сохранен в настройках CDN-ресурса и использоваться для формирования подписанных ссылок.
-
На вашем сайте настройте генерацию подписанных ссылок с защищенными токенами.
-
Включите для CDN-ресурса доступ по защищенному токену:
Консоль управленияCLITerraformAPI-
В консоли управления
выберите каталог, в котором расположен ресурс. -
Выберите сервис Cloud CDN.
-
Нажмите на имя необходимого ресурса.
-
В правом верхнем углу нажмите кнопку
Редактировать. -
Включите опцию Доступ по защищённому токену:
-
Укажите Секретный ключ — произвольную строку длиной от 6 до 32 символов. Секретный ключ потребуется для генерации подписанных ссылок.
Сохраненный секретный ключ вы всегда сможете посмотреть в консоли управления или с помощью команды CLI
yc cdn resource list
. -
В поле Ограничение доступа по IP-адресу задайте ограничение на доступ к контенту по IP-адресу:
Только доверенные IP-адреса
— доступ к файлам будет разрешен только с определенного IP-адреса получателя контента. IP-адрес задается вне CDN-ресурса и указывается в качестве параметра при формировании MD5 -хэша для подписанной ссылки.Без ограничений
— доступ к файлам будет разрешен с любых IP-адресов.
-
-
Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
.-
Посмотрите описание команды CLI для редактирования ресурсов:
yc cdn resource update --help
-
Получите список всех ресурсов в каталоге по умолчанию:
yc cdn resource list --format yaml
Результат:
id: bc8br5k6iohx******** folder_id: b1gt6g8ht345******** cname: testexample.com created_at: "2022-01-19T09:23:57.921365Z" updated_at: "2022-01-19T10:55:30.305141Z" active: true options: edge_cache_settings: enabled: true default value: "345600" cache_http_headers: enabled: true value: - content-type - content-length - connection - server - date - test stale: enabled: true value: - error - updating allowed_http_methods: value: - GET - POST - HEAD - OPTIONS origin_group_id: "89783" origin_group_name: My origins group origin_protocol: HTTP ssl_certificate: type: DONT_USE status: READY
Сохраните идентификатор (
id
) ресурса, для которого вы хотите настроить доступ по защищенному токену. -
Включите доступ по защищенному токену:
yc cdn resource update \ --id <идентификатор_ресурса> \ --secure-key <секретный_ключ> \ --enable-ip-url-signing
Где:
--id
— идентификатор CDN-ресурса, для которого вы хотите включить доступ по защищенному токену.--secure-key
— секретный ключ, созданный ранее.--enable-ip-url-signing
— (опционально) параметр, который включает ограничение доступа к CDN-ресурсу по IP-адресу. Сам доверенный IP-адрес задается вне CDN-ресурса и указывается в качестве параметра при формировании MD5 -хэша для подписанной ссылки. Если параметр не задан, доступ к файлам будет разрешен с любых IP-адресов.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Откройте файл конфигурации Terraform и добавьте параметры в блок с описанием CDN-ресурса:
resource "yandex_cdn_resource" "my_resource" { ... options { ... secure_key = "<секретный_ключ>" enable_ip_url_signing = true } }
Где:
secure_key
— секретный ключ, созданный ранее.enable_ip_url_signing
— (опционально) параметр,true
илиfalse
. Включает ограничение доступа к CDN-ресурсу по IP-адресу. Сам доверенный IP-адрес задается вне CDN-ресурса и указывается в качестве параметра при формировании MD5 -хэша для подписанной ссылки. Если параметр не задан, доступ к файлам будет разрешен с любых IP-адресов.
Более подробную информацию о параметрах
yandex_cdn_resource
в Terraform см. в документации провайдера . -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
Проверить изменившиеся параметры CDN-ресурса можно в консоли управления
или с помощью команды CLI:yc cdn resource get <идентификатор_ресурса>
Воспользуйтесь методом REST API update для ресурса Resource или вызовом gRPC API ResourceService/Update.
Чтобы новые настройки существующего ресурса применились к CDN-серверам, может потребоваться до 15 минут. После этого рекомендуется очистить кеш ресурса.
После включения доступа по защищенному токену доступ к контенту CDN-ресурса по обычным ссылкам станет невозможен.
-
Отключение доступа
Чтобы отключить доступ к CDN-ресурсу по защищенному токену:
- В консоли управления
выберите каталог, в котором расположен ресурс. - Выберите сервис Cloud CDN.
- Нажмите на имя необходимого ресурса.
- В правом верхнем углу нажмите кнопку
Редактировать. - Выключите опцию Доступ по защищённому токену.
- Нажмите кнопку Сохранить.
Выполните команду:
yc cdn resource update \
--id <идентификатор_ресурса> \
--clear-secure-key
Где:
--id
— идентификатор CDN-ресурса, для которого вы хотите отключить доступ по защищенному токену.--clear-secure-key
— параметр для отключения доступа по защищенному токену.
-
Откройте файл конфигурации Terraform и удалите параметры
secure_key
иenable_ip_url_signing
в блоке с описанием CDN-ресурса:resource "yandex_cdn_resource" "my_resource" { ... options { ... secure_key = "<секретный_ключ>" enable_ip_url_signing = true } }
Более подробную информацию о параметрах
yandex_cdn_resource
в Terraform см. в документации провайдера . -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
Проверить изменившиеся параметры CDN-ресурса можно в консоли управления
yc cdn resource get <идентификатор_ресурса>
Воспользуйтесь методом REST API update для ресурса Resource или вызовом gRPC API ResourceService/Update.
Чтобы новые настройки существующего ресурса применились к CDN-серверам, может потребоваться до 15 минут. После этого рекомендуется очистить кеш ресурса.