# #python #google-cloud-platform
Вопрос:
Я пытаюсь сгенерировать подписанный URL-адрес для объекта облачного хранилища Google без истечения срока действия. Но когда я создаю подписанный URL-адрес с помощью процесса подписания V4, срок его действия истекает через семь дней.
Есть ли какая-либо альтернатива для достижения этой цели?
Кроме того, каково было время истечения срока действия процесса подписания?
Комментарии:
1. @JohnHanley Единственным ограничением срока действия для версии 2 является размер int. Подписанные URL-адреса V2 могут храниться годами. Вы можете ознакомиться с обсуждением здесь . В любом случае, V4 более стандартизирован, и пользователям рекомендуется использовать этот процесс подписания.
2. @dondi — Спасибо вам за это исправление.
3. Большое спасибо и высоко ценю вас обоих.
Ответ №1:
В дополнение к ответу @DazWilkin, невозможно создать подписанный URL-адрес без истечения срока действия. Процесс подписания версии 2 должен принимать действительную метку времени Unix в секундах. Вы можете ввести 64-разрядные целочисленные значения, но убедитесь, что метка времени действительна. Существуют инструменты, которые могут конвертировать временные метки в формат даты и времени.
Если вы попытаетесь установить неверную метку времени Unix, вы получите MalformedSecurityHeader
ответ.
Однако, если вы настаиваете на подписанном URL-адресе со сроком действия более недели, вы можете использовать процесс подписания V2. Как я уже упоминал в комментарии, подписанные URL-адреса V2 могут сохраняться годами.
Если вы используете клиентскую библиотеку, сначала убедитесь, что сначала настроили аутентификацию:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/keyfile.json"
Быстрый пример кода (модифицированная версия процесса подписания V4):
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(blob_name)
url = blob.generate_signed_url(
version="v2",
# This URL is valid for 365 days
expiration=datetime.timedelta(days=365),
# Allow GET requests using this URL.
method="GET",
)
Для получения дополнительной информации обратитесь к процессу подписания.
Ответ №2:
Цель подписанных URL-адресов состоит в том, чтобы предоставить ограниченный по времени доступ к URL-адресу облачного хранилища.
Уберите ограничение по времени, и вы, возможно, захотите просто опубликовать URL-адрес.
Подписанные URL-адреса доступны для всего, что имеет этот URL-адрес. Итак, если вас беспокоит обнаружение угадываемых URL-адресов (например my-bucket/my-object-path
), вы можете подумать о том, чтобы запутать имя объекта, возможно, используя кодировку base64, чтобы сделать URL менее угадываемым, хотя и легко выводимым:
my-bucket/my-object-path
—> my-bucket/bXktb2JqZWN0LXBhdGg=
Комментарии:
1. Спасибо за предложение. Да, подписанные URL-адреса хороши, но, по крайней мере, есть ли шанс увеличить промежуток времени. И каково будет максимальное время истечения срока действия для процесса подписания v2 ?