Я пытаюсь создать пользовательское делегирование sas для большого двоичного объекта учетной записи хранения в Azure и нашел этот документ.
https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas
Просматривая документ, я обнаружил, что SAS делегирования пользователей предоставляет доступ к ресурсам хранилища BLOB-объектов Azure с использованием учетных данных Microsoft Entra. Нам необходимо создать «Ключ делегирования пользователя», который будет использоваться для подписи SAS делегирования пользователя (подпись общего доступа).
В нем также упоминается, что мы можем указать срок действия ключа делегирования пользователя до семи дней и создать токен SAS в течение срока действия ключа.
Мне нужно, чтобы токен SAS был длиннее. Токен sas должен быть статическим и будет безопасно передан внешнему клиенту в течение как минимум одного месяца.
Альтернативой было бы создание сервиса SAS.
https://learn.microsoft.com/en-us/rest/api/storageservices/create-service-sas
Поскольку Microsoft рекомендует использовать Microsoft Entra ID с управляемыми удостоверениями, не могли бы вы сообщить мне, есть ли какой-либо другой метод, с помощью которого я могу использовать Microsoft Entra ID с управляемыми удостоверениями для создания токена SAS как минимум на один месяц?


Не могли бы вы сообщить мне, есть ли какие-либо другие методы, с помощью которых я могу использовать Microsoft Entra ID с управляемыми удостоверениями для создания токена SAS как минимум на один месяц?
Вы можете использовать приведенный ниже код Python или запрос REST API для создания токена Service SAS с управляемым удостоверением.
Код:
from azure.identity import DefaultAzureCredential
from azure.mgmt.storage import StorageManagementClient
from datetime import datetime, timedelta
def main():
client_id = "xxxx"
client = StorageManagementClient(credential=DefaultAzureCredential(managed_identity_client_id=client_id),
subscription_id = "xxx",
)
start_time = datetime.utcnow()
expiry_time = start_time + timedelta(days=30)
response = client.storage_accounts.list_service_sas(
resource_group_name = "<Your-resource-group-name>",
account_name = "<storage-account-name>",
parameters = {
"canonicalizedResource": "/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
"signedExpiry": expiry_time.strftime('%Y-%m-%dT%H:%M:%SZ'),
"signedPermission": "rcwl",
"signedProtocol":"https",
"signedResource": "c",
},
)
print(response)
if __name__ == "__main__":
main()
Выход:
{'additional_properties': {}, 'service_sas_token': 'sv=2015-04-05&sr=c&spr=https&se=2024-07-05T08%3A29%3A19.0000000Z&sp=rcwl&sig=P%2Bhz6xxxxxx%3D'}

Приведенный выше код сгенерирует токен Service SAS сроком на один месяц.
Ссылка: