Paylaşılan erişim imzaları (SAS) kullanmaUsing shared access signatures (SAS)

Paylaşılan erişim imzası (SAS), hesap anahtarınız açığa çıkarmadan depolama hesabınızdaki nesnelere sınırlı erişim diğer istemcilere vermenin bir yolunu sağlar.A shared access signature (SAS) provides you with a way to grant limited access to objects in your storage account to other clients, without exposing your account key. Bu makalede, biz SAS modeline genel bakış sağlayın, SAS en iyi uygulamaları gözden geçirin ve bazı örneklere göz atacağız.In this article, we provide an overview of the SAS model, review SAS best practices, and look at some examples.

Burada sunulan olanlar dışında SAS kullanarak ek kod örnekleri için bkz. . NET'te Azure Blob Depolama ile çalışmaya başlama ve kullanılabilir diğer örnekler Azure Kod örnekleri kitaplığı.For additional code examples using SAS beyond those presented here, see Getting Started with Azure Blob Storage in .NET and other samples available in the Azure Code Samples library. Örnek uygulamaları indirin ve bunları çalıştırın veya github'da koduna göz atın.You can download the sample applications and run them, or browse the code on GitHub.

Paylaşılan erişim imzası nedir?What is a shared access signature?

Paylaşılan erişim imzası, depolama hesabınızdaki kaynaklara temsilci erişimi sağlar.A shared access signature provides delegated access to resources in your storage account. Bir SAS ile hesap anahtarlarınızı paylaşmadan depolama hesabınızdaki kaynaklara erişim istemcileri verebilirsiniz.With a SAS, you can grant clients access to resources in your storage account, without sharing your account keys. Bu, uygulamalarınızda paylaşılan erişim imzaları kullanmanın anahtar noktasıdır. SAS, hesap anahtarlarınızı tehlikeye atmadan depolama kaynaklarınızı paylaşmanın güvenli bir yoludur.This is the key point of using shared access signatures in your applications--a SAS is a secure way to share your storage resources without compromising your account keys.

İpucu

Azure depolama, Azure Active Directory (Azure AD) kullanarak Blob ve kuyruk depolama kaynaklarını yetki verme erişimi destekler.Azure Storage supports authorizing access to Blob and Queue storage resources using Azure Active Directory (Azure AD). Kullanıcıları veya Azure AD tarafından döndürülen bir OAuth 2.0 belirteç kullanan uygulamalar yetkilendirme paylaşılan anahtar yetkilendirme üst düzey güvenlik ve kullanım kolaylığı sağlar ve paylaşılan erişim imzaları (SAS).Authorizing users or applications using an OAuth 2.0 token returned by Azure AD provides superior security and ease of use over Shared Key authorization and shared access signatures (SAS). Azure AD ile depolama hesabı erişim anahtarı ile kod ve risk olası güvenlik açıklarını gerek yoktur.With Azure AD, there is no need to store the account access key with your code and risk potential security vulnerabilities.

Microsoft Azure AD, Azure depolama uygulamalarınızla mümkün olduğunda kullanılmasını önerir.Microsoft recommends using Azure AD with your Azure Storage applications when possible. Daha fazla bilgi için erişimi yetkilendirin Azure blobları ve Azure Active Directory'yi kullanarak sıralar.For more information, see Authorize access to Azure blobs and queues using Azure Active Directory.

Önemli

Depolama hesabı anahtarınız depolama hesabınızın kök parolasına benzer.Your storage account key is similar to the root password for your storage account. Hesap anahtarınızı korumak için her zaman özen gösterin.Always be careful to protect your account key. Diğer kullanıcılara dağıtmaktan, sabit kodlamaktan ve başkalarının erişebileceği düz metinlere kaydetmekten kaçının.Avoid distributing it to other users, hard-coding it, or saving it anywhere in plaintext that is accessible to others. Hesap anahtarınızın tehlikede olduğunu düşünüyorsanız, Azure portalı kullanarak hesap anahtarınızı yeniden üretin.Regenerate your account key using the Azure portal if you believe it may have been compromised.

SAS (paylaşılan erişim imzası) belirteçleri, yeni hesap erişim anahtarlarını gibi korumak için kritik öneme sahiptir.SAS (Shared Access Signature) tokens are critical to protect just like the account access keys. Ayrıntı düzeyi SAS istemciler, depolama hesabınızdaki kaynaklara erişim verir ve genel olarak Paylaşılmaması gereken sağlayan çalışırken.While providing granularity SAS grants clients access to the resources in your storage account and should not be shared publicly. Paylaşım sorunlarını gidermek için gerekli olduğunda nedenlerden herhangi bir günlük dosyasının sonuç kısaltılmıştır bir sürümünü kullanıyor veya SAS belirteçlerini (varsa), günlük dosyalarından silme göz önünde bulundurun ve ekran görüntüleri ya da SAS bilgi içermeyen emin olun.When sharing is required for troubleshooting reasons consider using a redacted version of any log files or deleting the SAS tokens (if present) from the log files, and make sure the screenshots don't contain the SAS information either.

Bir SAS erişim de dahil olmak üzere, SAS sahip istemciler için verme türü üzerinde ayrıntılı denetim sağlar:A SAS gives you granular control over the type of access you grant to clients who have the SAS, including:

  • SAS başlangıç ve sona erme saati de dahil olmak üzere, geçerli aralığı.The interval over which the SAS is valid, including the start time and the expiry time.
  • SAS'den izinler.The permissions granted by the SAS. Örneğin, bir blob için bir SAS okuma izni ve bu bloba yazma izinleri, ancak silme izinleri yok.For example, a SAS for a blob might grant read and write permissions to that blob, but not delete permissions.
  • İsteğe bağlı bir IP adresi veya IP adresleri Azure depolama SAS kabul eder.An optional IP address or range of IP addresses from which Azure Storage will accept the SAS. Örneğin, kuruluşunuza ait bir IP adresi aralığı belirtebilirsiniz.For example, you might specify a range of IP addresses belonging to your organization.
  • Protokol üzerinden Azure depolama SAS kabul eder.The protocol over which Azure Storage will accept the SAS. Bu isteğe bağlı bir parametre, HTTPS kullanan istemciler için erişimi kısıtlamak için kullanabilirsiniz.You can use this optional parameter to restrict access to clients using HTTPS.

Paylaşılan erişim imzası kullanırken?When should you use a shared access signature?

Depolama hesabınızın erişim anahtarlarını işlediği değil herhangi bir istemciye depolama hesabınızdaki kaynaklara erişimi sağlamak istediğinizde bir SAS kullanabilirsiniz.You can use a SAS when you want to provide access to resources in your storage account to any client not possessing your storage account's access keys. Depolama hesabınızın hem ikisi için de hesabınıza yönetici erişimi vermek, bir birincil ve ikincil erişim anahtarı ve içerdiği tüm kaynakları içerir.Your storage account includes both a primary and secondary access key, both of which grant administrative access to your account, and all resources within it. Bu anahtarların ya da ifşa eden kötü amaçlı veya hatalı kullanım olasılığını hesabınıza açılır.Exposing either of these keys opens your account to the possibility of malicious or negligent use. Paylaşılan erişim imzaları, okuma, yazma ve açıkça verilen izinlere göre ve hesap anahtarı için gerek kalmadan, depolama hesabınızdaki verileri silmek istemcilerin güvenli bir yöntem sağlar.Shared access signatures provide a safe alternative that allows clients to read, write, and delete data in your storage account according to the permissions you've explicitly granted, and without need for an account key.

