Öğretici: Gizli diziler yerine kimlikleri kullanarak Azure hizmetlerine bağlanan bir işlev uygulaması oluşturma

Bu öğreticide, mümkün olduğunca gizli diziler veya bağlantı dizesi'ler yerine Microsoft Entra kimliklerini kullanarak bir işlev uygulamasının nasıl yapılandırıldığı gösterilmektedir. Kimlikleri kullanmak, hassas gizli dizilerin yanlışlıkla sızmasını önlemenize yardımcı olur ve verilere nasıl erişildiğinde daha iyi görünürlük sağlayabilir. Kimlik tabanlı bağlantılar hakkında daha fazla bilgi edinmek için bkz . Kimlik tabanlı bağlantı yapılandırma.

Gösterilen yordamlar genel olarak tüm diller için işe yarasa da, bu öğretici şu anda özellikle Windows'ta C# sınıf kitaplığı işlevlerini destekler.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • ARM şablonu kullanarak Azure'da işlev uygulaması oluşturma
  • İşlev uygulamasında hem sistem tarafından atanan hem de kullanıcı tarafından atanan yönetilen kimlikleri etkinleştirme
  • Diğer kaynaklara izin veren rol atamaları oluşturma
  • Kimliklerle değiştirilemeyen gizli dizileri Azure Key Vault'a taşıma
  • Yönetilen kimliğini kullanarak bir uygulamayı varsayılan konak depolamaya bağlanacak şekilde yapılandırma

Bu öğreticiyi tamamladıktan sonra, tetikleyiciler ve bağlamalarla gizli diziler yerine kimlik tabanlı bağlantıların nasıl kullanılacağını gösteren aşağıdaki öğreticiyi tamamlamanız gerekir.

Ön koşullar

Kimlik neden kullanılır?

Gizli dizileri ve kimlik bilgilerini yönetmek, her büyüklükteki ekipler için yaygın bir zorluktır. Gizli dizilerin hırsızlık veya yanlışlıkla açığa çıkmasına karşı korunması gerekir ve düzenli aralıklarla döndürülmeleri gerekebilir. Birçok Azure hizmeti, istemcilerin kimliğini doğrulamak ve hızlı bir şekilde değiştirilebilen ve iptal edilebilen izinlere karşı denetlemek için Bunun yerine Microsoft Entra Id'de bir kimlik kullanmanıza olanak tanır. Bu, daha az işlem yüküyle uygulama güvenliği üzerinde daha fazla denetime olanak tanır. Kimlik, bir uygulamanın geliştiricisi gibi bir insan kullanıcı veya yönetilen kimlikle Azure'da çalışan bir uygulama olabilir.

Bazı hizmetler Microsoft Entra kimlik doğrulamayı desteklemez, bu nedenle gizli diziler yine de uygulamalarınız için gerekli olabilir. Ancak bunlar Azure Key Vault'ta depolanabilir ve bu da gizli dizilerinizin yönetim yaşam döngüsünü basitleştirmeye yardımcı olur. Anahtar kasasına erişim de kimliklerle denetlenilir.

Mümkün olduğunda gizli diziler yerine kimliklerin nasıl kullanılacağını ve kullanamadığınızda Key Vault'un nasıl kullanılacağını anlayarak riski azaltabilir, operasyonel ek yükü azaltabilir ve genellikle uygulamalarınız için güvenlik duruşunu geliştirebilirsiniz.

Gerekli gizli diziler için Key Vault kullanan bir işlev uygulaması oluşturma

Azure Dosyalar, SMB dosya paylaşımları için Microsoft Entra kimlik doğrulamasını henüz desteklemeyen bir hizmet örneğidir. Azure Dosyalar, Premium ve Tüketim planlarında Windows dağıtımları için varsayılan dosya sistemidir. Azure Dosyalar tamamen kaldırabilsek de bu, istemediğiniz sınırlamaları ortaya çıkarır. Bunun yerine, Azure Dosyalar bağlantı dizesi Azure Key Vault'a taşırsınız. Bu şekilde, erişim kimlik tarafından denetlenerek merkezi olarak yönetilir.

