مشاركة عبر


إنشاء حساب 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).

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

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

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

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

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

إعداد مشروعك

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

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
import com.azure.storage.common.sas.AccountSasPermission;
import com.azure.storage.common.sas.AccountSasResourceType;
import com.azure.storage.common.sas.AccountSasService;
import com.azure.storage.common.sas.AccountSasSignatureValues;

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

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

لتكوين قيم التوقيع لحساب SAS، استخدم فئات المساعد التالية:

  • AccountSasPermission: يمثل الأذونات المسموح بها من قبل SAS. في مثالنا، قمنا بتعيين إذن القراءة إلى true.
  • AccountSasService: يمثل الخدمات التي يمكن الوصول إليها بواسطة SAS. في مثالنا، نسمح بالوصول إلى خدمة Blob.
  • AccountSasResourceType: يمثل أنواع الموارد التي يمكن الوصول إليها بواسطة SAS. في مثالنا، نسمح بالوصول إلى واجهات برمجة التطبيقات على مستوى الخدمة.

بمجرد تكوين فئات المساعد، يمكنك تهيئة معلمات SAS باستخدام مثيل AccountSasSignatureValues .

يوضح مثال التعليمات البرمجية التالي كيفية تكوين معلمات SAS واستدعاء أسلوب generateAccountSas للحصول على SAS للحساب:

public String createAccountSAS(BlobServiceClient blobServiceClient) {
    // Configure the SAS parameters
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
    AccountSasPermission accountSasPermission = new AccountSasPermission()
            .setReadPermission(true);
    AccountSasService services = new AccountSasService()
            .setBlobAccess(true);
    AccountSasResourceType resourceTypes = new AccountSasResourceType()
            .setService(true);

    // Generate the account SAS
    AccountSasSignatureValues accountSasValues = new AccountSasSignatureValues(
        expiryTime,
        accountSasPermission,
        services,
        resourceTypes);
    String sasToken = blobServiceClient.generateAccountSas(accountSasValues);

    return sasToken;
}

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

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

أولا، إنشاء كائن BlobServiceClient موقع باستخدام مفتاح الوصول إلى الحساب:

String accountName = "<account-name>";
String accountKey = "<account-key>";
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
        
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint(String.format("https://%s.blob.core.windows.net/", accountName))
        .credential(credential)
        .buildClient();

ثم قم بإنشاء حساب SAS كما هو موضح في المثال السابق واستخدم SAS لتخويل كائن BlobServiceClient :

// Create a SAS token
String sasToken = createAccountSAS(blobServiceClient);

// Create a new BlobServiceClient using the SAS token
BlobServiceClient sasServiceClient = new BlobServiceClientBuilder()
        .endpoint(blobServiceClient.getAccountUrl())
        .sasToken(sasToken)
        .buildClient();

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

الموارد

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

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

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

(راجع أيضًا )