إنشاء حساب SAS باستخدام Python

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

يتم عملية توقيع كل SAS بمفتاح. يمكنك توقيع SAS بإحدى طريقتين:

  • باستخدام مفتاح تم إنشاؤه باستخدام بيانات اعتماد Microsoft Entra. SAS الذي تم توقيعه باستخدام بيانات اعتماد Microsoft Entra هو SAS لتفويض المستخدم. يجب أن يتم تعيين دور Azure RBAC للعميل الذي يقوم بإنشاء تحويل مستخدم SAS والذي يتضمن الإجراء Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. لمعرفة المزيد، راجع إنشاء توقيعات الوصول المشترك لتفويض المستخدم.
  • باستخدام مفتاح حساب التخزين. يتم توقيع كل من توقيع الوصول المشترك للخدمة و توقيع الوصول المشترك للحساب باستخدام مفتاح حساب التخزين. يجب أن يكون للعميل الذي ينشئ خدمة SAS حق وصول مباشر إلى مفتاح الحساب أو أن يتم تعيين إذن Microsoft.Storage/storageAccounts/listkeys/action. لمعرفة المزيد، راجع إنشاء SAS خدمة أو إنشاء حساب SAS.

إشعار

يوفر توقيع الوصول المشترك لتفويض المستخدم أماناً فائقاً لتوقيع الوصول المشترك الموقع باستخدام مفتاح حساب التخزين. توصي Microsoft باستخدام توقيع الوصول المشترك لتفويض المستخدم عندما يكون ذلك ممكناً. لمعرفة المزيد من المعلومات حول مفاتيح SAS، راجع منح وصول محدود إلى البيانات باستخدام توقيعات الوصول المشتركة (SAS).

توضح هذه المقالة كيفية استخدام مفتاح حساب التخزين لإنشاء حساب SAS باستخدام مكتبة عميل Azure Storage ل Python.

نبذة عن SAS للحساب

يتم إنشاء حساب SAS على مستوى حساب التخزين. من خلال إنشاء حساب SAS، يمكنك:

  • تفويض الوصول إلى العمليات على مستوى الخدمة غير المتوفرة حاليا مع SAS الخاصة بالخدمة، مثل الحصول على خصائص خدمة Blob وتعيين خصائص خدمة Blob والحصول على إحصائيات خدمة Blob.
  • تفويض الوصول إلى أكثر من خدمة واحدة في حساب تخزين في كل مرة. على سبيل المثال، يمكنك تفويض الوصول إلى الموارد في كل من Azure Blob Storage وAzure Files باستخدام حساب SAS.

نهج الوصول المخزنة غير مدعومة لحساب SAS.

إنشاء SAS للحساب

يتم توقيع SAS للحساب باستخدام مفتاح الوصول إلى الحساب. يوضح مثال التعليمات البرمجية التالي كيفية استدعاء أسلوب generate_account_sas للحصول على سلسلة رمز SAS المميز للحساب.

def create_account_sas(self, account_name: str, account_key: str):
    # Create an account SAS that's valid for one day
    start_time = datetime.datetime.now(datetime.timezone.utc)
    expiry_time = start_time + datetime.timedelta(days=1)

    # Define the SAS token permissions
    sas_permissions=AccountSasPermissions(read=True)

    # Define the SAS token resource types
    # For this example, we grant access to service-level APIs
    sas_resource_types=ResourceTypes(service=True)

    sas_token = generate_account_sas(
        account_name=account_name,
        account_key=account_key,
        resource_types=sas_resource_types,
        permission=sas_permissions,
        expiry=expiry_time,
        start=start_time
    )

    return sas_token

المعلمات الصالحة لمنشئ ResourceTypes هي:

  • الخدمة: الافتراضي هو False؛ تعيين إلى True لمنح الوصول إلى واجهات برمجة التطبيقات على مستوى الخدمة.
  • الحاوية: الافتراضي هو False؛ تعيين إلى True لمنح الوصول إلى واجهات برمجة التطبيقات على مستوى الحاوية.
  • الكائن: الافتراضي هو False؛ تعيين إلى True لمنح الوصول إلى واجهات برمجة التطبيقات على مستوى الكائن للكائنات الثنائية كبيرة الحجم ورسائل قائمة الانتظار والملفات.

للحصول على الأذونات المتوفرة، راجع AccountSasPermissions.

استخدام حساب SAS من عميل

لاستخدام SAS للحساب للوصول إلى واجهات برمجة التطبيقات على مستوى الخدمة لخدمة Blob، قم بإنشاء كائن BlobServiceClient باستخدام حساب SAS ونقطة نهاية Blob Storage لحساب التخزين الخاص بك.

# The SAS token string can be appended to the account URL with a ? delimiter
# or passed as the credential argument to the client constructor
account_sas_url = f"{blob_service_client.url}?{sas_token}"

# Create a BlobServiceClient object
blob_service_client_sas = BlobServiceClient(account_url=account_sas_url)

يمكنك أيضا استخدام حساب SAS لتخويل كائن ContainerClient أو كائن BlobClient والعمل معه، إذا تم منح أنواع الموارد هذه حق الوصول كجزء من قيم التوقيع.

الموارد

لمعرفة المزيد حول إنشاء حساب SAS باستخدام مكتبة عميل Azure Blob Storage ل Python، راجع الموارد التالية.

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

موارد مكتبة العميل

(راجع أيضًا )