Azure Key Vault oluşturma

İlk olarak gizli dizileri depolamak için bir anahtar kasası gerekir. Kasadan gizli dizileri kimlerin okuyabileceğini belirlemek için Azure rol tabanlı erişim denetimini (RBAC) kullanacak şekilde yapılandıracaksınız.

  1. Azure portalında Kaynak oluştur (+) öğesini seçin.

  2. Kaynak oluştur sayfasında Güvenlik>Anahtarı Kasası'nı seçin.

  3. Temel Bilgiler sayfasında, anahtar kasasını yapılandırmak için aşağıdaki tabloyu kullanın.

    Seçenek Önerilen değer Tanım
    Abonelik Aboneliğiniz Bu yeni işlev uygulamasının oluşturulduğu abonelik.
    Kaynak Grubu myResourceGroup İşlev uygulamanızı oluşturacağınız yeni kaynak grubunun adı.
    Anahtar kasası adı Genel olarak benzersiz bir ad Yeni anahtar kasanızı tanımlayan ad. Kasa adı yalnızca alfasayısal karakterler ve tireler içermelidir ve bir sayı ile başlayamaz.
    Fiyatlandırma Katmanı Standart Faturalama seçenekleri. Standart bu öğretici için yeterlidir.
    Bölge Tercih edilen bölge Size yakın veya işlevlerinizin eriştirileceği diğer hizmetlere yakın bir bölge seçin.

    "Kurtarma seçenekleri" bölümleri için varsayılan seçimleri kullanın.

  4. Daha sonra ihtiyacınız olacağı için kullandığınız adı not edin.

  5. erişim ilkesi sekmesine gitmek için İleri: Erişim İlkesi'ne tıklayın.

  6. İzin modeli'nin altında Azure rol tabanlı erişim denetimi'ni seçin

  7. Gözden geçir ve oluştur’u seçin. Yapılandırmayı gözden geçirin ve oluştur'a tıklayın.

Uygulama için kimlik ve izin ayarlama

Azure Key Vault'un kullanılabilmesi için uygulamanızın gizli dizileri okuma izni verilebilen bir kimliği olması gerekir. Bu uygulama, uygulama oluşturulmadan önce izinlerin ayarlanabilmesi için kullanıcı tarafından atanan bir kimlik kullanır. Azure İşlevleri için yönetilen kimlikler hakkında daha fazla bilgi için bkz. yönetilen kimlikleri kullanma Azure İşlevleri.

  1. Azure portalında Kaynak oluştur (+) öğesini seçin.

  2. Kaynak oluştur sayfasında Kimlik>Kullanıcı Tarafından Atanan Yönetilen Kimlik'i seçin.

  3. Temel Bilgiler sayfasında, kimliği yapılandırmak için aşağıdaki tabloyu kullanın.

    Seçenek Önerilen değer Tanım
    Abonelik Aboneliğiniz Bu yeni işlev uygulamasının oluşturulduğu abonelik.
    Kaynak Grubu myResourceGroup İşlev uygulamanızı oluşturacağınız yeni kaynak grubunun adı.
    Bölge Tercih edilen bölge Size yakın veya işlevlerinizin eriştirileceği diğer hizmetlere yakın bir bölge seçin.
    Ad Genel olarak benzersiz bir ad Kullanıcı tarafından atanan yeni kimliğinizi tanımlayan ad.
  4. Gözden geçir ve oluştur’u seçin. Yapılandırmayı gözden geçirin ve oluştur'a tıklayın.

  5. Kimlik oluşturulduğunda portalda bu kimliğe gidin. Özellikler'i seçin ve daha sonra ihtiyacınız olacağı için Kaynak Kimliğini not edin.

  6. Azure Rol Atamaları'yı seçin ve Rol ataması ekle (Önizleme) seçeneğine tıklayın.

  7. Rol ataması ekle (Önizleme) sayfasında, aşağıdaki tabloda gösterildiği gibi seçenekleri kullanın.

    Seçenek Önerilen değer Tanım
    Scope Anahtar Kasası Kapsam, rol atamasının uygulandığı bir kaynak kümesidir. Kapsam, daha düşük düzeylerde devralınan düzeylere sahiptir. Örneğin, bir abonelik kapsamı seçerseniz rol ataması abonelikteki tüm kaynak gruplarına ve kaynaklara uygulanır.
    Abonelik Aboneliğiniz Bu yeni işlev uygulamasının oluşturulduğu abonelik.
    Kaynak Anahtar kasanız Daha önce oluşturduğunuz anahtar kasası.
    Rol Key Vault Gizli Dizi Kullanıcısı Rol, verilen izinlerden oluşan bir koleksiyondur. Key Vault Gizli Dizileri Kullanıcısı, kimliğin kasadan gizli dizi değerlerini okumasına izin verir.
  8. Kaydet'i seçin. Kimliğin rol atamaları listesini yenilediğinizde rolün gösterilmesi bir veya iki dakika sürebilir.

