Aracılığıyla paylaş


Azure AI Search'te veri şifrelemesi için müşteri tarafından yönetilen anahtarları yapılandırma

Azure AI Search bekleyen verileri hizmet tarafından yönetilen anahtarlarla otomatik olarak şifreler. Daha fazla koruma gerekiyorsa, Azure Key Vault'ta oluşturup yönettiğiniz anahtarları kullanarak varsayılan şifrelemeyi başka bir şifreleme katmanıyla tamamlayabilirsiniz.

Bu makalede, müşteri tarafından yönetilen anahtar (CMK) veya "kendi anahtarını getir" (BYOK) şifrelemesini ayarlama adımları gösterilmektedir.

Not

Bir dizin CMK şifreliyse, yalnızca arama hizmetinin anahtara erişimi varsa erişilebilir. Erişim iptal edilirse dizin kullanılamaz ve dizin silinene veya anahtara erişim geri yüklenene kadar hizmet ölçeklendirilemez.

CMK şifrelenmiş nesneleri

CMK şifrelemesi tek tek nesneler üzerinde oluşturulduğunda. Arama hizmetinizde CMK gerekiyorsa bir zorlama ilkesi ayarlayın.

Bir nesne oluşturulduğunda CMK şifrelemesi çalışır duruma gelir. Zaten var olan nesneleri şifreleyemezsiniz. CMK şifrelemesi, bir nesne diske kaydedildiğinde uzun süreli depolama için bekleyen veriler veya kısa vadeli depolama için geçici veriler gerçekleşir. CMK ile disk hiçbir zaman şifrelenmemiş verileri görmez.

Şifrelenebilir nesneler dizinler, eş anlamlı listeleri, dizin oluşturucular, veri kaynakları ve beceri kümelerini içerir. Şifrelemenin şifre çözmesi işlem açısından pahalı olduğundan yalnızca hassas içerik şifrelenir.

Şifreleme aşağıdaki içerik üzerinden gerçekleştirilir:

  • Dizinler ve eş anlamlılar listelerinde yer alan tüm içerik.

  • Dizin oluşturucularda, veri kaynaklarında, beceri kümelerinde ve vektörleştiricilerde hassas içerik. Bu içerik yalnızca bağlantı dizesi, açıklamaları, kimlikleri, anahtarları ve kullanıcı girişlerini depolayan alanlardan oluşur. Örneğin beceri kümelerinin Azure AI hizmet anahtarları vardır ve bazı beceriler özel varlıklar gibi kullanıcı girişlerini kabul eder. Her iki durumda da anahtarlar ve becerilere kullanıcı girişleri şifrelenir. Dış kaynaklara (Azure veri kaynakları veya Azure OpenAI modelleri gibi) yönelik tüm başvurular da şifrelenir.

Tam çift şifreleme

CMK şifrelemesini tanıttığınızda, içeriği iki kez şifrelersiniz. Önceki bölümde belirtilen nesneler ve alanlar için içerik önce CMK'nizle, ikinci olarak da Microsoft tarafından yönetilen anahtarla şifrelenir. İçerik, uzun süreli depolama için veri disklerinde ve kısa vadeli depolama için kullanılan geçici disklerde iki kez şifrelenir.

CMK şifrelemesini etkinleştirmek dizin boyutunu artırır ve sorgu performansını düşürür. Bugüne kadarki gözlemlere bağlı olarak, gerçek performans dizin tanımına ve sorgu türlerine bağlı olarak değişse de sorgu sürelerinde yüzde 30-60'lık bir artış görmeyi bekleyebilirsiniz. Performans azaldığından, bu özelliği yalnızca gerçekten gerektiren nesnelerde etkinleştirmenizi öneririz.

Artık tüm bölgelerde çift şifreleme sağlansa da destek iki aşamada kullanıma sunulmuştur:

  • İlk dağıtım 1 Ağustos 2020'de yapıldı ve aşağıda listelenen beş bölgeyi içeriyordu. Aşağıdaki bölgelerde oluşturulan Arama hizmeti, geçici diskler için değil, veri diskleri için CMK'yi desteklemektedir:

    • Batı ABD 2
    • Doğu ABD
    • Orta Güney ABD
    • US Gov Virginia
    • US Gov Arizona
  • 13 Mayıs 2021'deki ikinci dağıtım, geçici diskler için şifreleme ve desteklenen tüm bölgelere genişletilmiş CMK şifrelemesi ekledi.

    İlk dağıtım sırasında oluşturulan bir hizmetten CMK kullanıyorsanız ve geçici diskler üzerinden CMK şifrelemesi de istiyorsanız, seçtiğiniz bölgede yeni bir arama hizmeti oluşturmanız ve içeriğinizi yeniden dağıtmanız gerekir. Hizmet oluşturma tarihinizi belirlemek için bkz . Hizmet oluşturma tarihini denetleme.

