قم بإنشاء تعريف SAS وإحضار الرموز المميزة لتوقيع الوصول المشترك في التعليمة البرمجية (قديم)

يمكنك إدارة حساب تخزينك مستخدماً رموز مميزة لتوقيع الوصول المشترك (SAS) المخزنة في key vault. للتعرف على معلومات أكثر، راجعمنح وصول محدود إلى موارد تخزين Azure باستخدام SAS.

ملاحظة

نوصي باستخدام التحكم في الوصول المستند إلى دور (Azure RBAC) لتأمين حساب تخزينك لضمان مستوى عالٍ من الأمان وسهولة الاستخدام عبر تفويض المفتاح المشترك.

توفر هذه المقالة نماذج من كود .NET الذي ينشئ تعريف SAS ويحضر رموز SAS المميزة. راجع نموذج ShareLink للحصول على التفاصيل الكاملة بما في ذلك العميل الذي تم إنشاؤه لحسابات التخزين المدار في Key Vault. للحصول على معلومات حول كيفية إنشاء وتخزين رموز SAS المميزة، راجع إدارة مفاتيح حساب التخزين باستخدام مفتاح Vault أو Azure CLI أو إدارة مفاتيح حساب التخزين باستخدام مفتاح Vault وAzure PowerShell.

نماذج التعليمات البرمجية

سننشئ خلال المثال التالي قالب SAS:

private static string BuildSasDefinitionTemplate(bool readOnly) =>
    new StringBuilder("sv=2018-03-28")  // service version
        .Append("&spr=https")           // HTTPS only
        .Append("&ss=bf")               // blobs and files only
        .Append("&srt=o")               // applies to objects only
        .Append(readOnly ? "&sp=r" : "&sp=rw")  // read-only or read-write
        .ToString();

من خلال استخدام هذا القالب، يمكننا إنشاء تعريف SAS باستخدام

string sasDefinitionName = BuildSasDefinitionName(Tag, readOnly, duration);
SasDefinitionAttributes sasDefinitionAttributes = new SasDefinitionAttributes
{
    Enabled = true,
};

Dictionary<string, string> tags = new Dictionary<string, string>
{
    [Tag] = "1",
};

SasDefinitionBundle createdSasDefinition = await storageClient.SetSasDefinitionAsync(
    storageAccountName,
    sasDefinitionName,
    sasTemplate,
    SasTokenType.Account,
    duration,
    sasDefinitionAttributes,
    tags,
    s_cancellationTokenSource.Token);

بمجرد إنشاء تعريف SAS، يمكنك استرداد رموز SAS المميزة مثل الأسرار باستخدام SecretClient. تحتاج إلى البدء بالاسم السري مع اسم حساب التخزين متبوعاً بشرطة:

// Build our SAS template, get an existing SAS definition, or create a new one.
string sasTemplate = BuildSasDefinitionTemplate(readOnly);
string sasDefinitionName = await GetOrCreateSasDefinitionAsync(storageClient, storageAccountName, sasTemplate, days, readOnly);

// Now we can create a SecretClient and generate a new SAS token from the storage account and SAS definition names.
SecretClient secretClient = new SecretClient(vaultUri, credential, options);
KeyVaultSecret sasToken = await secretClient.GetSecretAsync($"{storageAccountName}-{sasDefinitionName}", cancellationToken: s_cancellationTokenSource.Token);

إذا كان رمز توقيع الوصول المشترك على وشك أن تنتهي صلاحيته، يمكنك استخدام نفس كلمة السر مرة أخرى لإنشاء رمز جديد.

للحصول على دليل حول كيفية استخدام الاسترداد من رمز مفتاح Vault SAS المميز للوصول إلى خدمات تخزين Azure، راجع استخدام حساب SAS للوصول إلى خدمة Blob

ملاحظة

يجب أن يكون تطبيقك مستعداً لتحديث SAS إذا حصل على 403 من Storage حتى تتمكن من التعامل مع الحالة التي تم فيها اختراق المفتاح وتحتاج إلى إتمام عملية التدوير بشكل أسرع من فترة الدوران العادية.

الخطوات التالية