PowerShell ile kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturma

Paylaşılan erişim imzası (SAS), depolama hesabınızdaki kapsayıcılara ve bloblara sınırlı erişim vermenizi sağlar. SAS oluşturduğunuzda, istemcinin erişmesine izin verilen Azure Depolama kaynakları, bu kaynaklar üzerinde sahip oldukları izinler ve SAS'nin ne kadar süre geçerli olduğu gibi sınırlamalarını belirtirsiniz.

Her SAS bir anahtarla imzalanır. SAS'i iki yoldan biriyle imzalayabilirsiniz:

  • Microsoft Entra kimlik bilgileri kullanılarak oluşturulan bir anahtarla. Microsoft Entra kimlik bilgileriyle imzalanan SAS, kullanıcı temsilcisi SAS'dir. Kullanıcı temsilcisi SAS oluşturan bir istemciye Microsoft.Depolama içeren bir Azure RBAC rolü atanmalıdır/storageAccounts/blobServices/generateUserDelegationKey eylemi. Daha fazla bilgi edinmek için bkz . Kullanıcı temsilcisi SAS'ı oluşturma.
  • Depolama hesabı anahtarıyla. Hem hizmet SAS'i hem de hesap SAS'i depolama hesabı anahtarıyla imzalanmıştır. Hizmet SAS'si oluşturan istemcinin hesap anahtarına doğrudan erişimi olmalıdır veya Microsoft.Depolama/storageAccounts/listkeys/action izni. Daha fazla bilgi edinmek için bkz . Hizmet SAS'i oluşturma veya Hesap SAS'ı oluşturma.

Dekont

Kullanıcı temsilcisi SAS,depolama hesabı anahtarıyla imzalanmış bir SAS için üstün güvenlik sunar. Microsoft mümkün olduğunda kullanıcı temsilcisi SAS'sini kullanmanızı önerir. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarıyla (SAS) verilere sınırlı erişim verme.

Bu makalede, Azure PowerShell ile bir kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturmak üzere Microsoft Entra kimlik bilgilerinin nasıl kullanılacağı gösterilmektedir.

Kullanıcı temsilcisi SAS hakkında

Kapsayıcıya veya bloba erişim için SAS belirteci, Microsoft Entra kimlik bilgileri veya hesap anahtarı kullanılarak güvenli hale getirilebilir. SAS'yi imzalamak için kullanılan OAuth 2.0 belirteci kullanıcı adına istendiğinden, Microsoft Entra kimlik bilgileriyle güvenliği sağlanan sas kullanıcı temsilcisi SAS olarak adlandırılır.

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 paylaşılan erişim imzaları gerektirdiğinde, üstün güvenlik için kullanıcı temsilcisi SAS'ı oluşturmak için Microsoft Entra kimlik bilgilerini kullanın. Kullanıcı temsilcisi SAS'i hakkında daha fazla bilgi için bkz . Kullanıcı temsilcisi SAS'i oluşturma.

Dikkat

Geçerli bir SAS'ye sahip olan tüm istemciler, bu SAS'nin izin verdiği şekilde depolama hesabınızdaki verilere erişebilir. SAS'yi kötü amaçlı veya istenmeyen kullanıma karşı korumak önemlidir. SAS dağıtmak için isteğe 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ı hakkında daha fazla bilgi için bkz. Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.

PowerShell modülünü yükleme