Önkoşullar

Sınırlamalar

  • Azure Key Vault Yönetilen Donanım Güvenlik Modeli (HSM) desteği yoktur.

  • Azure portalında şifreleme anahtarları ekleme desteği yoktur.

  • Abonelikler arası destek yok. Azure Key Vault ve Azure AI Search aynı abonelikte olmalıdır.

Key Vault ipuçları

Azure Key Vault'ta yeniyseniz, temel görevler hakkında bilgi edinmek için bu hızlı başlangıcı gözden geçirin: PowerShell kullanarak Azure Key Vault'tan gizli dizi ayarlama ve alma.

Key Vault'un kullanımına yönelik bazı ipuçları şunlardır:

  • İhtiyacınız olan sayıda anahtar kasası kullanın. Yönetilen anahtarlar farklı anahtar kasalarında olabilir. Arama hizmeti, her biri farklı bir müşteri tarafından yönetilen şifreleme anahtarıyla şifrelenmiş ve farklı anahtar kasalarında depolanan birden çok şifrelenmiş nesneye sahip olabilir.

  • Bir sistem veya kullanıcı tarafından yönetilen kimlik üzerinden bağlanarak yönetilen anahtarınızı alabilmeniz için aynı kiracıyı kullanın. Bu davranış, her iki hizmetin de aynı kiracıyı paylaşmasını gerektirir. Kiracı oluşturma hakkında daha fazla bilgi için bkz . Yeni kiracı ayarlama.

  • Temizleme korumasını ve geçici silmeyi etkinleştirin. Müşteri tarafından yönetilen anahtarlarla şifrelemenin doğası gereği, Azure Key Vault anahtarınız silinirse kimse verilerinizi alamaz. Key Vault anahtar silmelerinin yanlışlıkla neden olduğu veri kaybını önlemek için, anahtar kasasında geçici silme ve temizleme koruması etkinleştirilmelidir. Geçici silme varsayılan olarak etkindir, bu nedenle yalnızca bilerek devre dışı bırakırsanız sorunlarla karşılaşırsınız. Temizleme koruması varsayılan olarak etkin değildir, ancak Azure AI Search'te müşteri tarafından yönetilen anahtar şifrelemesi için gereklidir.

  • Anahtar kullanımını izleyebilebilmeniz için anahtar kasasında günlüğe kaydetmeyi etkinleştirin.

  • Anahtarlar için otomatik döndürmeyi etkinleştirin veya anahtar kasası anahtarlarının , uygulama gizli dizilerinin ve kaydın rutin rotasyonu sırasında katı yordamları izleyin. Eskileri silmeden önce her zaman tüm şifrelenmiş içeriği yeni gizli dizileri ve anahtarları kullanacak şekilde güncelleştirin. Bu adımı kaçırırsanız içeriğinizin şifresi çözülemez.

1. Adım: Key Vault'ta anahtar oluşturma

Azure Key Vault'ta kullanmak istediğiniz bir anahtarınız varsa anahtar oluşturmayı atlayın, ancak anahtar tanımlayıcısını toplayın. Şifrelenmiş bir nesne oluştururken bu bilgilere ihtiyacınız vardır.

Anahtarı eklemeden önce kendinize Key Vault Şifreleme Yetkilisi rolünü atadığınızdan emin olun.