Kimlik artık anahtar kasasında depolanan gizli dizileri okuyabilecek. Öğreticinin ilerleyen bölümlerinde farklı amaçlar için ek rol atamaları ekleyebilirsiniz.

İşlev uygulaması oluşturmak için şablon oluşturma

İşlev uygulaması oluşturmaya yönelik portal deneyimi Azure Key Vault ile etkileşim kurmaz, bu nedenle ve Azure Resource Manager şablonu oluşturup düzenlemeniz gerekir. Ardından bu şablonu kullanarak anahtar kasanızdan Azure Dosyalar bağlantı dizesi başvuran işlev uygulamanızı oluşturabilirsiniz.

Önemli

ARM şablonunu düzenlemeden önce işlev uygulamasını oluşturmayın. Azure Dosyalar yapılandırmasının uygulama oluşturma zamanında ayarlanması gerekir.

  1. Azure portalında Kaynak oluştur (+) öğesini seçin.

  2. Kaynak oluştur sayfasında İşlem>İşlevi Uygulaması'nı seçin.

  3. Temel Bilgiler sayfasında, işlev uygulamasını yapılandırmak için aşağıdaki tabloyu kullanın.

    Seçenek Önerilen değer Tanım
    Abonelik Aboneliğiniz Bu yeni işlev uygulamasının oluşturulduğu abonelik.
    Kaynak Grubu myResourceGroup İşlev uygulamanızı oluşturacağınız yeni kaynak grubunun adı.
    İşlev Uygulamasının adı Genel olarak benzersiz bir ad Yeni işlev uygulamanızı tanımlayan ad. Geçerli karakterler şunlardır: a-z (büyük/küçük harf duyarsız), 0-9 ve -.
    Yayınla Kod Kod dosyalarını veya Docker kapsayıcısını yayımlamayı seçin.
    Çalışma zamanı yığını .NET Bu öğreticide .NET kullanılır.
    Bölge Tercih edilen bölge Size yakın veya işlevlerinizin eriştirileceği diğer hizmetlere yakın bir bölge seçin.
  4. Gözden geçir ve oluştur’u seçin. Uygulamanız Barındırma ve İzleme sayfasındaki varsayılan değerleri kullanır. Varsayılan seçenekleri gözden geçirebilirsiniz ve bunlar oluşturduğunuz ARM şablonuna eklenir.

  5. İşlev uygulamanızı burada oluşturmak yerine İleri düğmesinin sağ tarafındaki Otomasyon için şablon indir'i seçin.

  6. Şablon sayfasında Dağıt'ı ve ardından Özel dağıtım sayfasında Şablonu düzenle'yi seçin.

    Screenshot of where to find the deploy button at the top of the template screen.

Şablonu düzenleme

Şimdi şablonu düzenleyerek Azure Dosyalar bağlantı dizesi Key Vault'ta depolayacak ve işlev uygulamanızın buna başvurmasına izin vereceksiniz. Devam etmeden önce önceki bölümlerde yer alan aşağıdaki değerlere sahip olduğunuzdan emin olun:

  • Kullanıcı tarafından atanan kimliğin kaynak kimliği
  • Anahtar kasanızın adı

