مشاركة عبر


إنشاء SAS لتفويض مستخدم لحاوية أو كائن ثنائي كبير الحجم باستخدام Java

يتيح لك توقيع الوصول المشترك (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).

توضح هذه المقالة كيفية استخدام بيانات اعتماد Microsoft Entra لإنشاء SAS لتفويض مستخدم لحاوية أو كائن ثنائي كبير الحجم باستخدام مكتبة عميل Azure Storage ل Java.

حول توقيع الوصول المشترك لتفويض مستخدم

قد يتم تأمين رمز SAS المميز للوصول إلى حاوية أو كائن ثنائي كبير الحجم باستخدام بيانات اعتماد Microsoft Entra أو مفتاح حساب. يسمى SAS المؤمن ببيانات اعتماد Microsoft Entra SAS لتفويض المستخدم، لأن الرمز المميز OAuth 2.0 المستخدم لتوقيع SAS مطلوب نيابة عن المستخدم.

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

تنبيه

يمكن لأي عميل يمتلك توقيع وصول مشترك صالح الوصول إلى البيانات في حساب التخزين خاصتك كما هو مسموح به من توقيع الوصول المشترك. من المهم حماية توقيع الوصول المشترك من الاستخدام الضار أو غير المقصود. استخدم التقدير في توزيع توقيع الوصول المشترك، وضع خطة لإلغاء توقيع الوصول المشترك المُخترق.

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

قم بتعيين أدوار Azure للوصول إلى البيانات

عندما يحاول أساس أمان Microsoft Entra الوصول إلى البيانات، يجب أن يكون لمدير الأمان هذا أذونات للمورد. سواء كان أساس الأمان هوية مدارة في Azure أو حساب مستخدم Microsoft Entra يقوم بتشغيل التعليمات البرمجية في بيئة التطوير، يجب تعيين دور Azure لمدير الأمان الذي يمنح الوصول إلى البيانات. لمزيد من المعلومات حول التحكم في الوصول استناداً إلى الدور Azure، راجع تعيين دور Azure للوصول إلى بيانات الكائن الثنائي كبير الحجم.

إعداد مشروعك

للعمل مع أمثلة التعليمات البرمجية في هذه المقالة، أضف توجيهات الاستيراد التالية:

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;

الحصول على بيانات اعتماد الرمز المميز المصادق عليها

للحصول على بيانات اعتماد رمز مميز يمكن أن تستخدمها التعليمات البرمجية الخاصة بك لتخويل الطلبات إلى Blob Storage، قم بإنشاء مثيل لفئة DefaultAzureCredential . لمزيد من المعلومات حول استخدام فئة DefaultAzureCredential لتخويل هوية مدارة للوصول إلى Blob Storage، راجع مكتبة عميل Azure Identity ل Java.

يوضح مقتطف التعليمات البرمجية التالي كيفية الحصول على بيانات اعتماد الرمز المميز المصادق عليه واستخدامه لإنشاء عميل خدمة لتخزين كائن ثنائي كبير الحجم:

BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint("https://<storage-account-name>.blob.core.windows.net/")
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

لمعرفة المزيد حول تخويل الوصول إلى Blob Storage من تطبيقاتك باستخدام Java SDK، راجع مصادقة Azure مع Java وAzure Identity.

الحصول على مفتاح التفويض الخاص بالمستخدم

يتم عملية توقيع كل SAS بمفتاح. لإنشاء SAS تفويض مستخدم، يجب عليك أولا طلب مفتاح التفويض الخاص بالمستخدم، والذي يتم استخدامه بعد ذلك لتوقيع SAS. مفتاح تفويض المستخدم مشابه لمفتاح الحساب المستخدم لتوقيع SAS للخدمة أو SAS للحساب، باستثناء أنه يعتمد على بيانات اعتماد Microsoft Entra. عندما يطلب عميل مفتاح تفويض مستخدم باستخدام رمز OAuth 2.0 المميز، يقوم Blob Storage بإرجاع مفتاح تفويض المستخدم نيابة عن المستخدم.

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

استخدم إحدى الطرق التالية لطلب مفتاح التفويض الخاص بالمستخدم:

يوضح مثال التعليمات البرمجية التالي كيفية طلب مفتاح تفويض المستخدم:

public UserDelegationKey requestUserDelegationKey(BlobServiceClient blobServiceClient) {
    // Request a user delegation key that's valid for 1 day, as an example
    UserDelegationKey userDelegationKey = blobServiceClient.getUserDelegationKey(
        OffsetDateTime.now().minusMinutes(5),
        OffsetDateTime.now().plusDays(1));

    return userDelegationKey;
}

إنشاء تفويض مستخدم SAS

يمكنك إنشاء توقيعات الوصول المشترك لتفويض المستخدم لحاوية أو كائن ثنائي كبير الحجم، استنادا إلى احتياجات تطبيقك.

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

يتم تمرير مفتاح تفويض المستخدم لتوقيع SAS إلى هذا الأسلوب مع القيم المحددة ل BlobServiceSasSignatureValues. يتم تحديد الأذونات كمثيل BlobContainerSasPermission .

يوضح مثال التعليمات البرمجية التالي كيفية إنشاء SAS لتفويض مستخدم لحاوية:

public String createUserDelegationSASContainer(BlobContainerClient containerClient, UserDelegationKey userDelegationKey) {
    // Create a SAS token that's valid for 1 day, as an example
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);

    // Assign read permissions to the SAS token
    BlobContainerSasPermission sasPermission = new BlobContainerSasPermission()
            .setReadPermission(true);

    BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, sasPermission)
            .setStartTime(OffsetDateTime.now().minusMinutes(5));

    String sasToken = containerClient.generateUserDelegationSas(sasSignatureValues, userDelegationKey);
    return sasToken;
}

استخدام توقيعات الوصول المشترك لتفويض مستخدم لتخويل كائن عميل

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

يوضح مثال التعليمات البرمجية التالي كيفية استخدام توقيع الوصول المشترك لتفويض المستخدم الذي تم إنشاؤه في المثال السابق لتخويل كائن BlobContainerClient . يمكن استخدام كائن العميل هذا لتنفيذ العمليات على مورد الحاوية استنادا إلى الأذونات الممنوحة من قبل SAS.

// Create a SAS token for a container
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient("sample-container");
String sasToken = createUserDelegationSASContainer(containerClient, userDelegationKey);

// Create a new BlobContainerClient using the SAS token
BlobContainerClient sasContainerClient = new BlobContainerClientBuilder()
        .endpoint(containerClient.getBlobContainerUrl())
        .sasToken(sasToken)
        .buildClient();

الموارد

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

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

عمليات واجهة برمجة تطبيقات REST

يحتوي Azure SDK ل Java على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، مما يسمح لك بالتفاعل مع عمليات REST API من خلال نماذج Java المألوفة. تستخدم طريقة مكتبة العميل للحصول على مفتاح تفويض مستخدم عملية REST API التالية:

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

(راجع أيضًا )

  • هذه المقالة هي جزء من دليل مطور Blob Storage ل Java. لمعرفة المزيد، راجع القائمة الكاملة لمقالات دليل المطور في إنشاء تطبيق Java الخاص بك.