Azure AI Search şifrelemesi 2048, 3072 ve 4096 boyutlarında RSA anahtarlarını destekler. Desteklenen anahtar türleri hakkında daha fazla bilgi için bkz . Anahtarlar hakkında.

  1. Azure portalında oturum açın ve anahtar kasasına genel bakış sayfanızı açın.

  2. Soldaki Nesne>Anahtarları'nı ve ardından Oluştur/İçeri Aktar'ı seçin.

  3. Anahtar oluştur bölmesindeki Seçenekler listesinde Oluştur'u seçerek yeni bir anahtar oluşturun.

  4. Anahtarınız için bir Ad girin ve diğer anahtar özellikleri için varsayılan değerleri kabul edin.

  5. İsteğe bağlı olarak, otomatik döndürmeyi etkinleştirmek için bir anahtar döndürme ilkesi ayarlayın.

  6. Dağıtımı başlatmak için Oluştur'u seçin.

  7. Anahtarı seçin, geçerli sürümü seçin ve ardından anahtar tanımlayıcısını not edin. Anahtar değeri Uri'sini, anahtar adını ve anahtar sürümünü oluşturur. Azure AI Search'te şifrelenmiş dizin tanımlamak için tanımlayıcıya ihtiyacınız vardır.

    Yeni anahtar kasası anahtarı oluşturma

2. Adım: Güvenlik sorumlusu oluşturma

Çalışma zamanında şifreleme anahtarına Azure AI Search erişimini ayarlamak için çeşitli seçenekleriniz vardır. En basit yaklaşım, arama hizmetinizin yönetilen kimliğini kullanarak anahtarı almaktır. Sistem veya kullanıcı tarafından yönetilen kimlik kullanabilirsiniz. Bunu yapmak, uygulama kaydı ve uygulama gizli dizileri adımlarını atlamanıza olanak tanır. Alternatif olarak, bir Microsoft Entra uygulaması oluşturup kaydedebilir ve arama hizmetinin isteklerde uygulama kimliğini sağlamasını sağlayabilirsiniz.

Yönetilen kimlik kullanmanızı öneririz. Yönetilen kimlik, arama hizmetinizin kimlik bilgilerini (ApplicationID veya ApplicationSecret) kodda depolamadan Azure Key Vault'ta kimlik doğrulaması gerçekleştirmesini sağlar. Bu tür yönetilen kimliğin yaşam döngüsü, yalnızca bir sistem tarafından atanan yönetilen kimliğe sahip olabilecek arama hizmetinizin yaşam döngüsüne bağlıdır. Yönetilen kimliklerin nasıl çalıştığı hakkında daha fazla bilgi için bkz . Azure kaynakları için yönetilen kimlikler nelerdir?

Arama hizmetiniz için sistem tarafından atanan yönetilen kimliği etkinleştirin.

Sistem tarafından atanan yönetilen kimliği açma ekran görüntüsü.

3. Adım: İzinleri verme

Azure Key Vault, rol tabanlı erişim denetimlerini kullanarak yetkilendirmeyi destekler. Anahtar kasası erişim ilkeleri üzerinde bu yaklaşımı öneririz. Daha fazla bilgi için bkz . Azure rollerini kullanarak Key Vault anahtarlarına, sertifikalarına ve gizli dizilerine erişim sağlama.

Bu adımda, arama hizmetinize Key Vault Şifreleme Hizmeti Şifreleme Kullanıcı rolünü atayın. Yerel olarak test ediyorsanız, bu rolü kendinize de atayın.

  1. Azure portalında oturum açın ve anahtar kasanızı bulun.

  2. Erişim denetimi (IAM) seçeneğini belirleyin ve Rol ataması ekle'yi seçin.

  3. Key Vault Şifreleme Hizmeti Şifreleme Kullanıcısı'na ve ardından İleri'ye tıklayın.

  4. Yönetilen kimlikler'i seçin, üyeleri seçin ve ardından arama hizmetinizin yönetilen kimliğini seçin.

  5. Gözden geçir + Ata'yı seçin.

Rol atamasının çalışır duruma gelmesi için birkaç dakika bekleyin.

4. Adım: İçeriği şifreleme