Dekont

Otomasyon için tam bir şablon oluşturacaksanız, kimlik ve rol atama kaynakları için tanımları uygun dependsOn yan tümcelerle birlikte eklemek isteyebilirsiniz. Bu, portalı kullanan önceki adımların yerini alır. Azure Resource Manager kılavuzuna ve her hizmetin belgelerine başvurun.

  1. Düzenleyicide dizinin nerede resources başladığını bulun. İşlev uygulaması tanımından önce, Azure Dosyalar bağlantı dizesi Key Vault'a yerleştiren aşağıdaki bölümü ekleyin. "VAULT_NAME" yerine anahtar kasanızın adını yazın.

    {
        "type": "Microsoft.KeyVault/vaults/secrets",
        "apiVersion": "2016-10-01",
        "name": "VAULT_NAME/azurefilesconnectionstring",
        "properties": {
            "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
        },
        "dependsOn": [
            "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
        ]
    },
    
  2. İşlev uygulaması kaynağının tanımına (olarak ayarlanmıştır typeMicrosoft.Web/sites) diziye dependsOn ekleyinMicrosoft.KeyVault/vaults/VAULT_NAME/secrets/azurefilesconnectionstring. "VAULT_NAME" yerine anahtar kasanızın adını yazın. Bu, gizli dizi tanımlanmadan önce uygulamanızın oluşturulmaması için bunu yapar. Dizi dependsOn aşağıdaki örnekteki gibi görünmelidir.

        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-11-01",
            "name": "[parameters('name')]",
            "location": "[parameters('location')]",
            "tags": null,
            "dependsOn": [
                "microsoft.insights/components/idcxntut",
                "Microsoft.KeyVault/vaults/VAULT_NAME/secrets/azurefilesconnectionstring",
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
            ],
            // ...
        }
    
  3. Aşağıdaki örnekteki identity bloğu işlev uygulaması kaynağınızın tanımına ekleyin. Kullanıcı tarafından atanan kimliğinizin kaynak kimliği yerine "IDENTITY_RESOURCE_ID" yazın.

    {
        "apiVersion": "2018-11-01",
        "name": "[parameters('name')]",
        "type": "Microsoft.Web/sites",
        "kind": "functionapp",
        "location": "[parameters('location')]",
        "identity": {
            "type": "SystemAssigned,UserAssigned",
            "userAssignedIdentities": {
                "IDENTITY_RESOURCE_ID": {}
            }
        },
        "tags": null,
        // ...
    }
    

    Bu identity blok, bu öğreticinin ilerleyen bölümlerinde kullanacağınız sistem tarafından atanan bir kimliği de ayarlar.

  4. keyVaultReferenceIdentity aşağıdaki örnekte olduğu gibi işlevinin properties nesnesine özelliğini ekleyin. Kullanıcı tarafından atanan kimliğinizin kaynak kimliği yerine "IDENTITY_RESOURCE_ID" yazın.

    {
        // ...
         "properties": {
                "name": "[parameters('name')]",
                "keyVaultReferenceIdentity": "IDENTITY_RESOURCE_ID",
                // ...
         }
    }
    

    Bir uygulamada kullanıcı tarafından atanan birden çok kimlik yapılandırıldığından bu yapılandırmaya ihtiyacınız vardır. Kullanıcı tarafından atanan bir kimlik kullanmak istediğinizde, bir kimlik aracılığıyla hangisini belirtmeniz gerekir. Bu, sistem tarafından atanan kimlikler için geçerli değildir, çünkü bir uygulamada yalnızca bir tane olur. Yönetilen kimlik kullanan birçok özellik, sistem tarafından atananı varsayılan olarak kullanması gerektiğini varsayar.

  5. Şimdi aşağıdaki örneğe benzer olması gereken uygulama ayarını tanımlayan WEBSITE_CONTENTAZUREFILECONNECTIONSTRING JSON nesnelerini bulun:

    {
        "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
        "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2019-06-01').keys[0].value,';EndpointSuffix=','core.windows.net')]"
    },
    
  6. value alanını, aşağıdaki örnekte gösterildiği gibi gizli diziye bir başvuruyla değiştirin. "VAULT_NAME" yerine anahtar kasanızın adını yazın.

    {
        "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
        "value": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', 'VAULT_NAME', 'azurefilesconnectionstring')).secretUri, ')')]"
    },
    
  7. Güncelleştirilmiş ARM şablonunu kaydetmek için Kaydet'i seçin.

