Paylaşılan erişim imzaları (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim izni verme
Paylaşılan erişim imzası (SAS), depolama hesabınızdaki kaynaklara güvenli temsilci erişimi sağlar. SAS ile, bir istemcinin verilerinize nasıl erişebileceği üzerinde ayrıntılı denetime sahipsiniz. Örneğin:
- İstemcinin erişebileceği kaynaklar.
- Bu kaynaklar için sahip oldukları izinler.
- SAS'nin geçerli olduğu süre.
Paylaşılan erişim imzası türleri
Azure Depolama üç tür paylaşılan erişim imzalarını destekler:
Önemli
Paylaşılan erişim imzalarının kullanıldığı senaryolar için Microsoft, kullanıcı temsilcisi SAS'sini kullanmanızı önerir. Kullanıcı temsilcisi SAS'sinin güvenliği, üstün güvenlik sağlayan hesap anahtarı yerine Microsoft Entra kimlik bilgileriyle sağlanır. Veri erişimi yetkilendirmesi hakkında daha fazla bilgi için bkz . Azure Depolama'da verilere erişimi yetkilendirme.
Kullanıcı temsilcisi SAS
Kullanıcı temsilcisi SAS'sinin güvenliği Microsoft Entra kimlik bilgileriyle ve SAS için belirtilen izinlerle sağlanır. Kullanıcı temsilcisi SAS,Blob Depolama ve Data Lake Storage için desteklenir ve uç noktalara ve dfs
uç noktalara blob
yapılan çağrılar için kullanılabilir. Şu anda Kuyruk Depolama, Tablo Depolama veya Azure Dosyalar için desteklenmez.
Kullanıcı temsilcisi SAS'ı hakkında daha fazla bilgi için bkz . Kullanıcı temsilcisi SAS'i (REST API) oluşturma.
Hizmet SAS'i
Hizmet SAS'sinin güvenliği depolama hesabı anahtarıyla sağlanır. Hizmet SAS'si, Azure Depolama hizmetlerinden yalnızca birindeki kaynağa erişim yetkisi verir: Blob depolama (Data Lake Storage ve dfs
uç noktalar dahil), Kuyruk depolama, Tablo depolama veya Azure Dosyalar.
Hizmet SAS'i hakkında daha fazla bilgi için bkz . Hizmet SAS'i (REST API) oluşturma.
Hesap SAS'i
Bir hesap SAS'sinin güvenliği depolama hesabı anahtarıyla sağlanır. Hesap SAS ise bir veya daha fazla depolama hizmetindeki kaynaklara erişim atar. Bir hizmet veya kullanıcı temsilcisi SAS'i aracılığıyla kullanılabilen tüm işlemler, hesap SAS'i aracılığıyla da kullanılabilir.
Ayrıca, aşağıdakilere erişim temsilcisi de atayabilirsiniz:
- Hizmet düzeyi işlemleri (Örneğin, Hizmet Özelliklerini Al/Ayarla ve Hizmet İstatistiklerini Al işlemleri).
- Hizmet SAS'siyle izin verilmemiş işlemleri okuma, yazma ve silme.
Hesap SAS'i hakkında daha fazla bilgi için Hesap SAS'i (REST API) oluşturun.
Paylaşılan erişim imzası aşağıdaki iki biçimden birini alabilir:
- Geçici SAS. Geçici bir SAS oluşturduğunuzda, SAS URI'sinde başlangıç saati, süre sonu süresi ve izinler belirtilir. Herhangi bir SAS türü geçici bir SAS olabilir.
- Depolanan erişim ilkesine sahip hizmet SAS'i. Depolanan erişim ilkesi, blob kapsayıcısı, tablo, kuyruk veya dosya paylaşımı olabilecek bir kaynak kapsayıcısı üzerinde tanımlanır. Depolanan erişim ilkesi, bir veya daha fazla hizmet paylaşılan erişim imzasının kısıtlamalarını yönetmek için kullanılabilir. Bir hizmet SAS'sini 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.
Not
Kullanıcı temsilcisi SAS'i veya hesap SAS'sinin geçici bir SAS olması gerekir. Depolanan erişim ilkeleri, kullanıcı temsilcisi SAS'sı veya hesap SAS'i için desteklenmez.
Paylaşılan erişim imzası nasıl çalışır?
Paylaşılan erişim imzası, Azure Depolama kaynağının URI'sine eklenen bir belirteçtir. Kaynaklara istemci tarafından nasıl erişilebileceğini gösteren özel bir sorgu parametreleri kümesi içeren belirteç. Sorgu parametrelerinden biri olan imza, SAS parametrelerinden oluşturulur ve SAS'yi oluşturmak için kullanılan anahtarla imzalanır. Bu imza, depolama kaynağına erişimi yetkilendirmek için Azure Depolama tarafından kullanılır.
Not
SAS belirteçlerinin oluşturulmasını denetlemek mümkün değildir. Hesap anahtarını kullanarak veya Azure rol ataması aracılığıyla SAS belirteci oluşturma ayrıcalıklarına sahip olan tüm kullanıcılar, depolama hesabının sahibinin bilgisi olmadan bunu yapabilir. Kullanıcıların SAS belirteçleri oluşturmasına izin veren izinleri kısıtlamaya dikkat edin. Kullanıcıların blob ve kuyruk iş yükleri için hesap anahtarıyla imzalanan bir SAS oluşturmasını önlemek için, Depolama hesabına Paylaşılan Anahtar erişimine izin verilmiyebilirsiniz. Daha fazla bilgi için bkz . Paylaşılan Anahtar ile yetkilendirmeyi engelleme.
SAS imzası ve yetkilendirmesi
SAS belirtecini kullanıcı temsilci anahtarıyla veya depolama hesabı anahtarıyla (Paylaşılan Anahtar) imzalayabilirsiniz.
Kullanıcı temsilci anahtarıyla SAS belirteci imzalama
Sas belirtecini, Microsoft Entra kimlik bilgileri kullanılarak oluşturulmuş bir kullanıcı temsilcisi anahtarı kullanarak imzalayabilirsiniz. Kullanıcı temsilcisi SAS'i, kullanıcı temsilcisi anahtarıyla imzalanır.
Anahtarı almak ve sas oluşturmak için, bir Microsoft Entra güvenlik sorumlusuna Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey
eylemi içeren bir Azure rolü atanmalıdır. Daha fazla bilgi için bkz . Kullanıcı temsilcisi SAS'i (REST API) oluşturma.
Sas belirtecini hesap anahtarıyla imzalama
Hem hizmet SAS'i hem de hesap SAS'i depolama hesabı anahtarıyla imzalanmıştır. Hesap anahtarıyla imzalanan bir SAS oluşturmak için uygulamanın hesap anahtarına erişimi olmalıdır.
bir istek SAS belirteci içerdiğinde, bu istek SAS belirtecinin nasıl imzalandığına göre yetkilendirilmiştir. SAS belirteci oluşturmak için kullandığınız erişim anahtarı veya kimlik bilgileri de Azure Depolama tarafından SAS'ye sahip bir istemciye erişim vermek için kullanılır.
Aşağıdaki tabloda her SAS belirteci türünün nasıl yetkilendirilmiş olduğu özetlenmiştir.
SAS türü | Yetkilendirme türü |
---|---|
Kullanıcı temsilcisi SAS (yalnızca Blob Depolama ve Data Lake Storage) | Microsoft Entra Kimlik |
Hizmet SAS'i | Paylaşılan Anahtar |
Hesap SAS'i | Paylaşılan Anahtar |
Microsoft, üstün güvenlik için mümkün olduğunda bir kullanıcı temsilcisi SAS kullanmanızı önerir.
SAS belirteci
SAS belirteci, örneğin Azure Depolama istemci kitaplıklarından birini kullanarak istemci tarafında oluşturduğunuz bir dizedir. SAS belirteci Azure Depolama tarafından hiçbir şekilde izlenmez. İstemci tarafında sınırsız sayıda SAS belirteci oluşturabilirsiniz. SAS oluşturduktan sonra, depolama hesabınızdaki kaynaklara erişim gerektiren istemci uygulamalarına dağıtabilirsiniz.
İstemci uygulamaları, isteğin bir parçası olarak Azure Depolama'ya SAS URI'sini sağlar. Ardından hizmet SAS parametrelerini ve imzayı denetleerek geçerli olduğunu doğrular. Hizmet imzanın geçerli olduğunu doğrularsa istek yetkilendirilmiş olur. Aksi takdirde istek 403 (Yasak) hata koduyla reddedilir.
Burada kaynak URI'sini, sınırlayıcı karakterini ('?') ve SAS belirtecini gösteren bir hizmet SAS URI'sine örnek verilmiş.
Not
Sorgu dizesinin sınırlayıcı karakteri ('?') SAS belirtecinin bir parçası değil. Portaldan, PowerShell'den, Azure CLI'dan veya Azure Depolama SDK'larından birinden SAS belirteci oluşturursanız, sınırlayıcı karakterini kaynak URL'sine eklemeniz gerekebilir.
Paylaşılan erişim imzası ne zaman kullanılır?
Depolama hesabınızdaki kaynaklara başka şekilde izinlere sahip olmayan tüm istemcilere güvenli erişim vermek için SAS kullanın.
SAS'nin yararlı olduğu yaygın bir senaryo, kullanıcıların kendi verilerini okuyup depolama hesabınıza yazdığı bir hizmettir. Depolama hesabının kullanıcı verilerini depoladığı bir senaryoda iki tipik tasarım deseni vardır:
İstemciler, kimlik doğrulamasını yapan ön uç ara sunucu hizmeti üzerinden verileri karşıya yükleyip indirirler. Bu ön uç proxy hizmeti, iş kurallarının doğrulanmasına olanak tanır. Ancak büyük miktarda veri veya yüksek hacimli işlemler için talebi karşılayacak şekilde ölçeklenebilen bir hizmet oluşturmak pahalı veya zor olabilir.
Basit bir hizmet gerektiğinde istemcinin kimliğini doğrular ve ardından bir SAS oluşturur. İstemci uygulaması SAS'yi aldıktan sonra depolama hesabı kaynaklarına doğrudan erişebilir. Erişim izinleri SAS tarafından ve SAS tarafından izin verilen aralık için tanımlanır. SAS tüm verileri ön uç ara sunucu hizmetiyle yönlendirme gereksinimini azaltır.
Birçok gerçek dünya hizmeti bu iki yaklaşımın karma sürümünü kullanabilir. Örneğin, bazı veriler ön uç ara sunucusu aracılığıyla işlenebilir ve doğrulanabilir. Diğer veriler doğrudan SAS kullanılarak kaydedilir ve/veya okunur.
Ayrıca, belirli senaryolarda bir kopyalama işleminde kaynak nesneye erişimi yetkilendirmek için bir SAS gerekir:
- Bir blobu farklı bir depolama hesabında bulunan başka bir bloba kopyaladığınızda. İsteğe bağlı olarak, hedef bloba erişimi yetkilendirmek için sas kullanabilirsiniz.
- Bir dosyayı farklı bir depolama hesabında bulunan başka bir dosyaya kopyaladığınızda. İsteğe bağlı olarak, hedef dosyaya erişimi yetkilendirmek için de sas kullanabilirsiniz.
- Bir blobu bir dosyaya veya bir dosyayı bloba kopyaladığınızda. Kaynak ve hedef nesneler aynı depolama hesabında bulunsa bile SAS kullanmanız gerekir.
SAS kullanırken en iyi uygulamalar
Uygulamalarınızda paylaşılan erişim imzalarını kullandığınızda, iki olası riskin farkında olmanız gerekir:
- Sas sızdırılırsa, bunu alan herkes tarafından kullanılabilir ve bu da depolama hesabınızın güvenliğini tehlikeye atabilir.
- bir istemci uygulamasına sağlanan SAS'nin süresi dolarsa ve uygulama hizmetinizden yeni bir SAS alamıyorsa, uygulamanın işlevselliği engellenebilir.
Paylaşılan erişim imzalarını kullanmaya yönelik aşağıdaki öneriler bu riskleri azaltmaya yardımcı olabilir:
SAS oluşturmak veya dağıtmak için her zaman HTTPS kullanın. SAS HTTP üzerinden geçirilir ve araya girilirse, ortadaki adam saldırısı gerçekleştiren bir saldırgan SAS'yi okuyabilir. Daha sonra bu SAS'yi hedeflenen kullanıcının kullanabildiği gibi kullanabilirler. Bu, hassas verilerin güvenliğini tehlikeye atabilir veya kötü amaçlı kullanıcının veri bozulmasına izin verebilir.
Mümkün olduğunda kullanıcı temsilcisi SAS'sini kullanın. Kullanıcı temsilcisi SAS,hizmet SAS'sine veya hesap SAS'sine üstün güvenlik sağlar. Kullanıcı temsilcisi SAS'sinin güvenliği Microsoft Entra kimlik bilgileriyle sağlanır, böylece hesap anahtarınızı kodunuzla depolamanız gerekmez.
SAS için bir iptal planına sahip olun. SAS'nin gizliliği ihlal edilirse yanıt vermeye hazır olduğunuzdan emin olun.
Depolama hesabı için bir SAS süre sonu ilkesi yapılandırın. SAS süre sonu ilkesi, SAS'nin geçerli olduğu önerilen aralığı belirtir. SAS süre sonu ilkeleri hizmet SAS'sine veya hesap SAS'sine uygulanır. Kullanıcı, önerilen aralıktan daha büyük geçerlilik aralığına sahip bir hizmet SAS'ı veya hesap SAS'sini oluşturduğunda bir uyarı görür. Azure İzleyici ile Azure Depolama günlüğü etkinleştirildiyse, Azure Depolama günlüklerine bir giriş yazılır. Daha fazla bilgi edinmek için bkz . Paylaşılan erişim imzaları için süre sonu ilkesi oluşturma.
Hizmet SAS'sı için depolanmış erişim ilkesi oluşturma. Depolanan erişim ilkeleri, depolama hesabı anahtarlarını yeniden oluşturmak zorunda kalmadan hizmet SAS'sinin izinlerini iptal etme seçeneği sunar. Süre sonunu gelecekte çok ileri (veya sonsuz) olarak ayarlayın ve geleceğe taşımak için düzenli olarak güncelleştirildiğinden emin olun. Kapsayıcı başına beş depolanmış erişim ilkesi sınırı vardır.
Geçici bir SAS hizmeti SAS'sinde veya hesap SAS'sinde yakın vadeli süre sonu süreleri kullanın. Bu şekilde, sas güvenliği aşılmış olsa bile, bu yalnızca kısa bir süre için geçerlidir. Depolanan erişim ilkesine başvuramıyorsanız bu uygulama özellikle önemlidir. Yakın vadeli süre sonu süreleri, bloba yüklenebilecek süreyi sınırlayarak bloba yazılabilecek veri miktarını da sınırlar.
gerekirse istemcilerin SAS'yi otomatik olarak yenilemesini sağlayın. İSTEMCIler, SAS'yi sağlayan hizmet kullanılamıyorsa yeniden denemelere zaman tanıyabilmek için SAS'yi süre dolmadan önce yenilemelidir. Bazı durumlarda bu gereksiz olabilir. Örneğin, SAS'nin az sayıda anlık, kısa süreli işlem için kullanılmasını isteyebilirsiniz. Bu işlemlerin son kullanma süresi içinde tamamlanması beklenir. Sonuç olarak SAS'nin yenilenmesini beklemiyorsunuz. Ancak, SAS aracılığıyla düzenli olarak istekte bulunan bir istemciniz varsa, süre sonu olasılığı devreye girer.
SAS başlangıç zamanına dikkat edin. SAS'nin başlangıç saatini geçerli saate ayarlarsanız, ilk birkaç dakika boyunca aralıklı olarak hatalar oluşabilir. Bunun nedeni, farklı makinelerin geçerli zamanlarının biraz farklı olmasıdır (saat dengesizliği olarak bilinir). Genel olarak, başlangıç zamanını geçmişte en az 15 dakika olacak şekilde ayarlayın. Ya da hiç ayarlamayın; bu da her durumda hemen geçerli olmasını sağlar. Aynı durum genellikle süre sonu süresi için de geçerlidir. Herhangi bir istekte her iki yönde de 15 dakikaya kadar saat dengesizliği gözlemleyebilirsiniz. 2012-02-12 öncesi bir REST sürümü kullanan istemciler için, depolanan erişim ilkesine başvurmayan sas için en uzun süre 1 saattir. 1 saatten uzun bir süre belirten ilkeler başarısız olur.
SAS tarih saat biçimine dikkat edin. Bazı yardımcı programlar (azCopy gibi) için tarih/saat değerleri '+%Y-%m-%dT%H:%M:%SZ' olarak biçimlendirilmelidir. Bu biçim özellikle saniyeleri içerir.
SAS ile mümkün olan en düşük ayrıcalıkları verin. En iyi güvenlik uygulaması, kullanıcıya mümkün olan en az kaynak için gereken en düşük ayrıcalıkları sağlamaktır. Mümkün olduğunda salt okunur sas kullanın. Bir kullanıcının tek bir nesneye yalnızca okuma erişimine ihtiyacı varsa, bu tek nesneye okuma erişimi verin ve tüm nesnelere okuma/yazma/silme erişimi vermeyin. Bu, SAS'nin saldırganın elinde daha az güç olduğundan SAS'nin gizliliğinin tehlikeye düşmesi durumunda da zararın daha az olmasına yardımcı olur.
Bir kaynağa erişen istemcileri belirlemenin doğrudan bir yolu yoktur. Ancak, erişimi izlemek için SAS'deki benzersiz alanları, imzalı IP 'yi (
sip
st
), imzalı başlangıç () ve imzalı süre sonu (se
) alanlarını kullanabilirsiniz. Örneğin, benzersiz bir süre sonu süresine sahip bir SAS belirteci oluşturabilir ve bu belirtecin verildiği istemciyle bağıntı oluşturabilirsiniz.Hesabınızın SAS aracılığıyla da dahil olmak üzere tüm kullanımlar için faturalandırılacağını anlayın. Bir bloba yazma erişimi sağlarsanız, kullanıcı 200 GB blob yüklemeyi seçebilir. Onlara okuma erişimi de verdiyseniz, sizin için çıkış maliyetlerinde 2 TB'a neden olarak 10 kez indirmeyi seçebilirler. Yine, kötü amaçlı kullanıcıların olası eylemlerini azaltmaya yardımcı olmak için sınırlı izinler sağlayın. Bu tehdidi azaltmak için kısa süreli SAS kullanın (ancak bitiş zamanında saat dengesizliği konusunda dikkatli olun).
SAS kullanarak yazılan verileri doğrulayın. bir istemci uygulaması depolama hesabınıza veri yazdığında, bu verilerle ilgili sorunlar olabileceğini unutmayın. Verileri doğrulamayı planlıyorsanız, veriler yazıldıktan sonra ve uygulamanız tarafından kullanılmadan önce bu doğrulamayı gerçekleştirin. Bu uygulama ayrıca, SAS'yi düzgün bir şekilde edinen bir kullanıcı veya sızdırılan sas'tan yararlanan bir kullanıcı tarafından hesabınıza yazılan bozuk veya kötü amaçlı verilere karşı da koruma sağlar.
SAS kullanmama zamanlarını öğrenme. Bazen depolama hesabınıza yönelik belirli bir işlemle ilişkili riskler SAS kullanmanın avantajlarından daha fazladır. Bu tür işlemler için iş kuralı doğrulaması, kimlik doğrulaması ve denetim gerçekleştirdikten sonra depolama hesabınıza yazan bir orta katman hizmeti oluşturun. Ayrıca, bazen erişimi başka yollarla yönetmek daha kolaydır. Örneğin, bir kapsayıcıdaki tüm blobları genel olarak okunabilir hale getirmek istiyorsanız, erişim için her istemciye sas sağlamak yerine kapsayıcıyı Genel yapabilirsiniz.
Uygulamanızı izlemek için Azure İzleyici ve Azure Depolama günlüklerini kullanın. SAS sağlayıcı hizmetinizdeki bir kesinti nedeniyle yetkilendirme hataları oluşabilir. Bunlar, saklı erişim ilkesinin yanlışlıkla kaldırılmasından da kaynaklanabilir. Bu tür yetkilendirme hatalarında ani artışları gözlemlemek için Azure İzleyici ve depolama analizi günlüğünü kullanabilirsiniz. Daha fazla bilgi için bkz. Azure İzleyici'de Azure Depolama ölçümleri ve Azure Depolama Analizi günlüğü.
Depolama hesabı için bir SAS süre sonu ilkesi yapılandırın. En iyi yöntemler, bir SAS'nin gizliliğinin tehlikeye atılması durumunda aralığı sınırlamanızı önerir. Depolama hesaplarınız için bir SAS süre sonu ilkesi ayarlayarak, kullanıcı bir hizmet SAS'ı veya hesap SAS'ı oluşturduğunda önerilen bir üst süre sonu sınırı sağlayabilirsiniz. Daha fazla bilgi için bkz . Paylaşılan erişim imzaları için süre sonu ilkesi oluşturma.
Not
Depolama, depolama hesabı için oluşturulan paylaşılan erişim imzalarının sayısını izlemez ve hiçbir API bu bilgiyi sağlayamaz. Depolama hesabı için oluşturulan paylaşılan erişim imzalarının sayısını bilmeniz gerekiyorsa, sayıyı el ile izlemeniz gerekir.
SAS ile çalışmaya başlama
Paylaşılan erişim imzalarını kullanmaya başlamak için her SAS türü için aşağıdaki makalelere bakın.
Kullanıcı temsilcisi SAS
- PowerShell ile kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturma
- Azure CLI ile kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturma
- .NET ile kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturma
- Python ile kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturma
- JavaScript ile kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturma
- Java ile kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturma
Hizmet SAS'i
- .NET ile kapsayıcı veya blob için hizmet SAS'i oluşturma
- Python ile kapsayıcı veya blob için hizmet SAS'i oluşturma
- JavaScript ile kapsayıcı veya blob için hizmet SAS'i oluşturma
- Java ile kapsayıcı veya blob için hizmet SAS'i oluşturma
Hesap SAS'i
- .NET ile hesap SAS'i oluşturma
- Python ile hesap SAS'i oluşturma
- JavaScript ile hesap SAS'i oluşturma
- Java ile hesap SAS'i oluşturma