Bir nesne oluşturduğunuzda şifreleme anahtarları eklenir. Dizine, eş anlamlı eşlemine, dizin oluşturucuya, veri kaynağına veya beceri kümesine müşteri tarafından yönetilen bir anahtar eklemek için, şifrelemeyi etkinleştirmiş bir nesne oluşturmak için Arama REST API'sini veya Azure SDK'sını kullanın. Azure SDK kullanarak şifreleme eklemek için bu makaledeki Python örneğine bakın.

  1. encryptionKey özelliğini belirtmek için oluşturma API'lerini çağırın:

  2. encryptionKey yapısını nesne tanımına ekleyin. Bu özellik, ad ve açıklamayla aynı düzeyde birinci düzey bir özelliktir. Aynı kasayı, anahtarı ve sürümü kullanıyorsanız, her nesne tanımına aynı encryptionKey yapısını yapıştırabilirsiniz.

    İlk örnekte, yönetilen kimlik kullanarak bağlanan bir arama hizmeti için encryptionKey gösterilmektedir:

    {
      "encryptionKey": {
        "keyVaultUri": "<YOUR-KEY-VAULT-URI>",
        "keyVaultKeyName": "<YOUR-ENCRYPTION-KEY-NAME>",
        "keyVaultKeyVersion": "<YOUR-ENCRYPTION-KEY-VERSION>"
      }
    }
    

    İkinci örnek, bir uygulamayı Microsoft Entra Kimliği'ne kaydettiyseniz gerekli olan accessCredentials'ı içerir:

    {
      "encryptionKey": {
        "keyVaultUri": "<YOUR-KEY-VAULT-URI>",
        "keyVaultKeyName": "<YOUR-ENCRYPTION-KEY-NAME>",
        "keyVaultKeyVersion": "<YOUR-ENCRYPTION-KEY-VERSION>",
        "accessCredentials": {
          "applicationId": "<YOUR-APPLICATION-ID>",
          "applicationSecret": "<YOUR-APPLICATION-SECRET>"
        }
      }
    }
    
  3. Nesne üzerinde bir GET vererek şifreleme anahtarının mevcut olduğunu doğrulayın.

  4. Şifrelenmiş bir dizini sorgulama gibi bir görev gerçekleştirerek nesnenin çalıştığını doğrulayın.

Şifrelenmiş nesneyi arama hizmetinde oluşturduktan sonra, türündeki diğer herhangi bir nesne gibi kullanabilirsiniz. Şifreleme, kullanıcı ve geliştirici için saydamdır.

Bu anahtar kasası ayrıntılarının hiçbiri gizli dizi olarak kabul edilmez ve Azure portalındaki ilgili Azure Key Vault sayfasına göz atılarak kolayca alınabilir.

Önemli

Azure AI Search'teki şifrelenmiş içerik, belirli bir Azure Key Vault anahtarını belirli bir sürümle kullanacak şekilde yapılandırılır. Anahtarı veya sürümü değiştirirseniz, öncekini silmeden önce nesnenin kullanılacak şekilde güncelleştirilmiş olması gerekir. Bunun başarısız olması, nesneyi kullanılamaz hale getirir. Anahtar kaybolursa içeriğin şifresini çözemezsiniz.

5. Adım: Şifrelemeyi test edin

Şifrelemenin çalıştığını doğrulamak için şifreleme anahtarını iptal edin, dizini sorgulayın (kullanılamaz olmalıdır) ve ardından şifreleme anahtarını yeniden devreye alın.

Bu görev için Azure portalını kullanın.

  1. Azure Key Vault sayfasında Nesne Anahtarları'nı> seçin.

  2. Yeni oluşturduğunuz anahtarı ve ardından Sil'i seçin.

  3. Azure AI Arama sayfasında Arama yönetimi>Dizinleri'ni seçin.

  4. Dizininizi seçin ve sorgu çalıştırmak için Arama Gezgini'ni kullanın. Bir hata almanız gerekir.

  5. Azure Key Vault Nesne>Anahtarları sayfasına dönün.

  6. Silinen anahtarları yönet'i seçin.

  7. Anahtarınızı ve ardından Kurtar'ı seçin.

  8. Azure AI Search'te dizininize dönün ve sorguyu yeniden çalıştırın. Arama sonuçlarını görmeniz gerekir. Hemen sonuç görmüyorsanız, bir dakika bekleyin ve yeniden deneyin.

CMK uyumluluğunu zorunlu kılmak için bir ilke ayarlama

Azure ilkeleri, kuruluş standartlarını zorunlu kılmaya ve uygun ölçekte uyumluluğu değerlendirmeye yardımcı olur. Azure AI Search,hizmet genelinde CMK zorlaması için isteğe bağlı bir yerleşik ilkeye sahiptir.

