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. Örnek:

  • İ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:

  • Kullanıcı temsilcisi SAS

  • Hizmet SAS'i

  • Hesap SAS'i

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 yalnızca Blob depolama için geçerlidir.

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'i, Azure Depolama hizmetlerinden yalnızca birindeki kaynağa erişim yetkisi verir: Blob depolama, 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.

Dekont

Microsoft, mümkün olduğunda microsoft Entra kimlik bilgilerini daha kolay ele geçirilebilen hesap anahtarını kullanmak yerine en iyi güvenlik uygulaması olarak kullanmanızı önerir. Uygulama tasarımınız Blob depolamaya erişim için paylaşılan erişim imzaları gerektirdiğinde, üstün güvenlik için mümkün olduğunda kullanıcı temsilcisi SAS'ı oluşturmak için Microsoft Entra kimlik bilgilerini kullanın. Daha fazla bilgi için bkz. Azure Depolama'da verilere erişimi yetkilendirme.

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.

Dekont

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 Azure Depolama tarafından depolama kaynağına erişimi yetkilendirmek için kullanılır.

Dekont

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, SAS'ye sahip bir istemciye erişim vermek için Azure Depolama tarafından da 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) Microsoft Entra Kimliği
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'a 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ş.

Diagram showing the components of a resource URI with SAS token.

Dekont

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:

  1. İ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.

    Scenario diagram: Front-end proxy service

  2. 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.

    Scenario diagram: SAS provider service

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 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 (sipst), 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 Analytics 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.

Dekont

Depolama, depolama hesabı için oluşturulan paylaşılan erişim imzalarının sayısını izlemez ve hiçbir API bu ayrıntıyı 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

Hizmet SAS'i

Hesap SAS'i

Sonraki adımlar