Bir SAS kullanışlı olduğu bir yaygın senaryo burada kullanıcılar okuyup kendi verilerini depolama hesabınıza bir hizmettir.A common scenario where a SAS is useful is a service where users read and write their own data to your storage account. Bir depolama hesabı, kullanıcı verilerini depoladığı bir senaryoda, iki tipik tasarım desenleri vardır:In a scenario where a storage account stores user data, there are two typical design patterns:

  1. İstemciler, indirin ve kimlik doğrulaması yapan bir ön uç proxy hizmeti aracılığıyla veri yükleyin.Clients upload and download data via a front-end proxy service, which performs authentication. Bu ön uç proxy hizmeti için iş kuralları doğrulama sağlayan avantajı olsa da, büyük miktarlarda veri veya yüksek hacimli işlemler için isteğe bağlı şekilde bir hizmet oluşturma pahalı veya zor olabilir.This front-end proxy service has the advantage of allowing validation of business rules, but for large amounts of data or high-volume transactions, creating a service that can scale to match demand may be expensive or difficult.

    Senaryo diyagramı: Ön uç proxy hizmeti

  2. Basit bir hizmet gerektiği gibi istemcinin kimliğini doğrular ve ardından bir SAS oluşturuyor.A lightweight service authenticates the client as needed and then generates a SAS. SAS istemci aldıktan sonra doğrudan SAS ve SAS tarafından izin verilen zaman aralığı için tanımlanan izinlere sahip depolama hesabı kaynaklarına erişebilirsiniz.Once the client receives the SAS, they can access storage account resources directly with the permissions defined by the SAS and for the interval allowed by the SAS. SAS, ön uç proxy hizmeti aracılığıyla tüm verileri yönlendirme gereksinimini azaltır.The SAS mitigates the need for routing all data through the front-end proxy service.

    Senaryo diyagramı: SAS sağlayıcısı hizmeti

Çok sayıda gerçek hizmetlerini iki bu yaklaşımların bir karma kullanabilir.Many real-world services may use a hybrid of these two approaches. Örneğin, bazı veriler işlenir ve diğer veriler olduğundan ve/veya kaydedilmiş doğrudan SAS kullanarak okuma sırasında ön uç Ara sunucusu üzerinden doğrulandı.For example, some data might be processed and validated via the front-end proxy, while other data is saved and/or read directly using SAS.

Ayrıca, belirli senaryolarda bir kopyalama işleminde kaynak nesne erişim yetkisi vermek için bir SAS'ı kullanmanız gerekir:Additionally, you will need to use a SAS to authorize access to the source object in a copy operation in certain scenarios:

  • Farklı bir depolama hesabında bulunan başka bir blob için bir blob kopyaladığınızda, kaynak blobun erişim yetkisi vermek için bir SAS kullanmanız gerekir.When you copy a blob to another blob that resides in a different storage account, you must use a SAS to authorize access to the source blob. İsteğe bağlı olarak, hedef blob de erişim yetkisi vermek için bir SAS kullanabilirsiniz.You can optionally use a SAS to authorize access to the destination blob as well.
  • Farklı bir depolama hesabında bulunan başka bir dosyaya bir dosya kopyaladığınızda, kaynak dosyaya erişim yetkisi vermek için bir SAS kullanmanız gerekir.When you copy a file to another file that resides in a different storage account, you must use a SAS to authorize access to the source file. Hedef dosya de erişim yetkisi vermek için bir SAS isteğe bağlı olarak kullanabilirsiniz.You can optionally use a SAS to authorize access to the destination file as well.
  • Bir blobu bir dosyaya veya bir blobu bir dosyaya kopyalamanız, kaynak ve hedef nesnelerin aynı depolama hesabında bulunan olsa bile bir SAS kaynak nesnesi erişim yetkisi vermek için kullanmanız gerekir.When you copy a blob to a file, or a file to a blob, you must use a SAS to authorize access to the source object, even if the source and destination objects reside within the same storage account.

Paylaşılan erişim imzaları türleriTypes of shared access signatures

İki tür paylaşılan erişim imzası oluşturabilirsiniz:You can create two types of shared access signatures:

  • Hizmet SAS.Service SAS. Hizmet SAS; Blob, Kuyruk, Tablo veya Dosya hizmeti olmak üzere yalnızca bir depolama hizmetindeki kaynağa erişim atar.The service SAS delegates access to a resource in just one of the storage services: the Blob, Queue, Table, or File service. Bkz: hizmet SAS oluşturma ve hizmeti SAS örneklerini hizmeti SAS belirteci oluşturma hakkında ayrıntılı bilgi için.See Constructing a Service SAS and Service SAS Examples for in-depth information about constructing the service SAS token.
  • Hesap SAS.Account SAS. Hesap SAS temsilcileri, bir veya daha fazla depolama hizmetindeki kaynaklara erişim.The account SAS delegates access to resources in one or more of the storage services. Tüm hizmet SAS ile kullanılabilen işlemleri ayrıca bir hesap SAS kullanılabilir.All of the operations available via a service SAS are also available via an account SAS. Ayrıca, hesap SAS ile belirli bir hizmete gibi uygulama işlemlerine erişim yetkilendirebilirsiniz Get/Set hizmet özellikleri ve hizmet istatistikleri alma. Bununla birlikte hizmet SAS ile izin verilmeyen blob kapsayıcılar, tablolar kuyruklar ve dosya paylaşımları üzerinde okuma, yazma ve silme işlemleri için yetkilendirme yapabilirsiniz.Additionally, with the account SAS, you can delegate access to operations that apply to a given service, such as Get/Set Service Properties and Get Service Stats. You can also delegate access to read, write, and delete operations on blob containers, tables, queues, and file shares that are not permitted with a service SAS. Bkz: hesap SAS oluşturma hesap SAS belirteci oluşturma hakkında ayrıntılı bilgi için.See Constructing an Account SAS for in-depth information about constructing the account SAS token.

Paylaşılan erişim imzası nasıl çalışır?How a shared access signature works

Paylaşılan erişim imzası, bir veya daha fazla depolama kaynaklarını ve özel bir sorgu parametreleri kümesini içeren bir belirteç içeren imzalı bir URI'dir.A shared access signature is a signed URI that points to one or more storage resources and includes a token that contains a special set of query parameters. Belirteç, kaynaklar istemci tarafından erişilebilecek nasıl gösterir.The token indicates how the resources may be accessed by the client. Sorgu parametreleri, imza birini SAS parametreler oluşturulur ve hesap anahtarı ile imzalanmış.One of the query parameters, the signature, is constructed from the SAS parameters and signed with the account key. Bu imza, depolama kaynağına erişim yetkisi vermek için Azure Depolama tarafından kullanılır.This signature is used by Azure Storage to authorize access to the storage resource.

Kaynak URI gösteren bir SAS URI'sinin bir örnek aşağıda verilmiştir ve SAS belirteci:Here's an example of a SAS URI, showing the resource URI and the SAS token:

Bir SAS URI'ın bileşenleri