Değiştirilen şablonu dağıtma

  1. Kaynak Grubu da dahil olmak üzere oluşturma seçeneklerinizin hala doğru olduğundan emin olun ve Gözden geçir ve oluştur'u seçin.

  2. Şablonunuz doğrulandıktan sonra bu hesabı daha sonra kullanacağınızdan Depolama Hesap Adınızı not edin. Son olarak Oluştur'u seçerek Azure kaynaklarınızı oluşturun ve kodunuzu işlev uygulamasına dağıtın.

  3. Dağıtım tamamlandıktan sonra Kaynak grubuna git'i ve ardından yeni işlev uygulamasını seçin.

Tebrikler! Azure Key Vault'tan Azure Dosyalar bağlantı dizesi başvurmak için işlev uygulamanızı başarıyla oluşturdunuz.

Uygulamanızın gizli diziye bir başvuru eklemesi gerektiğinde, Key Vault'ta depolanan değere işaret eden yeni bir uygulama ayarı tanımlamanız yeterlidir. Azure İşlevleri için Key Vault başvurularında bu konuda daha fazla bilgi edinebilirsiniz.

Bahşiş

Uygulama Analizler bağlantı dizesi ve dahil edilen izleme anahtarı gizli dizi olarak kabul edilmez ve Okuyucu izinleri kullanılarak App Analizler'dan alınabilir. Bunları Key Vault'a taşımanız gerekmez, ancak kesinlikle taşıyabilirsiniz.

AzureWebJobs için yönetilen kimlik kullan Depolama

Ardından, bağlantı için AzureWebJobsStorage önceki adımlarda yapılandırdığınız sistem tarafından atanan kimliği kullanacaksınız. AzureWebJobsStorage , İşlevler çalışma zamanı tarafından ve birden çok çalışan örnek arasında koordinasyon sağlamak için çeşitli tetikleyiciler ve bağlamalar tarafından kullanılır. İşlev uygulamanızın çalışması gerekir ve Azure Dosyalar gibi, yeni bir işlev uygulaması oluşturduğunuzda varsayılan olarak bir bağlantı dizesi ile yapılandırılır.

Depolama hesabına sistem tarafından atanan kimliğe erişim izni verme

Kullanıcı tarafından atanan kimlik ve anahtar kasanızda daha önce uyguladığınız adımlara benzer şekilde, artık depolama hesabınıza sistem tarafından atanan kimlik erişimi veren bir rol ataması oluşturacaksınız.

  1. Azure portalında, daha önce işlev uygulamanızla oluşturulan depolama hesabına gidin.

  2. Erişim Denetimi (IAM) öğesini seçin. Burada kaynağa kimlerin erişimi olduğunu görüntüleyebilir ve yapılandırabilirsiniz.

  3. Ekle'ye tıklayın ve rol ataması ekle'yi seçin.

  4. Depolama Blob Veri Sahibini arayın, seçin ve İleri'ye tıklayın

  5. Üyeler sekmesindeki Erişim ata'nın altında Yönetilen Kimlik'i seçin

  6. Üyeleri seç'e tıklayarak Yönetilen kimlikleri seçin panelini açın.

  7. Abonelik'in, kaynakları daha önce oluşturduğunuz abonelik olduğunu onaylayın.

  8. Yönetilen kimlik seçicisinde Sistem tarafından atanan yönetilen kimlik kategorisinde İşlev Uygulaması'nıseçin. "İşlev Uygulaması" etiketinin yanında, sistem tarafından atanan kimliklere sahip abonelikteki uygulama sayısını gösteren bir sayı olabilir.

  9. Uygulamanız giriş alanlarının altındaki bir listede görünmelidir. Bunu görmüyorsanız, sonuçları uygulamanızın adıyla filtrelemek için Seç kutusunu kullanabilirsiniz.

  10. Uygulamanıza tıklayın. Seçili üyeler bölümüne inmelidir. Seç'e tıklayın.

  11. Rol ataması ekle ekranına dönüp Gözden Geçir ve ata'ya tıklayın. Yapılandırmayı gözden geçirin ve gözden geçir ve ata'ya tıklayın.