PowerShell ile kullanıcı temsilcisi SAS oluşturmak için Az.Depolama modülünün 1.10.0 veya sonraki bir sürümünü yükleyin. Modülün en son sürümünü yüklemek için şu adımları izleyin:

  1. Azure PowerShell'in önceki yüklemelerini kaldırın:

    • Ayarlar altındaki Uygulamalar ve özellikler ayarını kullanarak Azure PowerShell'in önceki yüklemelerini Windows'tan kaldırın.
    • tüm Azure modüllerini 'den %Program Files%\WindowsPowerShell\Moduleskaldırın.
  2. PowerShellGet'in en son sürümünü yüklediğinizden emin olun. Bir Windows PowerShell penceresi açın ve en son sürümü yüklemek için aşağıdaki komutu çalıştırın:

    Install-Module PowerShellGet -Repository PSGallery -Force
    
  3. PowerShellGet'i yükledikten sonra PowerShell penceresini kapatıp yeniden açın.

  4. Azure PowerShell'in en son sürümünü yükleyin:

    Install-Module Az -Repository PSGallery -AllowClobber
    
  5. Azure PowerShell sürüm 3.2.0 veya üzerini yüklediğinizden emin olun. Azure Depolama PowerShell modülünün en son sürümünü yüklemek için aşağıdaki komutu çalıştırın:

    Install-Module -Name Az.Storage -Repository PSGallery -Force
    
  6. PowerShell penceresini kapatıp yeniden açın.

Az.Depolama modülünün hangi sürümünün yüklü olduğunu denetlemek için aşağıdaki komutu çalıştırın:

Get-Module -ListAvailable -Name Az.Storage -Refresh

Azure PowerShell'i yükleme hakkında daha fazla bilgi için bkz . PowerShellGet ile Azure PowerShell yükleme.

Microsoft Entra Id ile Azure PowerShell'de oturum açma

Microsoft Entra hesabınızla oturum açmak için Bağlan-AzAccount komutunu çağırın:

Connect-AzAccount

PowerShell ile oturum açma hakkında daha fazla bilgi için bkz . Azure PowerShell ile oturum açma.

Azure RBAC ile izin atama

Azure PowerShell'den kullanıcı temsilcisi SAS oluşturmak için PowerShell'de oturum açmak için kullanılan Microsoft Entra hesabına Microsoft.Depolama'yi içeren bir rol atanmalıdır/storageAccounts/blobServices/generateUserDelegationKey eylemi. Bu izin, Microsoft Entra hesabının kullanıcı temsilcisi anahtarı istemesini sağlar. Kullanıcı temsilcisi SAS'sini imzalamak için kullanıcı temsilcisi anahtarı kullanılır. Microsoft.Depolama sağlayan rol/storageAccounts/blobServices/generateUserDelegationKey eylemi depolama hesabı, kaynak grubu veya abonelik düzeyinde atanmalıdır. Kullanıcı temsilcisi SAS'ı oluşturmaya yönelik Azure RBAC izinleri hakkında daha fazla bilgi için, Kullanıcı temsilcisi SAS'ı oluşturma bölümündeki Azure RBAC ile izin atama bölümüne bakın.

Azure rollerini bir Microsoft Entra güvenlik sorumlusuna atamak için yeterli izinleriniz yoksa, hesap sahibinden veya yöneticiden gerekli izinleri atamasını istemeniz gerekebilir.

Aşağıdaki örnek, Microsoft.Depolama içeren Depolama Blob Veri Katkıda Bulunanı rolünü atar /storageAccounts/blobServices/generateUserDelegationKey eylemi. Rolün kapsamı depolama hesabı düzeyindedir.

Köşeli ayraçlardaki yer tutucu değerleri kendi değerlerinizle değiştirmeyi unutmayın:

New-AzRoleAssignment -SignInName <email> `
    -RoleDefinitionName "Storage Blob Data Contributor" `
    -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Microsoft.Depolama içeren yerleşik roller hakkında daha fazla bilgi için/storageAccounts/blobServices/generateUserDelegationKey eylemi, bkz. Azure yerleşik rolleri.

SAS güvenliğini sağlamak için Microsoft Entra kimlik bilgilerini kullanma

Azure PowerShell ile bir kullanıcı temsilcisi SAS oluşturduğunuzda, SAS'yi imzalamak için kullanılan kullanıcı temsilcisi anahtarı sizin için örtük olarak oluşturulur. SAS için belirttiğiniz başlangıç saati ve süre sonu saati, kullanıcı temsilcisi anahtarı için başlangıç zamanı ve süre sonu saati olarak da kullanılır.