SAS belirteci oluşturma hakkında bir dizedir istemci yan (bkz SAS örnekler kod örnekleri için bölüm).The SAS token is a string you generate on the client side (see the SAS examples section for code examples). Depolama istemci kitaplığı ile oluşturduğunuz bir SAS belirteci gibi herhangi bir şekilde Azure Depolama tarafından izlenmiyor.A SAS token you generate with the storage client library, for example, is not tracked by Azure Storage in any way. İstemci tarafında sınırsız sayıda SAS belirteçleri oluşturabilirsiniz.You can create an unlimited number of SAS tokens on the client side.

Bir istemci, bir isteğin bir parçası Azure depolama SAS URI'si sağladığında, hizmet isteği kimlik doğrulaması için geçerli olduğunu doğrulamak için imza ve SAS parametreleri denetler.When a client provides a SAS URI to Azure Storage as part of a request, the service checks the SAS parameters and signature to verify that it is valid for authenticating the request. Hizmet doğrularsa imza geçerli değil ve isteğin yetkilendirilip.If the service verifies that the signature is valid, then the request is authorized. Aksi takdirde, istek, hata kodu 403 (Yasak) reddedildi.Otherwise, the request is declined with error code 403 (Forbidden).

Paylaşılan erişim imzası parametreleriShared access signature parameters

Hizmet SAS belirteçleri ve hesap SAS bazı ortak parametreleri içerir ve ayrıca farklı olan birkaç parametre alır.The account SAS and service SAS tokens include some common parameters, and also take a few parameters that are different.

Hesap SAS ortak parametreleri ve hizmet SAS belirteçleriParameters common to account SAS and service SAS tokens

  • API sürümü ve isteği yürütmek için kullanılacak depolama hizmeti sürümünü belirten isteğe bağlı bir parametre.Api version An optional parameter that specifies the storage service version to use to execute the request.
  • Hizmet sürümü gerekli parametresi isteği yetkilendirmek için kullanılacak depolama hizmeti sürümünü belirtir.Service version A required parameter that specifies the storage service version to use to authorize the request.
  • Başlangıç zamanı.Start time. Bu, SAS geçerli olacağı süredir.This is the time at which the SAS becomes valid. Paylaşılan erişim imzası için başlangıç zamanı isteğe bağlıdır.The start time for a shared access signature is optional. Başlangıç zamanı belirtilmezse, SAS hemen etkili olur.If a start time is omitted, the SAS is effective immediately. Başlangıç saati UTC (Eşgüdümlü Evrensel Saat) özel UTC gösterge ile ("Z"), gibi ifade edilmelidir 1994-11-05T13:15:30Z.The start time must be expressed in UTC (Coordinated Universal Time), with a special UTC designator ("Z"), for example 1994-11-05T13:15:30Z.
  • Süre sonu.Expiry time. Bu, sonra SAS artık geçerli olduğu zamandır.This is the time after which the SAS is no longer valid. En iyi süre sonu için bir SAS belirtin veya bir depolanmış erişim ilkesi ile ilişkilendirebilirsiniz önerilir.Best practices recommend that you either specify an expiry time for a SAS, or associate it with a stored access policy. Süre sonu UTC (Eşgüdümlü Evrensel Saat) özel UTC gösterge ile ("Z"), gibi ifade edilmelidir 1994-11-05T13:15:30Z (daha aşağıya bakın).The expiry time must be expressed in UTC (Coordinated Universal Time), with a special UTC designator ("Z"), for example 1994-11-05T13:15:30Z (see more below).
  • İzinler.Permissions. SAS üzerinde belirtilen izinler istemci SAS kullanarak depolama kaynağı karşı gerçekleştirebilirsiniz hangi işlemleri gösterir.The permissions specified on the SAS indicate what operations the client can perform against the storage resource using the SAS. Kullanılabilir seçenekler, bir hesap SAS ve hizmet SAS için farklıdır.Available permissions differ for an account SAS and a service SAS.
  • IP.IP. Bir IP adresi veya bir IP adresi aralığı dışında Azure belirten isteğe bağlı bir parametre (bakın yönlendirme oturum yapılandırma durumu Express Route için) içinden isteklerini kabul etmek.An optional parameter that specifies an IP address or a range of IP addresses outside of Azure (see the section Routing session configuration state for Express Route) from which to accept requests.
  • Protokol.Protocol. Protokolü belirten isteğe bağlı parametresi bir istek için izin verilir.An optional parameter that specifies the protocol permitted for a request. Olası değerler şunlardır: hem HTTPS ve HTTP (https,http), bu değer varsayılan değer veya HTTPS yalnızca (https).Possible values are both HTTPS and HTTP (https,http), which is the default value, or HTTPS only (https). HTTP yalnızca izin verilen bir değer değildir.Note that HTTP only is not a permitted value.
  • İmza.Signature. İmza bölümü belirteci olarak belirtilen ve ardından şifreli diğer parametreler oluşturulur.The signature is constructed from the other parameters specified as part token and then encrypted. İmza, belirtilen depolama kaynaklarına erişim yetkisi vermek için kullanılır.The signature is used to authorize access to the specified storage resources.

Hizmet SAS belirteci için parametreleriParameters for a service SAS token

  • Depolama kaynağı.Storage resource. SAS depolama kaynaklarına erişim ile bir hizmeti temsilci seçebilirsiniz şunlardır:Storage resources for which you can delegate access with a service SAS include:
    • Kapsayıcılar ve bloblarContainers and blobs
    • Dosya paylaşımları ve dosyalarlaFile shares and files
    • KuyruklarQueues
    • Tabloları ve tablo varlıkları aralığı.Tables and ranges of table entities.

Bir hesap SAS belirteci için parametreleriParameters for an account SAS token

  • Hizmet veya hizmetleri.Service or services. Hesap SAS ise bir erişim bir veya daha fazla depolama hizmetleri için yetkilendirme yapabilirsiniz.An account SAS can delegate access to one or more of the storage services. Örneğin, temsilciler Blob ve dosya hizmetine erişim hesap SAS oluşturabilirsiniz.For example, you can create an account SAS that delegates access to the Blob and File service. Veya tüm dört temsilciler erişim (Blob, kuyruk, tablo ve dosya) Hizmetleri bir SAS oluşturabilirsiniz.Or you can create a SAS that delegates access to all four services (Blob, Queue, Table, and File).
  • Depolama kaynak türleri.Storage resource types. Bir hesap SAS depolama kaynaklarını yerine belirli bir kaynağa bir veya daha fazla sınıfları için geçerlidir.An account SAS applies to one or more classes of storage resources, rather than a specific resource. Hesap erişimi devretmek için SAS oluşturabilirsiniz:You can create an account SAS to delegate access to:
    • Hizmet düzeyi API'leri, depolama hesabı kaynağı karşı olarak adlandırılır.Service-level APIs, which are called against the storage account resource. Örnekler Get/Set hizmet özellikleri, hizmet istatistikleri alma, ve listesi kapsayıcılar/kuyruk/tablolar/paylaşımları.Examples include Get/Set Service Properties, Get Service Stats, and List Containers/Queues/Tables/Shares.
    • Her hizmet için kapsayıcı nesneleri karşı çağrılan kapsayıcı düzeyi API'leri: blob kapsayıcıları, kuyruklar, tablolar ve dosya paylaşımları.Container-level APIs, which are called against the container objects for each service: blob containers, queues, tables, and file shares. Örnekler oluşturma/silme kapsayıcı, oluşturma/silme sırası, oluşturma/silme tablo, oluşturma/silme paylaşımıve Blobları/dosyalar ve dizinler listesinde.Examples include Create/Delete Container, Create/Delete Queue, Create/Delete Table, Create/Delete Share, and List Blobs/Files and Directories.
    • Nesne düzeyinde API'ler, bloblar, kuyruk iletileri, tablo varlıkları ve dosyaları karşı olarak adlandırılır.Object-level APIs, which are called against blobs, queue messages, table entities, and files. Örneğin, Put Blob, sorgu varlığı, iletileri alma, ve dosyası oluştur.For example, Put Blob, Query Entity, Get Messages, and Create File.