Bu bölümde, arama hizmetiniz için bir CMK standardı tanımlayan ilkeyi ayarlarsınız. Ardından, bu ilkeyi zorunlu kılmak için arama hizmetinizi ayarlarsınız.

  1. Web tarayıcınızda yerleşik ilkeye gidin. Ata'yı seçin

    Yerleşik CMK ilkesi atama işleminin ekran görüntüsü.

  2. İlke kapsamını ayarlayın. Parametreler bölümünde Yalnızca parametreleri göster... seçeneğinin işaretini kaldırın ve Efekt'i Reddet olarak ayarlayın.

    İsteğin değerlendirmesi sırasında, reddetme ilkesi tanımıyla eşleşen bir istek uyumsuz olarak işaretlenir. Hizmetinizin standardının CMK şifrelemesi olduğunu varsayarsak, "reddetme" CMK şifrelemesi belirtmeyen isteklerin uyumsuz olduğu anlamına gelir.

    Yerleşik CMK ilke etkisini reddedecek şekilde değiştirmenin ekran görüntüsü.

  3. İlkeyi oluşturmayı tamamlayın.

  4. HIZMET düzeyinde CMK ilkesi zorlamasını etkinleştirmek için Hizmetler - Güncelleştirme API'sini çağırın.

PATCH https://management.azure.com/subscriptions/<your-subscription-Id>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Search/searchServices/<your-search-service-name>?api-version=2023-11-01

{
    "properties": {
        "encryptionWithCmk": {
            "enforcement": "Enabled"
        }
    }
}

Şifreleme anahtarlarını döndürme veya güncelleştirme

Azure Key Vault'un otomatik döndürme özelliklerini kullanmanızı öneririz, ancak anahtarları el ile de döndürebilirsiniz.

Bir anahtarı veya onun sürümünü değiştirdiğinizde, eski değerleri silmeden önce anahtarı kullanan herhangi bir nesnenin yeni değerleri kullanacak şekilde güncelleştirilmiş olması gerekir. Aksi takdirde, nesnenin şifresi çözülemediğinden kullanılamaz duruma gelir.

  1. Dizin veya eş anlamlı eşlem tarafından kullanılan anahtarı belirleyin.

  2. Anahtar kasasında yeni bir anahtar oluşturun, ancak özgün anahtarı kullanılabilir durumda bırakın.

  3. Yeni değerleri kullanmak için bir dizin veya eş anlamlı eşlem üzerindeki encryptionKey özelliklerini güncelleştirin. Yalnızca başlangıçta bu özellik ile oluşturulan nesneler farklı bir değer kullanacak şekilde güncelleştirilebilir.

  4. Anahtar kasasında önceki anahtarı devre dışı bırakın veya silin. Yeni anahtarın kullanıldığını doğrulamak için anahtar erişimini izleyin.

Performans nedeniyle, arama hizmeti anahtarı birkaç saate kadar önbelleğe alır. Anahtarı yeni bir anahtar sağlamadan devre dışı bırakır veya silerseniz, önbellek süresi dolana kadar sorgular geçici olarak çalışmaya devam eder. Ancak, arama hizmeti artık içeriğin şifresini çözemedikten sonra şu iletiyi alırsınız: "Erişim yasak. Kullanılan sorgu anahtarı iptal edilmiş olabilir; lütfen yeniden deneyin."

Şifrelenmiş içerikle çalışma

Müşteri tarafından yönetilen anahtar şifrelemesi ile, fazladan şifreleme/şifre çözme çalışması nedeniyle hem dizin oluşturma hem de sorgular için gecikme yaşayabilirsiniz. Azure AI Search şifreleme etkinliğini günlüğe kaydetmez, ancak anahtar kasası günlüğü aracılığıyla anahtar erişimini izleyebilirsiniz.

Anahtar kasası yapılandırmasının bir parçası olarak günlüğe kaydetmeyi etkinleştirmenizi öneririz.

  1. Log Analytics çalışma alanı oluşturun.

  2. Anahtar kasasına veri saklama için çalışma alanını kullanan bir tanılama ayarı ekleyin.

  3. Kategori için denetim veya allLogs'ı seçin, tanılama ayarına bir ad verin ve kaydedin.

Şifreleme anahtarı yapılandırmasının Python örneği