Kullanıcı temsilcisi anahtarının geçerli olduğu maksimum aralık başlangıç tarihinden itibaren 7 gün olduğundan, SAS için başlangıç saatinden itibaren 7 gün içinde bir süre sonu belirtmelisiniz. Kullanıcı temsilcisi anahtarının süresi dolduktan sonra SAS geçersizdir, bu nedenle süresi 7 günden uzun olan bir SAS yine de yalnızca 7 gün boyunca geçerli olur.

Azure PowerShell ile bir kapsayıcı veya blob için kullanıcı temsilcisi SAS'ı oluşturmak için, önce parametresini -UseConnectedAccount belirterek yeni bir Azure Depolama bağlam nesnesi oluşturun. -UseConnectedAccount parametresi, komutun oturum açtığınız Microsoft Entra hesabı altında bağlam nesnesi oluşturduğunu belirtir.

Köşeli ayraçlardaki yer tutucu değerleri kendi değerlerinizle değiştirmeyi unutmayın:

$ctx = New-AzStorageContext -StorageAccountName <storage-account> -UseConnectedAccount

Kapsayıcı için kullanıcı temsilcisi SAS'i oluşturma

Kapsayıcı için kullanıcı temsilcisi SAS belirteci döndürmek için, daha önce oluşturduğunuz Azure Depolama bağlam nesnesini geçirerek New-Az Depolama ContainerSASToken komutunu çağırın.

Aşağıdaki örnek, bir kapsayıcı için kullanıcı temsilcisi SAS belirteci döndürür. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın:

New-AzStorageContainerSASToken -Context $ctx `
    -Name <container> `
    -Permission racwdl `
    -ExpiryTime <date-time>

Döndürülen kullanıcı temsilcisi SAS belirteci şuna benzer olacaktır:

?sv=2018-11-09&sr=c&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-05T22%3A24%3A36Z&ske=2019-08-07T07%3A
00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=rwdl

Blob için kullanıcı temsilcisi SAS'i oluşturma

Blob için kullanıcı temsilcisi SAS belirteci döndürmek için, daha önce oluşturduğunuz Azure Depolama bağlam nesnesini geçirerek New-Az Depolama BlobSASToken komutunu çağırın.

Aşağıdaki söz dizimi, blob için kullanıcı temsilcisi SAS'sini döndürür. Örnek, SAS belirtecinin -FullUri eklendiği blob URI'sini döndüren parametresini belirtir. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın:

New-AzStorageBlobSASToken -Context $ctx `
    -Container <container> `
    -Blob <blob> `
    -Permission racwd `
    -ExpiryTime <date-time>
    -FullUri

Döndürülen kullanıcı temsilcisi SAS URI'si şuna benzer olacaktır:

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?sv=2018-11-09&sr=b&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-06T21%3A16%3A54Z&ske=2019-08-07T07%3A00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=racwd

Dekont

Kullanıcı temsilcisi SAS'i, depolanan erişim ilkesiyle izin tanımlamayı desteklemez.

Kullanıcı temsilcisi SAS'sini iptal etme

Azure PowerShell'den kullanıcı temsilcisi SAS'sini iptal etmek için Revoke-Az Depolama AccountUserDelegationKeys komutunu çağırın. Bu komut, belirtilen depolama hesabıyla ilişkili tüm kullanıcı temsilcisi anahtarlarını iptal eder. Bu anahtarlarla ilişkili tüm paylaşılan erişim imzaları geçersiz kılındı.

Köşeli ayraçlardaki yer tutucu değerleri kendi değerlerinizle değiştirmeyi unutmayın:

Revoke-AzStorageAccountUserDelegationKeys -ResourceGroupName <resource-group> `
    -StorageAccountName <storage-account>

Önemli

Hem kullanıcı temsilcisi anahtarı hem de Azure rol atamaları Azure Depolama tarafından önbelleğe alınır, bu nedenle iptal işlemini başlatmanız ile mevcut kullanıcı temsilcisi SAS'sinin geçersiz hale gelmesi arasında bir gecikme olabilir.

Sonraki adımlar