SAS URI örnekleriExamples of SAS URIs

Hizmet SAS URI'sini örneğiService SAS URI example

Bir hizmet sağlayan bir SAS URI'si okuma ve yazma izinleri bir bloba örneği aşağıda verilmiştir.Here is an example of a service SAS URI that provides read and write permissions to a blob. Tablo için SAS nasıl katkı sağladığını anlamanızı için URI her bir parçasının ayırır:The table breaks down each part of the URI to understand how it contributes to the SAS:

https://myaccount.blob.core.windows.net/sascontainer/sasblob.txt?sv=2015-04-05&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D
AdName SAS bölümüSAS portion AçıklamaDescription
Blob URIBlob URI https://myaccount.blob.core.windows.net/sascontainer/sasblob.txt Blob adresi.The address of the blob. HTTPS kullanarak önemle tavsiye edilir unutmayın.Note that using HTTPS is highly recommended.
Depolama Hizmetleri sürümüStorage services version sv=2015-04-05 Depolama Hizmetleri sürüm 2012-02-12 ve daha sonra bu parametre kullanılacak sürümünü gösterir.For storage services version 2012-02-12 and later, this parameter indicates the version to use.
Başlangıç saatiStart time st=2015-04-29T22%3A18%3A26Z UTC saati belirtilmiş.Specified in UTC time. SAS hemen geçerli olmasını istiyorsanız, başlangıç zamanı atlayın.If you want the SAS to be valid immediately, omit the start time.
Süre sonuExpiry time se=2015-04-30T02%3A23%3A26Z UTC saati belirtilmiş.Specified in UTC time.
ResourceResource sr=b Bir blobu bir kaynaktır.The resource is a blob.
İzinlerPermissions sp=rw SAS'den izinler Read (r) içerir ve yazma (w).The permissions granted by the SAS include Read (r) and Write (w).
IP aralığıIP range sip=168.1.5.60-168.1.5.70 Bir talep kabul edilmeyecektir IP adresi aralığı.The range of IP addresses from which a request will be accepted.
ProtocolProtocol spr=https Yalnızca HTTPS kullanarak isteklerine izin verilir.Only requests using HTTPS are permitted.
İmzaSignature sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D Blob erişim yetkisi vermek için kullanılır.Used to authorize access to the blob. İmza, dize oturum ve SHA256 algoritmasını kullanılarak anahtarı üzerinden hesaplanır ve ardından Base64 kodlama kullanılarak kodlanan bir HMAC değil.The signature is an HMAC computed over a string-to-sign and key using the SHA256 algorithm, and then encoded using Base64 encoding.

Hesap SAS URI'sini örneğiAccount SAS URI example

Bir hesap SAS belirteci üzerinde güncel aynı genel parametreleri kullanan bir örnek aşağıda verilmiştir.Here is an example of an account SAS that uses the same common parameters on the token. Bu parametreler, yukarıda açıklanan olduğundan, burada açıklanmamıştır.Since these parameters are described above, they are not described here. Yalnızca parametreleri, hesap SAS, aşağıdaki tabloda açıklanan özgüdür.Only the parameters that are specific to account SAS are described in the table below.

https://myaccount.blob.core.windows.net/?restype=service&comp=properties&sv=2015-04-05&ss=bf&srt=s&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=F%6GRVAZ5Cdj2Pw4tgU7IlSTkWgn7bUkkAg8P6HESXwmf%4B
AdName SAS bölümüSAS portion AçıklamaDescription
Kaynak URI'siResource URI https://myaccount.blob.core.windows.net/?restype=service&comp=properties Blob Hizmeti uç noktası, (GET ile çağrıldığında) hizmeti özelliklerini alma veya (KÜMESİYLE çağrıldığında) hizmeti özelliklerini ayarlamanın parametrelere sahip.The Blob service endpoint, with parameters for getting service properties (when called with GET) or setting service properties (when called with SET).
HizmetlerServices ss=bf SAS Blob ve Dosya Hizmetleri için geçerlidir.The SAS applies to the Blob and File services
Kaynak türleriResource types srt=s SAS hizmet düzeyi işlemlere uygulanır.The SAS applies to service-level operations.
İzinlerPermissions sp=rw Okuma ve yazma işlemleri için erişim izinleri verin.The permissions grant access to read and write operations.

Hizmet düzeyi izinleri kısıtlanır düşünüldüğünde, bu SAS erişilebilir işlemleriyle olan Blob hizmeti özelliklerini almak (okuma) ve Blob hizmeti özelliklerini ayarla (yazma).Given that permissions are restricted to the service level, accessible operations with this SAS are Get Blob Service Properties (read) and Set Blob Service Properties (write). Ancak, farklı olan bir kaynak URI, aynı SAS belirteci de erişimi devretmek için kullanılabilir Blob hizmet istatistikleri alma (okuma).However, with a different resource URI, the same SAS token could also be used to delegate access to Get Blob Service Stats (read).

Bir depolanmış erişim ilkesini ile SAS denetlemeControlling a SAS with a stored access policy

Paylaşılan erişim imzası iki biçimlerden birini alabilir:A shared access signature can take one of two forms:

  • Geçici SAS: Geçici bir SAS'ı oluşturduğunuzda, başlangıç zamanı, süre sonu ve SAS izinleri tüm SAS URI'de belirtilen (veya ima, burada başlangıç zamanı atlanır durumda).Ad hoc SAS: When you create an ad hoc SAS, the start time, expiry time, and permissions for the SAS are all specified in the SAS URI (or implied, in the case where start time is omitted). Bu tür bir SAS, hesap SAS ise bir ya da hizmet SAS oluşturulabilir.This type of SAS can be created as an account SAS or a service SAS.
  • Depolanmış erişim ilkesini ile SAS: Bir depolanmış erişim ilkesini bir kaynak kapsayıcı--bir blob kapsayıcısı tanımlanır, tablo, kuyruk, veya dosya paylaşımını--ve biri için kısıtlamalarını yönetmek için kullanılabilir veya daha fazla paylaşılan erişim imzaları.SAS with stored access policy: A stored access policy is defined on a resource container--a blob container, table, queue, or file share--and can be used to manage constraints for one or more shared access signatures. Bir SAS bir depolanmış erişim ilkesini ile ilişkilendirdiğinizde, SAS başlangıç zamanı, süre sonu ve izinleri--depolanmış erişim ilkesini için tanımlanmış kısıtlamalar devralır.When you associate a SAS with a stored access policy, the SAS inherits the constraints--the start time, expiry time, and permissions--defined for the stored access policy.

Not

Şu anda hesap SAS ise bir geçici bir SAS olmalıdır.Currently, an account SAS must be an ad hoc SAS. Erişim için hesap SAS ilkeleri henüz desteklenmemektedir depolanır.Stored access policies are not yet supported for account SAS.