Bu bölümde, nesne tanımındaki bir encryptionKey öğesinin Python gösterimi gösterilir. Aynı tanım dizinler, veri kaynakları, beceri kümeleri, dizin oluşturucular ve eş anlamlı eşlemeler için de geçerlidir. Bu örneği arama hizmetinizde ve anahtar kasanızda denemek için azure-search-python-samples adresinden not defterini indirin.

Bazı paketleri yükleyin.

! pip install python-dotenv
! pip install azure-core
! pip install azure-search-documents==11.5.1
! pip install azure-identity

Şifreleme anahtarı olan bir dizin oluşturun.

from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    SimpleField,
    SearchFieldDataType,
    SearchableField,
    SearchIndex,
    SearchResourceEncryptionKey
)
from azure.identity import DefaultAzureCredential

endpoint="<PUT YOUR AZURE SEARCH SERVICE ENDPOINT HERE>"
credential = DefaultAzureCredential()

index_name = "test-cmk-index"
index_client = SearchIndexClient(endpoint=endpoint, credential=credential)  
fields = [
        SimpleField(name="Id", type=SearchFieldDataType.String, key=True),
        SearchableField(name="Description", type=SearchFieldDataType.String)
    ]

scoring_profiles = []
suggester = []
encryption_key = SearchResourceEncryptionKey(
    key_name="<PUT YOUR KEY VAULT NAME HERE>",
    key_version="<PUT YOUR ALPHANUMERIC KEY VERSION HERE>",
    vault_uri="<PUT YOUR KEY VAULT ENDPOINT HERE>"
)

index = SearchIndex(name=index_name, fields=fields, encryption_key=encryption_key)
result = index_client.create_or_update_index(index)
print(f' {result.name} created')

Şifreleme anahtarı yapılandırmasının mevcut olduğunu doğrulamak için dizin tanımını alın.

index_name = "test-cmk-index-qs"
index_client = SearchIndexClient(endpoint=AZURE_SEARCH_SERVICE, credential=credential)  

result = index_client.get_index(index_name)  
print(f"{result}")  

Dizini birkaç belgeyle yükleyin. Tüm alan içeriği hassas olarak kabul edilir ve müşteri tarafından yönetilen anahtarınız kullanılarak diskte şifrelenir.

from azure.search.documents import SearchClient

# Create a documents payload
documents = [
    {
    "@search.action": "upload",
    "Id": "1",
    "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities."
    },
    {
    "@search.action": "upload",
    "Id": "2",
    "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts."
    },
    {
    "@search.action": "upload",
    "Id": "3",
    "Description": "The hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services."
    },
    {
    "@search.action": "upload",
    "Id": "4",
    "Description": "The hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace."
    }
]

search_client = SearchClient(endpoint=AZURE_SEARCH_SERVICE, index_name=index_name, credential=credential)
try:
    result = search_client.upload_documents(documents=documents)
    print("Upload of new document succeeded: {}".format(result[0].succeeded))
except Exception as ex:
    print (ex.message)

    index_client = SearchClient(endpoint=AZURE_SEARCH_SERVICE, credential=credential)

Dizinin çalışır durumda olduğunu onaylamak için bir sorgu çalıştırın.

from azure.search.documents import SearchClient

query = "historic"  

search_client = SearchClient(endpoint=AZURE_SEARCH_SERVICE, credential=credential, index_name=index_name)
  
results = search_client.search(  
    query_type='simple',
    search_text=query, 
    select=["Id", "Description"],
    include_total_count=True
    )
  
for result in results:  
    print(f"Score: {result['@search.score']}")
    print(f"Id: {result['Id']}")
    print(f"Description: {result['Description']}")

Sorgudan elde edilen çıkış, aşağıdaki örneğe benzer sonuçlar üretmelidir.

Score: 0.6130029
Id: 4
Description: The hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 1800 palace.
Score: 0.26286605
Id: 1
Description: The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.

Şifrelenmiş içeriğin şifresi veri yenileme veya sorgulardan önce çözülmüş olduğundan, şifrelemeye dair görsel kanıt görmezsiniz. Şifrelemenin çalıştığını doğrulamak için kaynak günlüklerini denetleyin.

Sonraki adımlar

Azure güvenlik mimarisini bilmiyorsanız, Azure Güvenliği belgelerini ve özellikle şu makaleyi gözden geçirin: