Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İşlev erişim anahtarları , İşlevler çalışma zamanının HTTP ile tetiklenen uç noktaların güvenliğini sağlamak için kullandığı kimlik doğrulama belirteçleridir. Çağıran bir HTTP işlevini çalıştırdığında, bir anahtarı sorgu parametresi veya üst bilgi olarak içerir. Çalışma zamanı anahtarı doğrular ve isteği yetkiler veya reddeder.
Erişim anahtarları , uygulama düzeyinde gizli anahtarlar ile aynı değildir. Erişim anahtarları işlevlerinizi kimlerin çağırabileceğini korurken, uygulama düzeyinde gizli anahtarlar işlevlerinizin bağlantı kuracağı şeyleri korur.
Erişim anahtarları ne zaman kullanılır?
| Scenario | Erişim anahtarları neden sığar? |
|---|---|
| Üçüncü taraf web kancaları | GitHub, Stripe veya Twilio gibi sağlayıcılar, işlevinizi bir URL ve gizli anahtar aracılığıyla çağırır. Erişim anahtarları, doğrudan bekledikleri desenin ?code= içine yerleşir. |
| Hizmetler arası çağrılar | Arka uç hizmeti A, HTTP üzerinden B İşlevi'ni çağırır. Paylaşılan anahtar, yalnızca dahili aramalar için Microsoft Entra uygulama kayıtlarını ayarlamaktan daha kolaydır. |
| Event Grid abonelikleri | Event Grid, platformun otomatik olarak yönettiği bir sistem anahtarı kullanarak işlev uç noktanızı doğrular ve çağırır. |
| Geliştirme/test kimlik doğrulaması | Geliştirme sırasında tam OAuth/OIDC yapılandırmadan temel kimlik doğrulaması yapmanız gerekir. Erişim anahtarları, kimlik yapılandırması olmayan düşük sürtünmeli bir kimlik doğrulama kapısı sağlar. |
| Geçiş uyumluluğu | Mevcut Azure İşlevleri uygulamaları zaten erişim anahtarlarını kullanıyor. Container Apps'e geçiş yaparken, çağrıların kesintiye uğramasını önlemek için aynı anahtar tabanlı kimlik doğrulamasına ihtiyacınız vardır. |
Note
Kullanıcıya yönelik API'ler, sıfır güven iş yükleri veya kullanıcı başına yetkilendirme senaryoları için erişim anahtarları yerine Microsoft Entra ID / OAuth 2.0 kullanın. Erişim anahtarları, kimlik düzeyinde bir denetim izi olmayan paylaşılan gizli anahtarlardır.
Prerequisites
- Aktif bir aboneliğe sahip bir Azure hesabı. Ücretsiz bir hesap oluşturun.
- Azure CLI sürüm 2.40.0 veya üzeri.
- Container Apps içinde mevcut bir Azure İşlevleri uygulaması veya bir tane oluşturmak için izinler.
Erişim anahtarı türleri
İşlevler çalışma zamanı dört tür anahtarı yönetir:
| Anahtar türü | Kapsam | Amaç |
|---|---|---|
Ana anahtar (_master) |
İşlev uygulamasının tamamı | Tüm işlevlere ve /admin/* yönetim uç noktalarına yönetici düzeyinde erişim. İptal edilemez, yalnızca döndürülür. |
Konak anahtarları (default + özel) |
İşlev uygulamasının tamamı | Uygulamadaki HTTP ile tetiklenen herhangi bir işleve çağrıları yetkilendirin. |
İşlev tuşları (default + özel) |
Tek işlev | Bir tek işlev için çağrıları yetkilendirin. Host anahtarlarından daha ayrıntılı denetim sağlar. |
| Sistem anahtarları | Uzantı uç noktaları | Event Grid webhook abonelikleri ve Dayanıklı İşlevler gibi platform uzantıları tarafından kullanılır. Otomatik olarak yönetilir. |
Depolama arka uç seçme
AzureWebJobsSecretStorageType ortam değişkenini, çalışma zamanının erişim anahtarlarını nerede kalıcı hale getirdiğini kontrol etmek için ayarlayın. Azure Container Apps üç üretim sınıfı arka ucu destekler.
| Arka uç | Ayar değeri | Anahtarları otomatik olarak oluşturur | Dış bağımlılık | En iyi kullanım alanı: |
|---|---|---|---|---|
| Container Apps gizli anahtar deposu | containerapps |
Hayır - Anahtarları Container Apps içinde sırlar olarak sağlarsınız | Hiçbiri | Çoğu iş yükü (Önerilen) |
| Azure Key Vault | keyvault |
Hayır - el ile tetikleyici oluşturma | Key Vault örneği | Merkezi idare, uyumluluk denetimi |
| Azure Blob Depolama | blob |
Evet | Depolama hesabı | Eski uygulamalar veya mevcut AzureWebJobsStorage hesap |
Şu arka plan hususlarını aklınızda tutun:
- Çalışma zamanı, Container Apps gizli depolamasını otomatik olarak seçmez. Eğer tanımamayan bir değer ayarlamazsanız
AzureWebJobsSecretStorageTypeveya ayarlamazsanız, Functions sunucusu kullanılabilir olduğundaAzureWebJobsStorageBlob Depolama'ı kullanır. - Depolama sağlığı kontrolleri ve depoya bağlı özellikler için yapılandırılmasını sağla
AzureWebJobsStorage. -
AzureWebJobsSecretStorageTypeöğesinifilesolarak ayarlamayın. Container Apps dosya sistemi geçici olduğundan, bu arka uçta depolanan anahtarlar uygulama sıfıra ölçeklendiğinde, yeniden başlattığında veya yeni bir revizyon açtığında kaybolur.
Gizli ad şablonları
Depolanan anahtarlar için adlandırma kuralı, depolama arka ucuna bağlıdır.
- Container Apps gizli anahtar deposu
- Key Vault (şifreleme hizmeti)
- Blob Depolama
Container Apps gizli dizin deposu farklı bir yöntem kullanır. Fonksiyonlar ana makinesi, /run/secrets/functions-keys/ konumundaki birim bağlı dosyalardan anahtarları okur. Her dosya noktalı bir ad kullanır (örneğin), host.masterancak Container Apps gizli dizi adları yalnızca küçük harfli alfasayısal karakterlere ve tirelere izin verir. Gizli birimi bağladığınızda, path alanını, İşlevler konağı tarafından beklenen noktalarla ayrılmış dosya adına (örneğin, secretRef: host-master → path: host.master) açıkça ayarlamanız gerekir. Platform herhangi bir otomatik ad çevirisi gerçekleştirmez.
| Anahtar türü | Container Apps gizli isim (tireler) | Birim bağlama path (üç nokta) |
|---|---|---|
| Ana anahtar | host-master |
host.master |
| Varsayılan konak anahtarı | host-function-default |
host.function.default |
| Özel ana makine anahtarı | host-function-<name> |
host.function.<name> |
| Belirli bir işlev için varsayılan işlev anahtarı | functions-<functionname>-default |
functions.<functionName>.default |
| Belirli bir işlev için özel işlev anahtarı | functions-<functionname>-<keyname> |
functions.<functionName>.<keyName> |
| Sistem anahtarı | host-systemkey-<extension> |
host.systemKey.<extension> |
Tip
Sorun giderme sırasında anahtarların doğru yapılandırıldığını doğrulamak için arka uç deponuzda bu desenleri arayın.
Container Apps gizli anahtar deposunu yapılandırma
Önerilen arka uç, Container Apps gizli deposudur. Anahtarlar Container Apps platformunda kalır ve harici depolama alanı veya Key Vault gerektirmez. Azure Resource Manager etkinlik günlükleri gizli dizilerde ve ortam değişkenlerinde yapılan değişiklikleri izler.
Bu arka uç ile İşlevler konağı, /run/secrets/functions-keys/ biriminde bağlanan dosyalardan anahtarları okur. Konak anahtarları otomatik olarak oluşturmaz. Her anahtarı bir Container Apps gizli dizisi olarak oluşturmanız gerekir ve platform bunları konağın okuması için dosyalar olarak bağlar.
Important
Container Apps gizli dizi deposu , konağın perspektifinden salt okunurdur. Sunucu, bağlı anahtar dosyalarını okur ancak bunlara hiçbir zaman yazmaz. Gerekli bir anahtar eksikse, konak bunu otomatik olarak oluşturmaz.
1. Adım: Depolama türünü ayarlama
Azure portalında İşlevler kapsayıcı uygulamanıza gidin.
Ayarlar'ın altında Ortam değişkenleri'ne tıklayın.
Ekle'yi seçin ve aşağıdaki değerleri girin:
Mülkiyet Değer İsim AzureWebJobsSecretStorageTypeDeğer containerappsDeğişiklikleri onaylamak için Kaydet'i ve ardından Uygula'yı seçin.
2. Adım: Erişim anahtarı sırlarını oluşturun ve depolayın
Anahtar değerleri oluşturun ve bunları Container Apps gizlileri olarak depolayın. En azından ana anahtara ve varsayılan bir konak anahtarına ihtiyacınız vardır.
İşlevler container uygulamanızda Ayarlar altında Gizli Anahtarlar'ı seçin.
Ekle'yi seçin ve aşağıdaki değerleri girin:
Mülkiyet Değer İsim host-masterType Container Apps Gizli Değer Rastgele oluşturulan bir anahtar değeri. Add (Ekle) seçeneğini belirleyin.
host-function-defaultiçin rastgele oluşturulan başka bir değerle tekrar edin.Her işlev için bir anahtar eklemek amacıyla
functions-<functionname>-defaultadlı bir gizli oluşturun (hepsi küçük harfle).
Note
Container Apps gizli adları yalnızca küçük harfli alfasayısal karakterlere ve tirelere izin verir. Hâcim yapılandırmasındaki path alanını, İşlevler ana bilgisayarının beklediği noktalı dosya adına (örneğin, secretRef: host-master → path: host.master) açıkça ayarlamalısınız. Açık bir path olmadan, disk üzerindeki dosya tireli adını korur ve İşlevler ana bilgisayarı anahtarı bulamaz.
3. Adım: Birim bağlamasını yapılandırma
Gizlilik bilgilerini /run/secrets/functions-keys/ konumunda dosya olarak bağlayın.
İşlevler kapsayıcı uygulamanızda , Uygulama'nın altında Düzeltmeler ve çoğaltmalar'ı seçin.
Yeni düzeltme oluştur'u seçin.
Ölçek ve birimler sekmesindeki Birimler'in altında Ekle'yi seçin.
Aşağıdaki değerleri girin:
Mülkiyet Değer Birim türü Gizli İsim functions-keysHer bir gizli bilgi için, Yol alanını, İşlevler ana bilgisayarının beklediği noktalı dosya adı olacak şekilde ayarlayın (örneğin,
host-master'ihost.masteryolu olarak vehost-function-default'ühost.function.defaultyolu olarak ayarlayın).Add (Ekle) seçeneğini belirleyin.
Kapsayıcı sekmesinde kapsayıcınızı ve ardından Düzenle'yi seçin.
Birim bağlamaları sekmesini seçin ve Ekle'yi seçin.
Aşağıdaki değerleri girin:
Mülkiyet Değer Birim adı functions-keysBağlama yolu /run/secrets/functions-keysYeni düzeltmeyi dağıtmak için Kaydet'i ve ardından Oluştur'u seçin.
4. Adım: Doğrulama
Uygulama yeniden başlatıldıktan sonra anahtarların çalıştığını onaylayın:
az containerapp function keys list \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--key-type hostKey
Ayrıca, konağın Container Apps gizli bilgi deposunu kullandığını onaylayan mesaj için Resolved secret storage provider ContainerAppsSecretsRepository ile uygulama günlüklerini kontrol edebilirsiniz.
Anahtarları döndürme
Bir anahtarı döndürmek için Container Apps gizli anahtarını güncelleyin ve uygulamayı yeniden başlatın.
NEW_KEY=$(openssl rand -hex 32)
az containerapp secret set \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--secrets "host-function-default=$NEW_KEY"
az containerapp revision restart \
--resource-group "<RESOURCE_GROUP>" \
--name "<FUNCTIONS_APP_NAME>" \
--revision "<REVISION_NAME>"
Note
Tüm çoğaltmalar aynı bağlanmış gizli verileri paylaşır. Yeniden başlatmanın ardından, her kopya güncelleştirilmiş anahtar değerlerini alır.
Key Vault veya Blob Depolama'ı depo olarak yapılandırın
Key Vault altyapısı, erişim anahtarlarını Key Vault gizli anahtarları olarak depolayarak kurumsal düzeyde inceleme ve erişim kontrolü sağlar.
Bir Key Vault oluşturun (henüz yoksa):
az keyvault create \ --name "<KEYVAULT_NAME>" \ --resource-group "<RESOURCE_GROUP>" \ --location "<LOCATION>"Kapsayıcı uygulamanızda yönetilen kimliği etkinleştirin (henüz etkinleştirilmemişse):
az containerapp identity assign \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --system-assignedYönetilen kimliğe Key Vault Gizli Dizi Yetkilisi rolü verin. Çalışma zamanının anahtarları oluşturmak ve yönetmek için okuma ve yazma erişimine ihtiyacı vardır:
PRINCIPAL_ID=$(az containerapp show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --query identity.principalId \ --output tsv) KEYVAULT_ID=$(az keyvault show \ --name "<KEYVAULT_NAME>" \ --query id \ --output tsv) az role assignment create \ --role "Key Vault Secrets Officer" \ --assignee "$PRINCIPAL_ID" \ --scope "$KEYVAULT_ID"Depolama türünü ve Key Vault URI'sini ayarlayın:
Sistem tarafından atanan kimlik için:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars \ "AzureWebJobsSecretStorageType=keyvault" \ "AzureWebJobsSecretStorageKeyVaultUri=https://<KEYVAULT_NAME>.vault.azure.net"Kullanıcı tarafından atanan kimlik için istemci kimliğini de ayarlayın:
az containerapp update \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --set-env-vars \ "AzureWebJobsSecretStorageType=keyvault" \ "AzureWebJobsSecretStorageKeyVaultUri=https://<KEYVAULT_NAME>.vault.azure.net" \ "AzureWebJobsSecretStorageKeyVaultClientId=<USER_ASSIGNED_IDENTITY_CLIENT_ID>"Anahtarları listeleyerek anahtar oluşturmayı tetikleme:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKey
Erişim anahtarlarını yönetme
Arka uç ne olursa olsun, erişim anahtarlarını listelemek, oluşturmak ve silmek için aşağıdaki komutları kullanın:
Note
Bu anahtar yönetim işlemlerini gerçekleştirmek için en az bir replikayı çalışır tutun.
Tüm ana anahtarları listeleyin:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type hostKeyAna anahtarı listeleyin:
az containerapp function keys list \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-type masterKeyÖzel bir host anahtarı oluşturun veya üzerine yazabilirsiniz:
az containerapp function keys set \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "MyCustomKey" \ --key-value "<YOUR_KEY_VALUE>" \ --key-type hostKeyBelirli bir anahtarı gösterin:
az containerapp function keys show \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "<KEY_NAME>" \ --key-type hostKeyBir ana bilgisayar anahtarını sil:
az containerapp function keys delete \ --resource-group "<RESOURCE_GROUP>" \ --name "<FUNCTIONS_APP_NAME>" \ --key-name "MyCustomKey" \ --key-type hostKey
Erişim anahtarıyla işlev çağırma
Anahtarı sorgu parametresi veya istek üst bilgisi olarak geçirin.
# Query parameter
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>?code=<HOST_KEY>"
# Header
curl "https://<FUNCTIONS_APP_URL>/api/<FUNCTION_NAME>" \
-H "x-functions-key: <HOST_KEY>"