Bir anahtar senaryosu için iki biçim arasındaki fark önemlidir: iptal etme.The difference between the two forms is important for one key scenario: revocation. SAS URI'sini bir URL olduğundan, ilk olarak onu oluşturan kişi bağımsız olarak herkes SAS alır, kullanabilir.Because a SAS URI is a URL, anyone that obtains the SAS can use it, regardless of who originally created it. Bir SAS yayımlandığını, herkes tarafından kullanılabilir.If a SAS is published publicly, it can be used by anyone in the world. Bir SAS dört şeylerden biri oluşuncaya kadar işlediği herkese kaynaklarına erişimi verir:A SAS grants access to resources to anyone possessing it until one of four things happens:

  1. SAS üzerinde belirtilen süre sonu ulaşıldı.The expiry time specified on the SAS is reached.
  2. SAS'den başvurulan depolanmış erişim ilkesini belirtilen sona erme saati (depolanmış erişim ilkesini başvuruluyorsa ve süre sonu belirtiyorsa) ulaşıldı.The expiry time specified on the stored access policy referenced by the SAS is reached (if a stored access policy is referenced, and if it specifies an expiry time). Bu aralığı sona erdiğinde olduğundan veya bir süre sonu zamanı geçmişte, SAS iptal etmek için bir yol ile depolanmış erişim ilkesini değiştirdiğiniz nedeniyle ortaya çıkabilir.This can occur either because the interval elapses, or because you've modified the stored access policy with an expiry time in the past, which is one way to revoke the SAS.
  3. SAS iptal etmek için başka bir yolu olan SAS tarafından başvurulan depolanmış erişim ilkesini silinir.The stored access policy referenced by the SAS is deleted, which is another way to revoke the SAS. Tam olarak aynı ada sahip bir depolanmış erişim ilkesini yeniden oluşturun, mevcut tüm SAS belirteçlerini yeniden (, değil SAS bitiş saatinin geçtiğini varsayarak) Bu saklı erişim ilkesi ile ilişkilendirilmiş izinleri göre geçerli olacağını unutmayın.Note that if you recreate the stored access policy with exactly the same name, all existing SAS tokens will again be valid according to the permissions associated with that stored access policy (assuming that the expiry time on the SAS has not passed). SAS iptal amaçlanıyorsa erişim ilkesi gelecekte bir sona erme saati ile yeniden farklı bir ad kullanırsanız emin olun.If you are intending to revoke the SAS, be sure to use a different name if you recreate the access policy with an expiry time in the future.
  4. SAS oluşturmak için kullanılan hesap anahtarı yeniden oluşturuldu.The account key that was used to create the SAS is regenerated. Bir hesap anahtarını yeniden oluşturma tüm uygulama bileşenleri bu anahtarla diğer geçerli hesap anahtarı veya yeniden oluşturuldu yeni hesap anahtarı kullanmak üzere güncelleştirilir kadar yetkilendirmek başarısız olmasına neden olur.Regenerating an account key will cause all application components using that key to fail to authorize until they're updated to use either the other valid account key or the newly regenerated account key.

Önemli

Paylaşılan erişim imzası URI'si imza oluşturmak için kullanılan hesap anahtarı ile ilişkilidir, ve ilişkili erişim ilkesi (varsa) depolanır.A shared access signature URI is associated with the account key used to create the signature, and the associated stored access policy (if any). Hiçbir depolanmış erişim ilkesini belirtilirse, paylaşılan erişim imzası iptal etmek için tek yolu hesap anahtarını değiştirmektir.If no stored access policy is specified, the only way to revoke a shared access signature is to change the account key.

Bir SAS ile bir istemci uygulamasında kimlik doğrulamasıAuthenticating from a client application with a SAS

Bir SAS elinde bulunan bir istemci, SAS, hesap anahtarlarını sahip olmayan bir depolama hesabına yönelik bir isteği yetkilendirmek için kullanabilirsiniz.A client who is in possession of a SAS can use the SAS to authorize a request against a storage account for which they do not possess the account keys. Bir SAS bağlantı dizesi ile birlikte veya doğrudan uygun oluşturucu veya yöntemi kullanılır.A SAS can be included in a connection string, or used directly from the appropriate constructor or method.

SAS kullanarak bir bağlantı dizesiUsing a SAS in a connection string

Depolama hesabınızdaki kaynaklara erişim veren bir paylaşılan erişim imzası (SAS) URL sahip, SAS bağlantı dizesinde kullanabilirsiniz.If you possess a shared access signature (SAS) URL that grants you access to resources in a storage account, you can use the SAS in a connection string. SAS isteğin kimliğini doğrulamak için gereken bilgileri içerdiğinden, SAS bağlantı dizesiyle protokolü, hizmet uç noktası ve kaynağa erişmek için gerekli kimlik bilgilerini sağlar.Because the SAS contains the information required to authenticate the request, a connection string with a SAS provides the protocol, the service endpoint, and the necessary credentials to access the resource.

Paylaşılan erişim imzası içerir bir bağlantı dizesi oluşturmak için dizesi şu biçimde belirtin:To create a connection string that includes a shared access signature, specify the string in the following format:

BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken

En az bir bağlantı dizesi içermesi gereken olsa da her bir hizmet uç noktası isteğe bağlıdır.Each service endpoint is optional, although the connection string must contain at least one.

Not

HTTPS ile SAS kullanarak bir en iyi uygulama olarak önerilir.Using HTTPS with a SAS is recommended as a best practice.

Bir yapılandırma dosyasındaki bağlantı dizesi bir SAS belirtiyorsanız, URL'de bulunan özel karakterleri kodlayın gerekebilir.If you are specifying a SAS in a connection string in a configuration file, you may need to encode special characters in the URL.

Hizmet SAS örneğiService SAS example

Burada, Blob Depolama için hizmet SAS'ı içeren bir bağlantı dizesi örneği verilmiştir:Here's an example of a connection string that includes a service SAS for Blob storage:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

Ve özel karakterler kodlama ile aynı bağlantı dizesinin bir örnek aşağıda verilmiştir:And here's an example of the same connection string with encoding of special characters:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

Hesap SAS örneğiAccount SAS example

Burada, Blob ve dosya depolama için bir hesap SAS içeren bir bağlantı dizesi örneği verilmiştir.Here's an example of a connection string that includes an account SAS for Blob and File storage. Not: iki hizmet için uç noktalar belirtildiğinden eminNote that endpoints for both services are specified:

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl

Ve URL kodlaması ile aynı bağlantı dizesinin bir örnek aşağıda verilmiştir:And here's an example of the same connection string with URL encoding:

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl

Bir oluşturucu ya da yöntem SAS kullanarakUsing a SAS in a constructor or method

Bir SAS ile hizmet isteğine yetki verebilir böylece birden fazla Azure depolama istemci kitaplığı oluşturucular ve yöntem aşırı bir SAS parametre sunar.Several Azure Storage client library constructors and method overloads offer a SAS parameter, so that you can authorize a request to the service with a SAS.

Örneğin, burada bir SAS URI bir blok blobuna bir başvuru oluşturmak için kullanılır.For example, here a SAS URI is used to create a reference to a block blob. SAS istek için gereken tek kimlik bilgisi sağlanır.The SAS provides the only credentials needed for the request. Blok blob başvurusu, daha sonra bir yazma işlemi için kullanılır:The block blob reference is then used for a write operation:

string sasUri = "https://storagesample.blob.core.windows.net/sample-container/" +
    "sampleBlob.txt?sv=2015-07-08&sr=b&sig=39Up9JzHkxhUIhFEjEH9594DJxe7w6cIRCg0V6lCGSo%3D" +
    "&se=2016-10-18T21%3A51%3A37Z&sp=rcw";

CloudBlockBlob blob = new CloudBlockBlob(new Uri(sasUri));

// Create operation: Upload a blob with the specified name to the container.
// If the blob does not exist, it will be created. If it does exist, it will be overwritten.
try
{
    MemoryStream msWrite = new MemoryStream(Encoding.UTF8.GetBytes(blobContent));
    msWrite.Position = 0;
    using (msWrite)
    {
        await blob.UploadFromStreamAsync(msWrite);
    }

    Console.WriteLine("Create operation succeeded for SAS {0}", sasUri);
    Console.WriteLine();
}
catch (StorageException e)
{
    if (e.RequestInformation.HttpStatusCode == 403)
    {
        Console.WriteLine("Create operation failed for SAS {0}", sasUri);
        Console.WriteLine("Additional error information: " + e.Message);
        Console.WriteLine();
    }
    else
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

SAS kullanarak en iyi uygulamalarBest practices when using SAS

Uygulamalarınızda paylaşılan erişim imzaları kullandığınızda iki olası riskleri dikkat etmeniz gerekir:When you use shared access signatures in your applications, you need to be aware of two potential risks:

  • Bir SAS sızmış ise, depolama hesabınıza potansiyel olarak tehlikeye atabilir aldığı herkes tarafından kullanılabilir.If a SAS is leaked, it can be used by anyone who obtains it, which can potentially compromise your storage account.
  • İçin bir SAS sağlanırsa, bir istemci uygulamanın süresi doluyor ve uygulamayı yeni bir SAS, hizmetten alınamıyor, sonra uygulamanın işlevselliğini engelliyordu.If a SAS provided to a client application expires and the application is unable to retrieve a new SAS from your service, then the application's functionality may be hindered.

Paylaşılan erişim imzalarını kullanma yönelik aşağıdaki öneriler bu risklerin azaltılmasına yardımcı olur:The following recommendations for using shared access signatures can help mitigate these risks:

  1. Her zaman HTTPS kullanın oluşturmak ya da SAS'ı dağıtın.Always use HTTPS to create or distribute a SAS. SAS HTTP üzerinden geçirilen ve müdahale, bir adam-de-ortadaki adam saldırısı gerçekleştiren bir saldırgan SAS okuma ve yalnızca hedeflenen kullanıcının, olası hassas verileri ödün veya kötü amaçlı kullanıcı tarafından veri bozulması izin verme sahip olarak kullanın.If a SAS is passed over HTTP and intercepted, an attacker performing a man-in-the-middle attack is able to read the SAS and then use it just as the intended user could have, potentially compromising sensitive data or allowing for data corruption by the malicious user.
  2. Saklı erişim ilkeleri, mümkün olduğunda başvurur.Reference stored access policies where possible. Saklı erişim ilkeleri, depolama hesabı anahtarlarını yeniden oluşturmak zorunda kalmadan izinleri iptal etme seçeneğini sağlar.Stored access policies give you the option to revoke permissions without having to regenerate the storage account keys. Sona erme bu kadar çok ileride (veya sonsuz) üzerinde ayarlayın ve geleceğe daha da esnetmenize taşımak için düzenli olarak güncelleştirildiğinden emin olun.Set the expiration on these very far in the future (or infinite) and make sure it's regularly updated to move it farther into the future.
  3. Zaman aşımı değeri ertelenebildiği üzerinde geçici bir SAS kullanın.Use near-term expiration times on an ad hoc SAS. Bir SAS tehlikede olsa bile, bu şekilde, bunu yalnızca kısa bir süre için geçerli değil.In this way, even if a SAS is compromised, it's valid only for a short time. Bu yöntem, bir depolanmış erişim ilkesini başvuramaz durumunda özellikle önemlidir.This practice is especially important if you cannot reference a stored access policy. Ertelenebildiği geçerlilik sonu süreleri de için karşıya yüklemek için süreyi sınırlamak için bir blob yazılabilir veri miktarını sınırlar.Near-term expiration times also limit the amount of data that can be written to a blob by limiting the time available to upload to it.
  4. Gerekirse, SAS otomatik olarak yenileme istemciniz.Have clients automatically renew the SAS if necessary. İstemciler, SAS sağlayan hizmet kullanılamıyorsa, yeniden denemeler için zaman tanınması SAS süresi dolmadan önce de yenilemelisiniz.Clients should renew the SAS well before the expiration, in order to allow time for retries if the service providing the SAS is unavailable. Az sayıda süre içinde tamamlanması bekleniyor anında, kısa süreli işlemler için kullanılacak, SAS geliyorsa, ardından bu SAS yenilenmesi için beklendiği gibi gereksiz olabilir.If your SAS is meant to be used for a small number of immediate, short-lived operations that are expected to be completed within the expiration period, then this may be unnecessary as the SAS is not expected to be renewed. Ancak, düzenli olarak SAS keşfi yapan istemciniz varsa, sona erme olasılığını harekete geçer.However, if you have client that is routinely making requests via SAS, then the possibility of expiration comes into play. Anahtar için SAS kısa süreli olması gerekir (daha önce belirtildiği gibi) husustur olan istemci yenileme erken isteyen emin olmak için yeterli (önce başarılı bir yenileme süresinin dolmasını SAS nedeniyle kesilmemesi).The key consideration is to balance the need for the SAS to be short-lived (as previously stated) with the need to ensure that the client is requesting renewal early enough (to avoid disruption due to the SAS expiring prior to successful renewal).
  5. SAS başlangıç saati ile dikkat edin.Be careful with SAS start time. İçin bir SAS için başlangıç zamanı ayarlarsanız artıksonra (geçerli saat farklı makinelere göre farklılıkları) nedeniyle saat eğriltme, hataları gözlemlenen aralıklı olarak ilk birkaç dakika.If you set the start time for a SAS to now, then due to clock skew (differences in current time according to different machines), failures may be observed intermittently for the first few minutes. Genel olarak, başlangıç saati'en az 15 dakika önce olacak şekilde ayarlayın.In general, set the start time to be at least 15 minutes in the past. Veya, hangi, hemen tüm durumlarda geçerli hale getirir ayarlamanız gerekmez.Or, don't set it at all, which will make it valid immediately in all cases. Aynı genellikle de--sona erme saati geçerli saat 15 dakikaya kadar herhangi bir istek üzerinde herhangi bir yönde eğriltme gözlemleyin unutmayın.The same generally applies to expiry time as well--remember that you may observe up to 15 minutes of clock skew in either direction on any request. 2012-02-12'den önceki bir REST sürümü kullanan istemciler için bir depolanmış erişim ilkesini başvurmayan bir SAS için süre üst sınırını 1 saat ve başarısız olur daha uzun vadeli belirterek tüm ilkeler var.For clients using a REST version prior to 2012-02-12, the maximum duration for a SAS that does not reference a stored access policy is 1 hour, and any policies specifying longer term than that will fail.
  6. Kaynak erişilmesi için belirli olabilir.Be specific with the resource to be accessed. En iyi güvenlik uygulaması, gerekli en düşük ayrıcalıkları olan bir kullanıcı sağlamaktır.A security best practice is to provide a user with the minimum required privileges. Bir kullanıcı yalnızca tek bir varlığa yönelik okuma erişimi gerekiyorsa, daha sonra bunları tek bir varlık için okuma erişimi ve tüm varlıklar olmayan okuma/yazma/silme erişimi verin.If a user only needs read access to a single entity, then grant them read access to that single entity, and not read/write/delete access to all entities. Ayrıca SAS sunun saldırganın daha az güç olduğundan SAS tehlikedeyse hasarı azaltmak da yardımcı olur.This also helps lessen the damage if a SAS is compromised because the SAS has less power in the hands of an attacker.
  7. Hesabınız ile SAS yapılan dahil olmak üzere herhangi bir kullanım için faturalandırılırsınız anlayın.Understand that your account will be billed for any usage, including that done with SAS. Bir bloba yazma erişimi sağlayan, bir kullanıcı, 200 GB blob karşıya yüklemek tercih edebilirsiniz.If you provide write access to a blob, a user may choose to upload a 200GB blob. Bunları okuma erişim verdiyseniz, bunların 10 kez indirmek 2 TB çıkış içinde sizin için maliyetler tercih edebilirsiniz.If you've given them read access as well, they may choose to download it 10 times, incurring 2 TB in egress costs for you. Yeniden olası kötü amaçlı kullanıcıların eylemlerini azaltmaya yardımcı olmak için sınırlı izinler sağlayın.Again, provide limited permissions to help mitigate the potential actions of malicious users. Bu tehdidi azaltmanız (ancak saatinin bitiş saat eğriltme dikkatli olmanız için) kısa süreli SAS'ı kullanın.Use short-lived SAS to reduce this threat (but be mindful of clock skew on the end time).
  8. SAS kullanarak yazılan veri doğrulayın.Validate data written using SAS. Bir istemci uygulaması, depolama hesabınıza verileri yazdığında, bu verileri ile ilgili sorunlar olabilir aklınızda bulundurun.When a client application writes data to your storage account, keep in mind that there can be problems with that data. Uygulamanızın veri doğrulanmış veya kullanıma hazır hale gelmeden önce yetkili gerektiriyorsa, bu doğrulama verileri yazıldıktan sonra ve uygulamanız tarafından kullanılmadan önce gerçekleştirmeniz gerekir.If your application requires that data be validated or authorized before it is ready to use, you should perform this validation after the data is written and before it is used by your application. Bu uygulama ayrıca hesabınız için doğru SAS edinilen bir kullanıcı veya sızdırılan SAS kötüye bir kullanıcı tarafından yazılan bozuk ya da kötü amaçlı veri karşı korur.This practice also protects against corrupt or malicious data being written to your account, either by a user who properly acquired the SAS, or by a user exploiting a leaked SAS.
  9. Her zaman SAS kullanmayın.Don't always use SAS. Bazen, depolama hesabınıza karşı belirli bir işlemle ilişkili riskleri SAS basıyor.Sometimes the risks associated with a particular operation against your storage account outweigh the benefits of SAS. Bu işlemler için iş gerçekleştirdikten sonra depolama hesabınıza Yazar bir orta katman hizmet oluşturma kural doğrulama, kimlik doğrulaması ve denetim.For such operations, create a middle-tier service that writes to your storage account after performing business rule validation, authentication, and auditing. Ayrıca, bazı durumlarda, farklı yollarla erişimi yönetmek basittir.Also, sometimes it's simpler to manage access in other ways. Örneğin, tüm BLOB'ları bir kapsayıcıda genel olarak okunabilir hale getirmek istiyorsanız, genel, kapsayıcı yapabilirsiniz yerine SAS her istemci için erişim sağlama.For example, if you want to make all blobs in a container publicly readable, you can make the container Public, rather than providing a SAS to every client for access.
  10. Depolama analizi, uygulamanızı izlemek için kullanın.Use Storage Analytics to monitor your application. Kesinti nedeniyle kimlik doğrulama hataları herhangi bir artış SAS sağlayıcısı hizmetinizdeki ya da depolanmış erişim ilkesini yanlışlıkla kaldırılmasına gözlemlemek için günlük kaydını ve ölçümleri kullanabilirsiniz.You can use logging and metrics to observe any spike in authentication failures due to an outage in your SAS provider service or to the inadvertent removal of a stored access policy. Bkz: Azure depolama ekibi blogu ek bilgi için.See the Azure Storage Team Blog for additional information.

SAS örnekleriSAS examples

Aşağıda bazı örnekler paylaşılan erişim imzaları, hesap SAS her iki türdeki ve SAS hizmet.Below are some examples of both types of shared access signatures, account SAS and service SAS.

Bu C# örnekleri çalıştırmak için aşağıdaki NuGet paketlerini projenize başvuru gerekir:To run these C# examples, you need to reference the following NuGet packages in your project:

Oluşturma ve bir SAS test gösteren ek örnekler için bkz: Azure depolama kod örnekleri.For additional examples that show how to create and test a SAS, see Azure Code Samples for Storage.

Örnek: Oluşturma ve bir hesap SAS kullanmaExample: Create and use an account SAS

Aşağıdaki kod örneği, bir hesap, Blob ve Dosya Hizmetleri için geçerli olan ve istemciye izinlerini okuma, yazma ve liste hizmet düzeyi API'lere erişim izni verir. SAS oluşturur.The following code example creates an account SAS that is valid for the Blob and File services, and gives the client permissions read, write, and list permissions to access service-level APIs. İstek ile HTTPS yapılması için hesap SAS Protokolü HTTPS için sınırlar.The account SAS restricts the protocol to HTTPS, so the request must be made with HTTPS.

static string GetAccountSASToken()
{
    // To create the account SAS, you need to use your shared key credentials. Modify for your account.
    const string ConnectionString = "DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key";
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);

    // Create a new access policy for the account.
    SharedAccessAccountPolicy policy = new SharedAccessAccountPolicy()
        {
            Permissions = SharedAccessAccountPermissions.Read | SharedAccessAccountPermissions.Write | SharedAccessAccountPermissions.List,
            Services = SharedAccessAccountServices.Blob | SharedAccessAccountServices.File,
            ResourceTypes = SharedAccessAccountResourceTypes.Service,
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
            Protocols = SharedAccessProtocol.HttpsOnly
        };

    // Return the SAS token.
    return storageAccount.GetSharedAccessSignature(policy);
}