Bahşiş

İşlev uygulamasını blob ile tetiklenen bir işlev için kullanmayı planlıyorsanız, AzureWebJobs Depolama tarafından kullanılan hesap üzerinde Depolama Hesap Katkıda Bulunanı ve Depolama Kuyruk Veri Katkıda Bulunanı rolleri için bu adımları tekrarlamanız gerekir. Daha fazla bilgi edinmek için bkz . Blob tetikleyicisi kimlik tabanlı bağlantılar.

AzureWebJobs Depolama yapılandırmasını düzenleme

Ardından işlev uygulamanızı, konak depolama için blob hizmetini kullandığında sistem tarafından atanan kimliğini kullanacak şekilde güncelleştireceksiniz.

Önemli

Yapılandırma AzureWebJobsStorage bazı tetikleyiciler ve bağlamalar tarafından kullanılır ve bu uzantıların da kimlik tabanlı bağlantıları kullanabilmesi gerekir. Blob tetikleyicileri veya olay hub'ı tetikleyicileri kullanan uygulamaların bu uzantıları güncelleştirmesi gerekebilir. Bu uygulama için hiçbir işlev tanımlanmadığından, henüz bir sorun yoktur. Bu gereksinim hakkında daha fazla bilgi edinmek için bkz. Bağlan depolamayı kimlikle barındırma.

Benzer şekilde, AzureWebJobsStorage Linux Tüketiminde sunucu tarafı derleme kullanılırken dağıtım yapıtları için kullanılır. Linux Tüketiminde için AzureWebJobsStorage kimlik tabanlı bağlantıları etkinleştirdiğinizde, bir dış dağıtım paketi aracılığıyla dağıtmanız gerekir.

  1. Azure portalında işlev uygulamanıza gidin.

  2. Ayarlar bölümünde Yapılandırma‘yı seçin.

  3. AzureWebJobs Depolama uygulama ayarının yanındaki Düzenle düğmesini seçin ve aşağıdaki değerlere göre değiştirin.

    Seçenek Önerilen değer Veri Akışı Açıklaması
    Dosya Adı AzureWebJobs Depolama__accountName AzureWebJobs Depolama adını tam adıyla AzureWebJobsStorage__accountNamegüncelleştirin. Bu ayar, konağa depolanan gizli dizi aramak yerine kimliği kullanmasını söyler. Yeni ayar, uygulama ayarlarında özel bir karakter olan çift alt çizgi ()__ kullanır.
    Değer Hesap adınız bağlantı dizesi adını yalnızca Depolama AccountName olarak güncelleştirin.

    Bu yapılandırma, kaynağa bağlanmak için bir kimlik kullanması gerektiğini sisteme bildirir.

  4. Tamam'ı ve ardından Kaydet Devam'ı> seçerek değişikliklerinizi kaydedin.

AzureWebJobs için depolama bağlantı dizesi gereksinimini Depolama uygulamanızı yönetilen kimlikleri kullanarak bloblara bağlanacak şekilde yapılandırarak kaldırdınız.

Dekont

Söz __accountName dizimi AzureWebJobs Depolama bağlantısına özgüdür ve diğer depolama bağlantıları için kullanılamaz. Diğer bağlantıları tanımlamayı öğrenmek için, uygulamanızın kullandığı her tetikleyicinin ve bağlamanın başvurularını denetleyin.

Sonraki adımlar

Bu öğreticide, yapılandırmasında gizli dizileri depolamadan bir işlev uygulamasının nasıl oluşturulacağı gösterildi.

Sonraki öğreticide, tetikleyici ve bağlama bağlantılarında kimlik kullanmayı öğreneceksiniz.