Hizmet SAS’si oluşturma
Önemli
En iyi güvenlik için Microsoft mümkün olduğunda blob, kuyruk ve tablo verilerine karşı istekleri yetkilendirmek için yönetilen kimliklerle Microsoft Entra ID kullanılmasını önerir. Microsoft Entra ID ve yönetilen kimliklerle yetkilendirme, Paylaşılan Anahtar yetkilendirmesi üzerinden üstün güvenlik ve kullanım kolaylığı sağlar. Daha fazla bilgi edinmek için bkz. Microsoft Entra ID ile yetkilendirme. Yönetilen kimlikler hakkında daha fazla bilgi edinmek için bkz. Azure kaynakları için yönetilen kimlikler nedir?
Şirket içi uygulamalar gibi Azure dışında barındırılan kaynaklar için Azure Arc aracılığıyla yönetilen kimlikleri kullanabilirsiniz. Örneğin, Azure Arc özellikli sunucularda çalışan uygulamalar, Azure hizmetlerine bağlanmak için yönetilen kimlikleri kullanabilir. Daha fazla bilgi edinmek için bkz. Azure Arc özellikli sunucularla Azure kaynaklarında kimlik doğrulaması.
Paylaşılan erişim imzalarının (SAS) kullanıldığı senaryolar için Microsoft, kullanıcı temsilcisi SAS'sini kullanmanızı önerir. Kullanıcı temsilcisi SAS'sinin güvenliği hesap anahtarı yerine Microsoft Entra kimlik bilgileriyle sağlanır. Paylaşılan erişim imzaları hakkında bilgi edinmek için bkz. Kullanıcı temsilcisi SAS'İçerik Oluşturucu.
Hizmet paylaşılan erişim imzası (SAS), depolama hizmetlerinden yalnızca birindeki kaynağa erişim yetkisi verir: Azure Blob Depolama, Azure Kuyruk Depolama, Azure Tablo Depolama veya Azure Dosyalar. Hizmet düzeyi SAS'nin URI'si, SAS'nin erişim yetkisi verdiği kaynağın URI'sini ve ardından SAS belirtecini oluşturur.
SAS belirteci, isteği yetkilendirmek için gereken tüm bilgileri içeren sorgu dizesidir. Belirteç, bir istemcinin erişebileceği kaynağı, verilen izinleri ve imzanın geçerli olduğu süreyi belirtir.
SAS ayrıca isteklerin kaynaklandığı desteklenen IP adresini veya adres aralığını, isteğin oluşturulabileceği desteklenen protokolü veya istekle ilişkili isteğe bağlı erişim ilkesi tanımlayıcısını da belirtebilir.
Son olarak, her SAS belirteci bir imza içerir.
Dikkat
Paylaşılan erişim imzaları, depolama kaynaklarına izin veren anahtarlardır ve bunları bir hesap anahtarını koruduğu gibi korumanız gerekir. SAS'yi kötü amaçlı veya istenmeyen kullanıma karşı korumak önemlidir. SAS dağıtırken takdire bağlılığı kullanın ve güvenliği aşılmış SAS'yi iptal etmek için bir planınız var. Paylaşılan erişim imzalarını kullanan işlemler yalnızca HTTPS bağlantısı üzerinden gerçekleştirilmeli ve SAS URI'leri yalnızca HTTPS gibi güvenli bir bağlantı üzerinde dağıtılmalıdır.
Hizmet SAS'si yetkilendirme
Depolama hesabı anahtarı kullanarak bir hesap SAS'sinin güvenliğini sağlarsınız. Hesap SAS'sini oluşturduğunuzda istemci uygulamanızın hesap anahtarına sahip olması gerekir.
Kapsayıcı veya blob için SAS güvenliğini sağlamak üzere Microsoft Entra kimlik bilgilerini kullanmak için kullanıcı temsilcisi SAS oluşturun.
Dizin kapsamlı erişim için hizmet SAS desteği
Yetkilendirme sürümü () 2020-02-10 veya üzeri olduğunda ve hiyerarşik ad alanı etkinleştirildiğinde hizmet SAS'i dizin kapsamını (sr=d
sv
) destekler. Dizin kapsamı () semantiği, kapsayıcı kapsamına ()sr=d
sr=c
benzer; tek farkı, erişimin bir dizinle ve içindeki tüm dosya ve alt dizinlerle sınırlı olmasıdır. Belirtildiğinde sr=d
sdd
sorgu parametresi de gereklidir.
Yetkilendirme sürümü 2020-02-10 için imzaya dize biçimi değişmemiştir.
Hizmet SAS'si oluşturma
Aşağıdaki görüntü, paylaşılan erişim imzası URI'sinin bölümlerini temsil eder. Gerekli parçalar turuncu renkte görünür. SAS belirtecini oluşturan alanlar sonraki bölümlerde açıklanmıştır.
Aşağıdaki bölümlerde hizmet SAS belirtecini oluşturan parametrelerin nasıl belirtileceğini açıklanmaktadır.
signedVersion
Alanı belirtin
signedVersion
(sv
) alanı, paylaşılan erişim imzasının hizmet sürümünü içerir. Bu değer, paylaşılan erişim imzası (alanda signature
) tarafından kullanılan Paylaşılan Anahtar yetkilendirme sürümünü belirtir. değeri, bu paylaşılan erişim imzası ile yapılan istekler için hizmet sürümünü de belirtir.
Paylaşılan erişim imzası aracılığıyla istekleri yürütürken hangi sürümün kullanıldığı hakkında bilgi için bkz. Azure Depolama hizmetleri için sürüm oluşturma.
Bu parametrenin paylaşılan erişim imzası ile yapılan isteklerin yetkilendirmesini nasıl etkilediği hakkında bilgi için bkz. Paylaşılan erişim imzası ile erişim temsilcisi atama.
Alan adı | Sorgu parametresi | Açıklama |
---|---|---|
signedVersion |
sv |
Gereklidir. 2012-02-12 ve sonraki sürümlerde desteklenir. Bu paylaşılan erişim imzası ile yaptığınız istekleri yetkilendirmek ve işlemek için kullanılacak depolama hizmeti sürümü. Daha fazla bilgi için bkz. Azure Depolama hizmetleri için sürüm oluşturma. |
Eski bir SAS isteğinin sürümünü belirleme
Kullanılmayan eski senaryolarda signedVersion
, Blob Depolama sürümü belirlemek için kurallar uygular. Bu kurallar hakkında daha fazla bilgi için bkz. Azure Depolama hizmetleri için sürüm oluşturma.
Önemli
İstemci yazılımından daha yeni bir depolama hizmeti sürümü kullanan bir paylaşılan erişim imzası URI'sini kullandığınızda istemci yazılımı beklenmeyen protokol davranışıyla karşılaşabilir. Paylaşılan erişim imzası URI'lerini oluşturan kod, depolama hizmeti istekleri yapan istemci yazılımı tarafından anlaşılan sürümlere güvenmelidir.
İmzalı kaynağı belirtme (yalnızca Blob Depolama)
Gerekli signedResource
(sr
) alanı, paylaşılan erişim imzası aracılığıyla erişilebilen kaynakları belirtir. Aşağıdaki tabloda SAS belirtecindeki bir bloba veya kapsayıcı kaynağına başvurma açıklanmaktadır.
Kaynak | Parametre değeri | Desteklenen sürümler | Description |
---|---|---|---|
Blob | b | Tümü | Blobun içeriğine ve meta verilerine erişim verir. |
Blob sürümü | Bv | 2018-11-09 ve üzeri | Blob sürümünün içeriğine ve meta verilerine erişim verir, ancak temel bloba erişim vermez. |
Blob anlık görüntüsü | Bs | 2018-11-09 ve üzeri | Blob anlık görüntüsünün içeriğine ve meta verilerine erişim verir, ancak temel bloba erişim vermez. |
Kapsayıcı | c | Tümü | Kapsayıcıdaki herhangi bir blobun içeriğine ve meta verilerine ve kapsayıcıdaki blobların listesine erişim verir. |
Directory | d | 2020-02-10 ve üzeri | Hiyerarşik ad alanı etkinleştirilmiş bir depolama hesabında dizindeki herhangi bir blobun içeriğine ve meta verilerine ve dizindeki blobların listesine erişim verir. Alan için signedResource bir dizin belirtilirse (signedDirectoryDepth sdd ) parametresi de gereklidir. Dizin her zaman bir kapsayıcının içinde iç içe yerleştirilmiştir. |
İmzalı kaynağı belirtme (Azure Dosyalar)
SAS, Azure Dosyalar sürüm 2015-02-21 ve üzeri için desteklenir.
alanı, signedResource
paylaşılan erişim imzası aracılığıyla hangi kaynakların erişilebilir olduğunu belirtir. Aşağıdaki tabloda URI'de bir dosyaya veya paylaşım kaynağına başvurma açıklanmaktadır.
Alan adı | Sorgu parametresi | Açıklama |
---|---|---|
signedResource |
sr |
Gereklidir. Paylaşılan kaynağın bir dosya olup olmadığını belirtin f . Bunun yapılması, dosyanın içeriğine ve meta verilerine erişim verir.Paylaşılan kaynağın bir paylaşım olup olmadığını belirtin s . Bunu yaptığınızda, paylaşımdaki herhangi bir dosyanın içeriğine ve meta verilerine ve paylaşımdaki dizinler ve dosyalar listesine erişim izni verir. |
Yanıt üst bilgilerini geçersiz kılmak için sorgu parametrelerini belirtme (Yalnızca Blob Depolama ve Azure Dosyalar)
Bir istekte paylaşılan erişim imzası kullanıldığında döndürülecek belirli yanıt üst bilgilerinin değerlerini tanımlamak için, sorgu parametrelerinde yanıt üst bilgilerini belirtebilirsiniz. Bu özellik Blob Depolama için 2013-08-15 ve Azure Dosyalar için 2015-02-21 sürümü itibarıyla desteklenir. Bu özelliği kullanan paylaşılan erişim imzaları, Blob Depolama için veya 2013-08-15
Azure Dosyalar için veya daha sonraki bir sürüme 2015-02-21
ayarlanmış parametreyi içermelidirsv
.
Yanıt üst bilgileri ve karşılık gelen sorgu parametreleri aşağıdaki tabloda listelenmiştir:
Yanıt üst bilgisi adı | Karşılık gelen SAS sorgu parametresi |
---|---|
Cache-Control |
rscc |
Content-Disposition |
rscd |
Content-Encoding |
rsce |
Content-Language |
rscl |
Content-Type |
rsct |
Örneğin, 2013-08-15 veya sonraki bir sürümle oluşturulan paylaşılan erişim imzasının sorgu parametresini belirtirseniz rsct=binary
, Content-Type
yanıt üst bilgisi olarak binary
ayarlanır. Bu değer, yalnızca bu paylaşılan erişim imzasını Content-Type
kullanan bir istek için blob için depolanan üst bilgi değerini geçersiz kılar.
Yanıt üst bilgilerini sorgu parametreleri olarak belirten bir paylaşılan erişim imzası oluşturursanız, bunları imza dizesini oluşturmak için kullanılan imza dizesine eklemeniz gerekir. Daha fazla bilgi için bu makalenin devamında yer alan "İmza dizesini oluşturma" bölümüne bakın. Ek örnekler için bkz . Hizmet SAS örnekleri.
Tablo adını belirtin (yalnızca Tablo Depolama alanı)
alanı tableName
, paylaşacak tablonun adını belirtir.
Alan adı | Sorgu parametresi | Açıklama |
---|---|---|
tableName |
tn |
Gereklidir. Paylaştıracak tablonun adı. |
Erişim ilkesini belirtme
URI'nin erişim ilkesi bölümü, paylaşılan erişim imzasının geçerli olduğu süreyi ve kullanıcıya verilecek izinleri gösterir. Erişim ilkesini oluşturan URI bölümleri aşağıdaki tabloda açıklanmıştır:
Alan adı | Sorgu parametresi | Açıklama |
---|---|---|
signedStart |
st |
İsteğe bağlı. Paylaşılan erişim imzasının geçerli olduğu zaman, kabul edilen ISO 8601 UTC biçimlerinden birinde ifade edilir. Bu parametre atlanırsa, başlangıç saati olarak geçerli UTC saati kullanılır. 2012-02-12'den önceki sürümlerde, bir kapsayıcı ilkesi kullanılmadığı sürece ile signedExpiry arasındaki signedStart süre bir saati aşamaz. Kabul edilen UTC biçimleri hakkında daha fazla bilgi için bkz. Tarih/saat değerlerini biçimlendirme. |
signedExpiry |
se |
Gereklidir. Paylaşılan erişim imzası geçersiz hale geldiğinde, kabul edilen ISO 8601 UTC biçimlerinden birinde ifade edilir. İlişkili bir depolanmış erişim ilkesinde belirtilmişse bu alanı atlamalısınız. Kabul edilen UTC biçimleri hakkında daha fazla bilgi için bkz. Tarih/saat değerlerini biçimlendirme. |
signedPermissions
1 |
sp |
Gereklidir. Paylaşılan erişim imzası ile ilişkili izinler. Kullanıcı, izinler tarafından izin verilen işlemlerle sınırlıdır. İlişkili bir depolanmış erişim ilkesinde belirtilmişse bu alanı atlamalısınız. |
startPk
2startRk
2 |
spk srk |
Yalnızca Tablo Depolama. İsteğe bağlı, ancak startPk eşlik startRk etmelidir. Bu paylaşılan erişim imzası ile erişilebilen en düşük bölüm ve satır anahtarları. Anahtar değerler kapsayıcıdır. Atlanırsa, tablo varlıklarında erişilebilen alt sınır yoktur. |
endPk
2endRk
2 |
epk erk |
Yalnızca Tablo Depolama. İsteğe bağlı, ancak endPk eşlik endRk etmelidir. Bu paylaşılan erişim imzası ile erişilebilen en yüksek bölüm ve satır anahtarları. Anahtar değerler kapsayıcıdır. Atlanırsa, tablo varlıklarında erişilebilen üst sınır yoktur. |
1 Bu signedPermissions
alan, depolanmış erişim ilkesinin bir parçası olarak belirtilmediği sürece URI'de gereklidir.
2 , startPk
startRk
, endPk
ve endRk
alanları yalnızca Tablo Depolama kaynaklarında belirtilebilir.
İzinleri belirtme
SAS belirtecinde signedPermissions
(sp
) alanı için belirtilen izinler, bir istemcinin kaynakta hangi işlemleri gerçekleştirebileceğini gösterir.
bir istemcinin aynı SAS ile birden çok işlem gerçekleştirmesine izin vermek için izinleri birleştirebilirsiniz. SAS'yi oluştururken, izinleri aşağıdaki sırayla eklemeniz gerekir:
racwdxltmeop
Kapsayıcı için geçerli izin ayarlarına örnek olarak rw
, , rd
rl
, wd
, wl
ve rl
verilebilir. Geçersiz ayarlara örnek olarak wr
, dr
, lr
ve dw
verilebilir. İzin atamasını birden çok kez belirtemezsiniz.
Hizmet SAS'ı belirli işlemlere erişim izni veremiyor:
- Kapsayıcılar, kuyruklar ve tablolar oluşturulamaz, silinemez veya listelenemez.
- Kapsayıcı meta verileri ve özellikleri okunamaz veya yazılamaz.
- Kuyruklar temizlenemez ve meta verileri yazılamaz.
- Kapsayıcılar kiralanamaz.
Bu işlemlere erişim veren bir SAS oluşturmak için bir hesap SAS'si kullanın. Daha fazla bilgi için bkz. Hesap SAS'sini İçerik Oluşturucu.
Önemli
Paylaşılan erişim imzaları, depolama kaynaklarına izin veren anahtarlardır ve bunları aynı bir hesap anahtarını koruduğu gibi korumanız gerekir. Paylaşılan erişim imzalarını yalnızca BIR HTTPS bağlantısı üzerinden kullanan işlemler gerçekleştirin ve paylaşılan erişim imzası URI'lerini yalnızca HTTPS gibi güvenli bir bağlantı üzerinde dağıtin.
Her kaynak türü için desteklenen izinler aşağıdaki bölümlerde açıklanmıştır.
Dizin, kapsayıcı veya blob izinleri
Her kaynak türü için desteklenen izinler aşağıdaki tabloda açıklanmıştır:
İzin | URI simgesi | Kaynak | Sürüm desteği | İzin verilen işlemler |
---|---|---|---|---|
Read | r | Kapsayıcı Directory Blob |
Tümü | Kapsayıcı veya dizindeki herhangi bir blobun içeriğini, blok listesini, özelliklerini ve meta verilerini okuyun. Kopyalama işleminin kaynağı olarak blob kullanın. |
Ekle | a | Kapsayıcı Directory Blob |
Tümü | Ekleme blob'una blok ekleyin. |
Oluştur | c | Kapsayıcı Directory Blob |
Tümü | Yeni bir blob yazın, bir blobu anlık görüntüye yükleyin veya bir blobu yeni bir bloba kopyalayın. |
Write | w | Kapsayıcı Directory Blob |
Tümü | İçerik Oluşturucu veya içerik, özellikler, meta veriler veya blok listesi yazın. Blobu anlık görüntüye alma veya kiralama. Blobu yeniden boyutlandırın (yalnızca sayfa blobu). Blobu kopyalama işleminin hedefi olarak kullanın. |
Sil | d | Kapsayıcı Directory Blob |
Tümü | Blobu silme. Sürüm 2017-07-29 ve üzeri için, Silme izni blob üzerinde kirayı bozmaya da olanak tanır. Daha fazla bilgi için bkz . Kira Blobu işlemi. |
Sürümü sil | x | Kapsayıcı Blob |
2019-12-12 ve üzeri | Blob sürümünü silme. |
Kalıcı olarak silme | y | Blob | 2020-02-10 ve üzeri | Blob anlık görüntüsünü veya sürümünü kalıcı olarak silin. |
Liste | l | Kapsayıcı Directory |
Tümü | Blobları özyinelemeli olmayan şekilde listeleyin. |
Etiketler | t | Blob | 2019-12-12 ve üzeri | Blobdaki etiketleri okuyun veya yazın. |
Bul | f | Kapsayıcı | 2019-12-12 ve üzeri | Dizin etiketlerine sahip blobları bulun. |
Move | m | Kapsayıcı Directory Blob |
2020-02-10 ve üzeri | Blobu veya dizini ve içeriğini yeni bir konuma taşıyın. Parametre SAS belirtecine eklendiğinde ve yapışkan bit üst dizinde ayarlandıysa saoid , bu işlem isteğe bağlı olarak alt blob, dizin veya üst dizinin sahibiyle sınırlandırılabilir. |
Yürütme | e | Kapsayıcı Directory Blob |
2020-02-10 ve üzeri | Sistem özelliklerini alın ve depolama hesabı için hiyerarşik ad alanı etkinleştirildiyse bir blobun POSIX ACL'sini alın. Hiyerarşik ad alanı etkinse ve çağıran bir blobun sahibiyse, bu izin blobun sahip olan grubunu, POSIX izinlerini ve POSIX ACL'sini ayarlama olanağı verir. çağıranın kullanıcı tanımlı meta verileri okumasına izin vermez. |
Sahiplik | o | Kapsayıcı Directory Blob |
2020-02-10 ve üzeri | Hiyerarşik ad alanı etkinleştirildiğinde, bu izin çağıranın sahibini veya sahip olan grubu ayarlamasını ya da yapışkan biti ayarlanmış bir dizin içindeki bir dizini veya blobu yeniden adlandırırken veya silerken sahip olarak davranmasını sağlar. |
İzinler | p | Kapsayıcı Directory Blob |
2020-02-10 ve üzeri | Hiyerarşik ad alanı etkinleştirildiğinde, bu izin çağıranın dizinler ve bloblar üzerinde izinleri ve POSIX ACL'lerini ayarlamasına olanak tanır. |
Değişmezlik İlkesini Ayarla | ı | Kapsayıcı Blob |
2020-06-12 ve üzeri | Blob üzerinde değişmezlik ilkesini veya yasal saklamayı ayarlayın veya silin. |
Bir dosya için izinler
İzin | URI simgesi | İzin verilen işlemler |
---|---|---|
Read | r | İçeriği, özellikleri ve meta verileri okuyun. Kopyalama işleminin kaynağı olarak dosyasını kullanın. |
Oluştur | c | Yeni bir dosya İçerik Oluşturucu veya dosyayı yeni bir dosyaya kopyalayın. |
Write | w | İçerik Oluşturucu veya içerik, özellikler, meta veriler yazın. Dosyayı yeniden boyutlandırın. Dosyayı kopyalama işleminin hedefi olarak kullanın. |
Sil | d | Dosyayı silin. |
Paylaşım izinleri
İzin | URI simgesi | İzin verilen işlemler |
---|---|---|
Read | r | Paylaşımdaki herhangi bir dosyanın içeriğini, özelliklerini veya meta verilerini okuyun. Paylaşımdaki herhangi bir dosyayı kopyalama işleminin kaynağı olarak kullanın. |
Oluştur | c | Paylaşımda yeni bir dosya İçerik Oluşturucu veya bir dosyayı paylaşımdaki yeni bir dosyaya kopyalayın. |
Write | w | Paylaşımdaki herhangi bir dosya için içerik, özellik veya meta veri oluşturun veya yazın. Dosyayı yeniden boyutlandırın. Dosyayı kopyalama işleminin hedefi olarak kullanın. Not: Hizmet SAS'sini kullanarak paylaşım özelliklerini veya meta verilerini okuma veya yazma izinleri veremezsiniz. Bunun yerine bir hesap SAS'i kullanın. |
Sil | d | Paylaşımdaki herhangi bir dosyayı silin. Not: Hizmet SAS'sini kullanarak bir paylaşımı silme izni veremezsiniz. Bunun yerine bir hesap SAS'i kullanın. |
Liste | l | Paylaşımdaki dosyaları ve dizinleri listeleyin. |
Kuyruk için izinler
İzin | URI simgesi | İzin verilen işlemler |
---|---|---|
Read | r | İleti sayısı da dahil olmak üzere meta verileri ve özellikleri okuyun. İletilerde Gözatma. |
Ekle | a | Kuyruğa ileti ekleyin. |
Güncelleştir | u | Kuyruktaki iletileri güncelleştirin. Not: Önce güncelleştirmek istediğiniz iletiyi alabilmeniz için Güncelleştir ile İşlem iznini kullanın. |
İşleme | p | Kuyruktan iletileri alın ve silin. |
Tablo izinleri
İzin | URI simgesi | İzin verilen işlemler |
---|---|---|
Sorgu | r | Varlıkları ve sorgu varlıklarını alma. |
Ekle | a | Varlık ekleme. Not: Upsert işlemleri için Ekleme ve Güncelleştirme izinleri gereklidir. |
Güncelleştir | u | Varlıkları güncelleştirme. Not: Upsert işlemleri için Ekleme ve Güncelleştirme izinleri gereklidir. |
Sil | d | Varlıkları silin. |
IP adresi veya IP aralığı belirtme
2015-04-05 sürümünden itibaren, isteğe bağlı signedIp
(sip
) alanı bir genel IP adresi veya istekleri kabul etmek için bir genel IP adresi aralığı belirtir. İsteğin kaynaklandığı IP adresi SAS belirtecinde belirtilen IP adresi veya adres aralığıyla eşleşmiyorsa istek yetkilendirilmedi. Yalnızca IPv4 adresleri desteklenir.
Bir IP adresi aralığı belirtirken aralığın dahil olduğunu unutmayın. Örneğin, SAS üzerinde veya sip=168.1.5.60-168.1.5.70
belirtilmesi sip=168.1.5.65
isteği bu IP adresleriyle kısıtlar.
Aşağıdaki tabloda, istemci ortamına ve depolama hesabının konumuna signedIp
bağlı olarak, belirtilen senaryo için alanın SAS belirtecine eklenip eklenmeyeceği açıklanmaktadır.
İstemci ortamı | Depolama hesabı konumu | Öneri |
---|---|---|
Azure'da çalışan istemci | İstemciyle aynı bölgede | Bu senaryoda istemciye sağlanan sas alanı için signedIp bir giden IP adresi içermemelidir. Belirtilen giden IP adresine sahip bir SAS kullanan aynı bölgeden yapılan istekler başarısız olur.Bunun yerine, ağ güvenlik kısıtlamalarını yönetmek için bir Azure sanal ağı kullanın. Aynı bölgenin içinden Azure Depolama'ya yönelik istekler her zaman özel bir IP adresi üzerinden gerçekleşir. Daha fazla bilgi için bkz. Azure Depolama güvenlik duvarlarını ve sanal ağları yapılandırma. |
Azure'da çalışan istemci | İstemciden farklı bir bölgede | Bu senaryoda istemciye sağlanan sas alanı için signedIp genel IP adresi veya adres aralığı içerebilir. SAS ile yapılan bir istek, belirtilen IP adresinden veya adres aralığından kaynaklanmalıdır. |
Şirket içinde veya farklı bir bulut ortamında çalışan istemci | Herhangi bir Azure bölgesinde | Bu senaryoda istemciye sağlanan sas alanı için signedIp genel IP adresi veya adres aralığı içerebilir. SAS ile yapılan bir istek, belirtilen IP adresinden veya adres aralığından kaynaklanmalıdır.İstek bir ara sunucu veya ağ geçidinden geçerse, alan için signedIp bu ara sunucu veya ağ geçidinin genel giden IP adresini sağlayın. |
HTTP protokolunu belirtme
2015-04-05 sürümünden itibaren isteğe bağlı signedProtocol
(spr
) alanı SAS ile yapılan istek için izin verilen protokolü belirtir. Olası değerler hem HTTPS hem de HTTP (https,http
) veya yalnızca HTTPS 'dir (https
).
https,http
varsayılan değerdir. YALNıZCA HTTP'nin izin verilen bir değer olmadığını unutmayın.
Tablo erişim aralıklarını belirtme
startPk
, startRk
, endPk
ve endRk
alanları, paylaşılan erişim imzası ile ilişkili bir tablo varlıkları aralığını tanımlar. Tablo sorguları yalnızca aralık içindeki sonuçları döndürür ve paylaşılan erişim imzasını kullanarak bu aralığın dışındaki varlıkları ekleme, güncelleştirme veya silme girişimleri başarısız olur.
eşitse startPk
endPk
, paylaşılan erişim imzası tablodaki yalnızca bir bölümdeki varlıklara erişim yetkisi sağlar.
eşit endPk
ve startRk
eşitse startPk
endRk
, paylaşılan erişim imzası bir bölümdeki yalnızca bir varlığa erişebilir.
Bu alanların bir tablodaki varlıklara erişimi nasıl kısıtladığını anlamak için aşağıdaki tabloya bakın:
Mevcut alanlar | Kısıtlama kapsamı |
---|---|
startPk |
partitionKey >= startPk |
endPk |
partitionKey <= endPk |
startPk , startRk |
(partitionKey >startPk ) || (partitionKey == startPk && rowKey >= startRk ) |
endPk , endRk |
(partitionKey <endPk ) || (partitionKey == endPk && rowKey <= endRk ) |
Dizin derinliğini belirtin
Hiyerarşik ad alanı etkinleştirildiğinde ve alanı bir dizin () belirttiğindesignedResource
, kök dizinin altındaki alt dizin sayısını belirtmek için (sdd
) alanını da belirtmeniz signedDirectoryDepth
sr=d
gerekir. Alanın değeri sdd
negatif olmayan bir tamsayı olmalıdır.
Örneğin, kök dizinin https://{account}.blob.core.windows.net/{container}/
derinliği 0'dır. Kök dizindeki her alt dizin, derinliğe 1 ekler. Dizinin https://{account}.blob.core.windows.net/{container}/d1/d2
derinliği 2'dir.
Bu alan 2020-02-10 veya sonraki sürümlerde desteklenir.
İmzalı tanımlayıcıyı belirtme
URI'de alanı belirttiğinizde signedIdentifier
, belirtilen paylaşılan erişim imzasını ilgili depolanmış erişim ilkesiyle ilişkilendirebilirsiniz. Depolanan erişim ilkesi, gerekirse imzayı iptal etme özelliği de dahil olmak üzere bir veya daha fazla paylaşılan erişim imzası üzerinde ek bir denetim ölçüsü sağlar. Her kapsayıcı, kuyruk, tablo veya paylaşım en fazla beş depolanmış erişim ilkesine sahip olabilir.
Aşağıdaki tabloda, URI'de imzalı bir tanımlayıcıya nasıl başvuracakları açıklanmaktadır:
Alan adı | Sorgu parametresi | Açıklama |
---|---|---|
signedIdentifier |
si |
İsteğe bağlı. Kapsayıcı, kuyruk veya tablo için belirtilen bir erişim ilkesiyle ilişkilendiren en fazla 64 karakterlik benzersiz bir değer. |
Depolanan erişim ilkesi, kaynak içinde benzersiz olan en fazla 64 karakterlik bir değer olan imzalı bir tanımlayıcı içerir. Paylaşılan erişim imzası için URI'deki alan için signedidentifier
bu imzalı tanımlayıcının değerini belirtebilirsiniz. URI'de imzalı bir tanımlayıcı belirttiğinizde, imzayı depolanan erişim ilkesiyle ilişkilendirirsiniz. REST API kullanarak kapsayıcı düzeyinde erişim ilkesi oluşturmak için bkz. Paylaşılan erişim imzası ile erişim temsilcisi seçme.
Şifreleme kapsamını belirtme
URI'de alanını kullanarak signedEncryptionScope
, istemci uygulamasının kullanabileceği şifreleme kapsamını belirtebilirsiniz. SAS belirteciyle blobları (PUT) karşıya yüklediğinizde belirtilen şifreleme kapsamıyla sunucu tarafı şifrelemesini zorlar. GET ve HEAD kısıtlanmaz ve daha önce olduğu gibi gerçekleştirilmez.
Aşağıdaki tabloda URI'de imzalı şifreleme kapsamına nasıl başvuracakları açıklanmaktadır:
Alan adı | Sorgu parametresi | Açıklama |
---|---|---|
signedEncryptionScope |
ses |
İsteğe bağlı. İstek içeriğini şifrelemek için kullanılacak şifreleme kapsamını gösterir. |
Bu alan 2020-12-06 veya sonraki sürümlerde desteklenir. öğesini desteklenen sürümden önce eklerseniz ses
, hizmet hata yanıt kodu 403 (Yasak) döndürür.
Kapsayıcı veya dosya sistemi için varsayılan şifreleme kapsamını ayarlarsanız, ses
sorgu parametresi kapsayıcı şifreleme ilkesine saygı gösterir. Sorgu parametresi ile x-ms-default-encryption-scope
üst bilgi arasında ses
uyuşmazlık varsa ve x-ms-deny-encryption-scope-override
üst bilgi olarak ayarlanırsatrue
, hizmet hata yanıt kodu 403 (Yasak) döndürür.
PUT isteğinde x-ms-encryption-scope
üst bilgi ve ses
sorgu parametresini sağladığınızda, uyuşmazlık varsa hizmet hata yanıt kodu 400 (Hatalı İstek) döndürür.
İmzayı belirtme
Paylaşılan erişim imzası ile yapılan isteği yetkilendirmek için URI'nin imza bölümünü kullanırsınız. Azure Depolama, bir hizmet SAS'sini yetkilendirmek için Paylaşılan Anahtar yetkilendirme şeması kullanır.
Aşağıdaki tabloda, URI'de imzanın nasıl belirtileceğini açıklanmaktadır:
Alan adı | Sorgu parametresi | Açıklama |
---|---|---|
signature |
sig |
İmzalanacak dize, alanlardan üretilen ve isteği yetkilendirmek için doğrulanması gereken benzersiz bir dizedir. İmza, SHA256 algoritmasını kullanarak imzaya dize ve anahtar üzerinden hesapladığınız ve ardından Base64 kodlamasını kullanarak kodladığınız karma tabanlı bir ileti kimlik doğrulama kodudur (HMAC). |
İmza dizesini oluşturma
Paylaşılan erişim imzasının imza dizesini oluşturmak için, önce isteği oluşturan alanlardan imza için dizeyi oluşturun, dizeyi UTF-8 olarak kodlayın ve sonra HMAC-SHA256 algoritmasını kullanarak imzayı hesaplayın. İşaret dizesinde yer alan alanların URL kodunun çözülmesi gerekir.
Sürüm 2020-12-06 ve üzeri
Sürüm 2020-12-06, imzalı şifreleme kapsamı alanı için destek ekler. Blob Depolama kaynakları için imzaya dize oluşturmak için aşağıdaki biçimi kullanın:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
signedSnapshotTime + "\n" +
signedEncryptionScope + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
Sürüm 2018-11-09 ve üzeri
Sürüm 2018-11-09, imzalı kaynak ve imzalı blob anlık görüntü zaman alanları için destek ekler. Bu alanlar, imzalanacak dizeye eklenmelidir. Blob Depolama kaynakları için imzaya dize oluşturmak için aşağıdaki biçimi kullanın:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n"
signedSnapshotTime + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
Sürüm 2015-04-05 ve üzeri
Sürüm 2015-04-05, imzalı IP ve imzalı protokol alanları için destek ekler. Bu alanlar, imzalanacak dizeye eklenmelidir. Blob Depolama veya Azure Dosyalar kaynakları için imzaya dize oluşturmak için aşağıdaki biçimi kullanın:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
Tablo Depolama kaynakları için imzaya dize oluşturmak için aşağıdaki biçimi kullanın:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
startingPartitionKey + "\n"
startingRowKey + "\n"
endingPartitionKey + "\n"
endingRowKey
Kuyruk Depolama kaynakları için imzaya dize oluşturmak için aşağıdaki biçimi kullanın:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion
Sürüm 2013-08-15 - 2015-02-21
2013-08-15 ile 2015-02-21 arası sürümleri kullanarak Blob Depolama veya Azure Dosyalar kaynakları için imzaya dize oluşturmak için aşağıdaki biçimi kullanın. Azure Dosyalar için SAS, 2015-02-21 sürümünden itibaren desteklenir.
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedVersion + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
Bir tablo için imzaya dize oluşturmak için aşağıdaki biçimi kullanın:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedVersion + "\n" +
startPk + "\n" +
startRk + "\n" +
endPk + "\n" +
endRk
Bir kuyruk için imzaya dize oluşturmak için aşağıdaki biçimi kullanın:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedVersion
Sürüm 2012-02-12
Sürüm 2012-02-12 için Blob Depolama kaynakları için imzaya dize oluşturmak için aşağıdaki biçimi kullanın:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedVersion
2012-02-12'den önceki sürümler
2012-02-12'den önceki sürümlerin Blob Depolama kaynakları için imzaya dize oluşturmak için aşağıdaki biçimi kullanın:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier
İmzalanacak dizeyi oluştururken aşağıdakileri göz önünde bulundurun:
Bir alan isteğe bağlıysa ve isteğin bir parçası olarak sağlanmadıysa, bu alan için boş bir dize belirtin. Boş dizeden sonra yeni satır karakterini (\n) eklediğinizden emin olun.
Tablo için imzaya dize, boş dizeler olsa bile ek parametreleri içermelidir.
signedpermission
Dizenin bölümü, her kaynak türüne özgü sabit bir sırada izin atamalarını içermelidir. Bu izinlerin herhangi bir bileşimi kabul edilebilir, ancak izin mektuplarının sırası aşağıdaki tabloda yer alan sırayla eşleşmelidir.Kaynak türü İzin sırası Blob racwd Kapsayıcı racwdl Kuyruk raup File rcwd Paylaş rcwdl Tablo raud Örneğin, kapsayıcı için geçerli izin ayarlarına örnek olarak
rw
,rd
,rl
,wd
,wl
verl
verilebilir. Geçersiz ayarlara örnek olarakwr
,dr
,lr
vedw
verilebilir. İzin belirtmeye birden çok kez izin verilmez.İsteği depolanmış bir erişim ilkesiyle ilişkilendiriyorsanız dizenin bölümü için
signedIdentifier
bir değer sağlayın.2012-02-12'den önceki bir depolama hizmeti sürümünü belirten paylaşılan erişim imzası, yalnızca bir blobu veya kapsayıcıyı paylaşabilir ve önce yeni satır karakterini atlamalıdır
signedVersion
.Dizenin
canonicalizedResource
bölümü, imzalı kaynağın kurallı yoludur. Sürüm 2015-02-21 veya üzeri için hizmet adını (Blob Depolama, Tablo Depolama, Kuyruk Depolama veya Azure Dosyalar) içermesi, depolama hesabı adını ve kaynak adını içermesi ve URL kodunun çözülmesi gerekir. Blob adları blobun kapsayıcısını içermelidir. Tablo adları küçük harfle yazılmalıdır.
Kapsayıcı, kuyruk, tablo veya dosya paylaşımı için kurallı hale getirilmiş kaynak dizesi, bu nesneye erişim sağlayan bir SAS için sondaki eğik çizgiyi (/) atlamalıdır.
Aşağıdaki örneklerde, kaynağın canonicalizedResource
türüne bağlı olarak dizenin bir kısmının nasıl inşası gösterilmektedir.
Kapsayıcılar
Sürüm 2015-02-21 ve üzeri için:
URL = https://myaccount.blob.core.windows.net/music
canonicalizedResource = "/blob/myaccount/music"
2015-02-21'den önceki sürümler için:
URL = https://myaccount.blob.core.windows.net/music
canonicalizedResource = "/myaccount/music"
Bloblar
Sürüm 2015-02-21 ve üzeri için:
URL = https://myaccount.blob.core.windows.net/music/intro.mp3
canonicalizedResource = "/blob/myaccount/music/intro.mp3"
2015-02-21'den önceki sürümler için:
URL = https://myaccount.blob.core.windows.net/music/intro.mp3
canonicalizedResource = "/myaccount/music/intro.mp3"
Dosya Paylaşımları
URL = https://myaccount.file.core.windows.net/music
canonicalizedResource = "/file/myaccount/music"
Dosyalar
URL = https://myaccount.file.core.windows.net/music/intro.mp3
canonicalizedResource = "/file/myaccount/music/intro.mp3"
Kuyruklar
Sürüm 2015-02-21 ve üzeri için:
URL = https://myaccount.queue.core.windows.net/thumbnails
canonicalizedResource = "/queue/myaccount/thumbnails"
2015-02-21'den önceki sürümler için:
URL = https://myaccount.queue.core.windows.net/thumbnails
canonicalizedResource = "/myaccount/thumbnails"
Tablolar
İmzalı kaynak bir tabloysa, tablo adının kurallı biçimde küçük harf olduğundan emin olun.
Sürüm 2015-02-21 ve üzeri için:
URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price')
canonicalizedResource = "/table/myaccount/employees"
2015-02-21'den önceki sürümler için:
URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price')
canonicalizedResource = "/myaccount/employees"
Paylaşılan erişim imzasının kullanım ömrü ve iptali
Paylaşılan erişim imzaları, kullanıcılara depolama hesabı kaynaklarına erişim hakları verir. SAS kullanmayı planlarken SAS'nin ömrünü ve uygulamanızın belirli koşullar altında erişim haklarını iptal edip etmeyebileceğini düşünün.
Geçici SAS ile depolanmış erişim ilkesi karşılaştırması
Hizmet SAS'i iki biçimden birini alabilir:
Geçici SAS: Geçici bir SAS oluşturduğunuzda, SAS için başlangıç zamanı, süre sonu ve izinlerin tümü SAS URI'sinde belirtilir (veya başlangıç saati atlanırsa örtülür). Herhangi bir SAS türü geçici bir SAS olabilir.
Geçici SAS'nin ömrünü alanını kullanarak
signedExpiry
yönetebilirsiniz. Son kullanma tarihinden sonra kaynağa istemci erişimi vermek istiyorsanız, yeni bir imza vermelisiniz. Paylaşılan erişim imzasının ömrünü kısa tutmanızı öneririz. 2012-02-12 sürümünden önce, depolanan erişim ilkesiyle ilişkilendirilmiş olmayan paylaşılan erişim imzası bir saati aşan etkin bir süreye sahip değildi.Depolanan erişim ilkesiyle SAS: Blob kapsayıcısı, tablo, kuyruk veya dosya paylaşımı olabilecek bir kaynak kapsayıcısı üzerinde depolanan erişim ilkesi tanımlanır. Bir veya daha fazla paylaşılan erişim imzasının kısıtlamalarını yönetmek için depolanmış erişim ilkesini kullanabilirsiniz. Bir SAS'yi depolanmış erişim ilkesiyle ilişkilendirdiğinizde, SAS depolanan erişim ilkesi için tanımlanan kısıtlamaları (başlangıç saati, süre sonu ve izinler) devralır.
Depolanan erişim ilkesi, URI'daki
signedIdentifier
alanla temsil edilir. Depolanan erişim ilkesi, gerekirse imzayı iptal etme özelliği de dahil olmak üzere bir veya daha fazla paylaşılan erişim imzası üzerinde ek denetim ölçüsü sağlar.
SAS iptal etme
SAS URI'si bir URL olduğundan, SAS'yi ilk oluşturandan bağımsız olarak, SAS'yi alan herkes bunu kullanabilir. Sas genel olarak yayımlanırsa, dünyadaki herkes tarafından kullanılabilir. SAS, dört şeyden biri gerçekleşene kadar kaynaklara sahip olan herkese erişim izni verir:
Geçici SAS'de belirtilen süre sonu süresine ulaşılır.
Bir depolanmış erişim ilkesine başvurulur ve erişim ilkesi bir süre sonu belirtirse, SAS tarafından başvurulan depolanmış erişim ilkesinde belirtilen süre sonu süresine ulaşılır.
Süre sonu süresi, zaman aralığı geçtiğinden veya depolanmış erişim ilkesini geçmişte bir süre sonu süresine sahip olacak şekilde değiştirdiğinizden (SAS'yi iptal etmenin bir yoludur) ulaşılabilir.
SAS tarafından başvurulan saklı erişim ilkesi silinir ve sas iptal edilir. Azure Depolama paylaşılan erişim imzasında belirtilen depolanmış erişim ilkesini bulamazsa, istemci URI tarafından belirtilen kaynağa erişemez.
Depolanan erişim ilkesini silinen ilkeyle tam olarak aynı adla yeniden oluşturursanız, bu depolanmış erişim ilkesiyle ilişkili izinlere göre mevcut tüm SAS belirteçleri yeniden geçerli olur. Bu, SAS'de süre sonu süresinin geçmediğini varsayar. SAS'yi iptal etmek istiyorsanız, gelecekte bir süre sonu ile erişim ilkesini yeniden oluştururken farklı bir ad kullandığınızdan emin olun.
SAS oluşturmak için kullanılan hesap anahtarı yeniden oluşturulur. Bir hesap anahtarını yeniden oluşturmak, bu anahtarı kullanan tüm uygulama bileşenlerinin diğer geçerli hesap anahtarını veya yeni yeniden oluşturulan hesap anahtarını kullanacak şekilde güncelleştirilene kadar yetki verememesine neden olur. Geçici SAS'yi hemen iptal etmenin tek yolu hesap anahtarını yeniden oluşturmadır.
Önemli
Paylaşılan erişim imzası URI'si, imzayı oluşturmak için kullanılan hesap anahtarıyla ve varsa ilişkili depolanmış erişim ilkesiyle ilişkilendirilir. Depolanmış erişim ilkesi belirtilmezse, paylaşılan erişim imzasını iptal etmenin tek yolu hesap anahtarını değiştirmektir.
En iyi uygulama olarak, hizmet SAS'siyle bir depolanmış erişim ilkesi kullanmanızı öneririz. Depolanmış erişim ilkesi kullanmamayı seçerseniz geçici SAS'nin geçerli olduğu süreyi kısa tuttuğunuzdan emin olun. Hizmet SAS'sini depolanmış erişim ilkesiyle ilişkilendirme hakkında daha fazla bilgi için bkz. Saklı erişim ilkesi tanımlama.
Hizmet SAS örneği
Aşağıdaki örnek, sonuna hizmet SAS belirteci eklenmiş bir blob URI'sini gösterir. Hizmet SAS belirteci bloba okuma ve yazma izinleri sağlar.
https://myaccount.blob.core.windows.net/sascontainer/blob1.txt?sp=rw&st=2023-05-24T01:13:55Z&se=2023-05-24T09:13:55Z&sip=168.1.5.60-168.1.5.70&spr=https&sv=2022-11-02&sr=b&sig=<signature>
URI'nin her bölümü aşağıdaki tabloda açıklanmıştır:
Name | SAS bölümü | Description |
---|---|---|
Kaynak URI'sı | https://myaccount.blob.core.windows.net/sascontainer/blob1.txt |
Blobun adresi. HTTPS kullanmanızı kesinlikle öneririz. |
Sınırlayıcı | ? |
Sorgu dizesinden önce gelen sınırlayıcı. Sınırlayıcı SAS belirtecinin bir parçası değil. |
İzinler | sp=rw |
SAS tarafından verilen izinler Okuma (r) ve Yazma (w) izinlerini içerir. |
Başlangıç saati | st=2023-05-24T01:13:55Z |
UTC saatinde belirtilir. SAS'nin hemen geçerli olmasını istiyorsanız başlangıç saatini atlarsınız. |
Süre sonu | se=2023-05-24T09:13:55Z |
UTC saatinde belirtilir. |
IP aralığı | sip=168.1.5.60-168.1.5.70 |
İsteğin kabul edildiği IP adresi aralığı. |
Protokol | spr=https |
Yalnızca HTTPS kullanan isteklere izin verilir. |
Azure Depolama sürümü | sv=2023-05-24 |
Azure Depolama sürüm 2012-02-12 ve üzeri için bu parametre kullanılacak sürümü gösterir. |
Kaynak | sr=b |
Kaynak bir blobdur. |
İmza | sig=<signature> |
Bloba erişimi yetkilendirmek için kullanılır. İmza, SHA256 algoritması kullanılarak bir dizeden imzaya ve anahtara göre hesaplanan ve ardından Base64 kodlaması kullanılarak kodlanan bir HMAC'dir. |