Blob hizmeti için hizmet düzeyi API'lerine erişmek için hesap SAS'ı kullanmak için depolama hesabınız için SAS ve Blob Depolama uç noktası kullanarak Blob istemci nesnesi oluşturun.To use the account SAS to access service-level APIs for the Blob service, construct a Blob client object using the SAS and the Blob storage endpoint for your storage account.

static void UseAccountSAS(string sasToken)
{
    // Create new storage credentials using the SAS token.
    StorageCredentials accountSAS = new StorageCredentials(sasToken);
    // Use these credentials and the account name to create a Blob service client.
    CloudStorageAccount accountWithSAS = new CloudStorageAccount(accountSAS, "account-name", endpointSuffix: null, useHttps: true);
    CloudBlobClient blobClientWithSAS = accountWithSAS.CreateCloudBlobClient();

    // Now set the service properties for the Blob client created with the SAS.
    blobClientWithSAS.SetServiceProperties(new ServiceProperties()
    {
        HourMetrics = new MetricsProperties()
        {
            MetricsLevel = MetricsLevel.ServiceAndApi,
            RetentionDays = 7,
            Version = "1.0"
        },
        MinuteMetrics = new MetricsProperties()
        {
            MetricsLevel = MetricsLevel.ServiceAndApi,
            RetentionDays = 7,
            Version = "1.0"
        },
        Logging = new LoggingProperties()
        {
            LoggingOperations = LoggingOperations.All,
            RetentionDays = 14,
            Version = "1.0"
        }
    });

    // The permissions granted by the account SAS also permit you to retrieve service properties.
    ServiceProperties serviceProperties = blobClientWithSAS.GetServiceProperties();
    Console.WriteLine(serviceProperties.HourMetrics.MetricsLevel);
    Console.WriteLine(serviceProperties.HourMetrics.RetentionDays);
    Console.WriteLine(serviceProperties.HourMetrics.Version);
}

Örnek: Bir depolanmış erişim ilkesini oluşturmaExample: Create a stored access policy

Aşağıdaki kod bir depolanmış erişim ilkesini bir kapsayıcı oluşturur.The following code creates a stored access policy on a container. Erişim ilkesi, kapsayıcıya veya bloblarına bir hizmet SAS için sınırlamalar belirlemek için kullanabilirsiniz.You can use the access policy to specify constraints for a service SAS on the container or its blobs.

private static async Task CreateSharedAccessPolicyAsync(CloudBlobContainer container, string policyName)
{
    // Create a new shared access policy and define its constraints.
    // The access policy provides create, write, read, list, and delete permissions.
    SharedAccessBlobPolicy sharedPolicy = new SharedAccessBlobPolicy()
    {
        // When the start time for the SAS is omitted, the start time is assumed to be the time when the storage service receives the request.
        // Omitting the start time for a SAS that is effective immediately helps to avoid clock skew.
        SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
        Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.List |
            SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Create | SharedAccessBlobPermissions.Delete
    };

    // Get the container's existing permissions.
    BlobContainerPermissions permissions = await container.GetPermissionsAsync();

    // Add the new policy to the container's permissions, and set the container's permissions.
    permissions.SharedAccessPolicies.Add(policyName, sharedPolicy);
    await container.SetPermissionsAsync(permissions);
}

Örnek: Bir kapsayıcı hizmet SAS oluşturmaExample: Create a service SAS on a container

Aşağıdaki kod bir SAS bir kapsayıcı oluşturur.The following code creates a SAS on a container. Varolan bir depolanmış erişim ilkesini adı sağlanmazsa, bu ilke SAS ile ilişkilendirilir.If the name of an existing stored access policy is provided, that policy is associated with the SAS. Hiçbir depolanmış erişim ilkesini sağlanırsa, kod kapsayıcısını geçici bir SAS oluşturur.If no stored access policy is provided, then the code creates an ad hoc SAS on the container.

private static string GetContainerSasUri(CloudBlobContainer container, string storedPolicyName = null)
{
    string sasContainerToken;

    // If no stored policy is specified, create a new access policy and define its constraints.
    if (storedPolicyName == null)
    {
        // Note that the SharedAccessBlobPolicy class is used both to define the parameters of an ad hoc SAS, and
        // to construct a shared access policy that is saved to the container's shared access policies.
        SharedAccessBlobPolicy adHocPolicy = new SharedAccessBlobPolicy()
        {
            // When the start time for the SAS is omitted, the start time is assumed to be the time when the storage service receives the request.
            // Omitting the start time for a SAS that is effective immediately helps to avoid clock skew.
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
            Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.List
        };

        // Generate the shared access signature on the container, setting the constraints directly on the signature.
        sasContainerToken = container.GetSharedAccessSignature(adHocPolicy, null);

        Console.WriteLine("SAS for blob container (ad hoc): {0}", sasContainerToken);
        Console.WriteLine();
    }
    else
    {
        // Generate the shared access signature on the container. In this case, all of the constraints for the
        // shared access signature are specified on the stored access policy, which is provided by name.
        // It is also possible to specify some constraints on an ad hoc SAS and others on the stored access policy.
        sasContainerToken = container.GetSharedAccessSignature(null, storedPolicyName);

        Console.WriteLine("SAS for blob container (stored access policy): {0}", sasContainerToken);
        Console.WriteLine();
    }

    // Return the URI string for the container, including the SAS token.
    return container.Uri + sasContainerToken;
}

Örnek: Blob üzerinde hizmet SAS oluşturmaExample: Create a service SAS on a blob

Aşağıdaki kod blob üzerinde bir SAS oluşturur.The following code creates a SAS on a blob. Varolan bir depolanmış erişim ilkesini adı sağlanmazsa, bu ilke SAS ile ilişkilendirilir.If the name of an existing stored access policy is provided, that policy is associated with the SAS. Hiçbir depolanmış erişim ilkesini sağlanırsa, kod blob üzerinde geçici bir SAS oluşturur.If no stored access policy is provided, then the code creates an ad hoc SAS on the blob.

private static string GetBlobSasUri(CloudBlobContainer container, string blobName, string policyName = null)
{
    string sasBlobToken;

    // Get a reference to a blob within the container.
    // Note that the blob may not exist yet, but a SAS can still be created for it.
    CloudBlockBlob blob = container.GetBlockBlobReference(blobName);

    if (policyName == null)
    {
        // Create a new access policy and define its constraints.
        // Note that the SharedAccessBlobPolicy class is used both to define the parameters of an ad hoc SAS, and
        // to construct a shared access policy that is saved to the container's shared access policies.
        SharedAccessBlobPolicy adHocSAS = new SharedAccessBlobPolicy()
        {
            // When the start time for the SAS is omitted, the start time is assumed to be the time when the storage service receives the request.
            // Omitting the start time for a SAS that is effective immediately helps to avoid clock skew.
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
            Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Create
        };

        // Generate the shared access signature on the blob, setting the constraints directly on the signature.
        sasBlobToken = blob.GetSharedAccessSignature(adHocSAS);

        Console.WriteLine("SAS for blob (ad hoc): {0}", sasBlobToken);
        Console.WriteLine();
    }
    else
    {
        // Generate the shared access signature on the blob. In this case, all of the constraints for the
        // shared access signature are specified on the container's stored access policy.
        sasBlobToken = blob.GetSharedAccessSignature(null, policyName);

        Console.WriteLine("SAS for blob (stored access policy): {0}", sasBlobToken);
        Console.WriteLine();
    }

    // Return the URI string for the container, including the SAS token.
    return blob.Uri + sasBlobToken;
}

SonuçConclusion

Paylaşılan erişim imzaları, depolama hesabınıza sınırlı izinlere hesap anahtarı bulunmamalıdır istemcilerine sağlamak için kullanışlıdır.Shared access signatures are useful for providing limited permissions to your storage account to clients that should not have the account key. Bu nedenle, Azure depolama kullanan uygulamalar için güvenlik modelinin önemli bir parçası olan.As such, they are a vital part of the security model for any application using Azure Storage. Burada listelenen en iyi uygulamaları izlerseniz, uygulamanızın güvenliğini tehlikeye atmadan depolama hesabınızdaki kaynaklara erişim daha fazla esneklik sağlamak için SAS'ı kullanabilirsiniz.If you follow the best practices listed here, you can use SAS to provide greater flexibility of access to resources in your storage account, without compromising the security of your application.

Sonraki AdımlarNext Steps