Aracılığıyla paylaş


TLS kullanarak Azure Machine Learning aracılığıyla web hizmetinin güvenliğini sağlama

ŞUNLAR IÇIN GEÇERLIDIR:Python SDK azureml v1

Bu makalede, Azure Machine Learning aracılığıyla dağıtılan bir web hizmetinin güvenliğini sağlama adımları gösterilmektedir.

Web hizmetlerine erişimi kısıtlamak ve istemcilerin gönderdiği verilerin güvenliğini sağlamak için HTTPS kullanırsınız. HTTPS, ikisi arasındaki iletişimleri şifreleyerek bir istemci ile web hizmeti arasındaki iletişimin güvenliğini sağlamaya yardımcı olur. Şifreleme , Aktarım Katmanı Güvenliği (TLS) kullanır. TLS bazen TLS'nin öncülü olan Güvenli Yuva Katmanı (SSL) olarak da adlandırılır.

İpucu

Azure Machine Learning SDK'sı, güvenli iletişimle ilgili özellikler için "SSL" terimini kullanır. Bu, web hizmetinizin TLS kullanmadığı anlamına gelmez. SSL yalnızca daha yaygın olarak tanınan bir terimdir.

Özellikle, Azure Machine Learning aracılığıyla dağıtılan web hizmetleri AKS ve ACI için TLS sürüm 1.2'yi destekler. ACI dağıtımları için, eski TLS sürümünü kullanıyorsanız en son TLS sürümünü almak için yeniden dağıtmanızı öneririz.

Azure Machine Learning için TLS sürüm 1.3 - AKS Çıkarımı desteklenmez.

HEM TLS hem de SSL, şifreleme ve kimlik doğrulamasına yardımcı olan dijital sertifikalara dayanır. Dijital sertifikaların nasıl çalıştığı hakkında daha fazla bilgi için Ortak anahtar altyapısı Wikipedia konusuna bakın.

Uyarı

Web hizmetiniz için HTTPS kullanmıyorsanız, hizmete gönderilen ve hizmetten gönderilen veriler İnternet'te başkaları tarafından görülebilir.

HTTPS ayrıca istemcinin bağlandığını sunucunun orijinalliğini doğrulamasını sağlar. Bu özellik istemcileri ortadaki adam saldırılarına karşı korur.

Web hizmetinin güvenliğini sağlamaya yönelik genel işlem şöyledir:

  1. Etki alanı adı alın.

  2. Dijital sertifika alın.

  3. TLS etkinleştirilmiş olarak web hizmetini dağıtın veya güncelleştirin.

  4. DNS’nizi web hizmetine işaret edecek şekilde güncelleştirin.

Önemli

Azure Kubernetes Service'e (AKS) dağıtıyorsanız, kendi sertifikanızı satın alabilir veya Microsoft tarafından sağlanan bir sertifika kullanabilirsiniz. Microsoft'tan bir sertifika kullanıyorsanız, etki alanı adı veya TLS/SSL sertifikası almanız gerekmez. Daha fazla bilgi için bu makalenin TLS'yi etkinleştirme ve dağıtma bölümüne bakın.

Dağıtım hedefleri arasında güvenlik sağlarken küçük farklılıklar vardır.

Önemli

Bu makaledeki Azure CLI komutlarından bazıları Azure Machine Learning için uzantısını veya v1'i kullanır azure-cli-ml. v1 uzantısı desteği 30 Eylül 2025'te sona erecektir. Bu tarihe kadar v1 uzantısını yükleyip kullanabilirsiniz.

30 Eylül 2025'e mlkadar , veya v2 uzantısına geçmenizi öneririz. v2 uzantısı hakkında daha fazla bilgi için bkz. Azure ML CLI uzantısı ve Python SDK v2.

Etki alanı adı alma

Henüz bir etki alanı adınız yoksa, etki alanı adı kayıt şirketinden bir etki alanı adı satın alın. Süreç ve fiyat kayıt şirketleri arasında farklılık gösterir. Kayıt şirketi, etki alanı adını yönetmek için araçlar sağlar. Tam etki alanı adını (FQDN) (www.contoso.com gibi) web hizmetinizi barındıran IP adresiyle eşlemek için bu araçları kullanırsınız.

TLS/SSL sertifikası alma

TLS/SSL sertifikası (dijital sertifika) almanın birçok yolu vardır. En yaygın olanı bir sertifika yetkilisinden (CA) satın almaktır. Sertifikayı nereden aldığınıza bakılmaksızın aşağıdaki dosyalara ihtiyacınız vardır:

  • Bir sertifika. Sertifikanın tam sertifika zinciri içermesi ve "PEM ile kodlanmış" olması gerekir.
  • Bir anahtar. Anahtar ayrıca PEM ile kodlanmış olmalıdır.

Sertifika istediğinizde, web hizmeti için kullanmayı planladığınız adresin FQDN'sini sağlamanız gerekir (örneğin, www.contoso.com). Sertifikaya damgalanmış adres ve istemcilerin kullandığı adres, web hizmetinin kimliğini doğrulamak için karşılaştırılır. Bu adresler eşleşmiyorsa istemci bir hata iletisi alır.

İpucu

Sertifika yetkilisi sertifikayı ve anahtarı PEM ile kodlanmış dosyalar olarak sağlayamıyorsa, biçimi değiştirmek için OpenSSL gibi bir yardımcı program kullanabilirsiniz.

Uyarı

Otomatik olarak imzalanan sertifikaları yalnızca geliştirme için kullanın. Bunları üretim ortamlarında kullanmayın. Otomatik olarak imzalanan sertifikalar istemci uygulamalarınızda sorunlara neden olabilir. Daha fazla bilgi için istemci uygulamanızın kullandığı ağ kitaplıklarının belgelerine bakın.

TLS'yi etkinleştirme ve dağıtma

AKS dağıtımı için, Azure Machine Learning çalışma alanında bir AKS kümesi oluşturduğunuzda veya eklediğinizde TLS sonlandırmasını etkinleştirebilirsiniz. AKS modeli dağıtım zamanında, dağıtım yapılandırma nesnesiyle TLS sonlandırmayı devre dışı bırakabilirsiniz, aksi takdirde varsayılan olarak tüm AKS modeli dağıtımlarında AKS kümesi oluşturma veya ekleme zamanında TLS sonlandırması etkinleştirilir.

ACI dağıtımı için, dağıtım yapılandırma nesnesiyle model dağıtım zamanında TLS sonlandırmayı etkinleştirebilirsiniz.

Azure Kubernetes Service dağıtma

Not

Bu bölümdeki bilgiler, tasarımcı için güvenli bir web hizmeti dağıttığınızda da geçerlidir. Python SDK'sını kullanmayı bilmiyorsanız bkz. Python için Azure Machine Learning SDK'sı nedir?.

Azure Machine Learning çalışma alanında bir AKS kümesi oluşturduğunuzda veya eklediğinizde , AksCompute.provisioning_configuration() ve AksCompute.attach_configuration() yapılandırma nesneleriyle TLS sonlandırmasını etkinleştirebilirsiniz. Her iki yöntem de enable_ssl yöntemi olan bir yapılandırma nesnesi döndürür ve TLS'yi etkinleştirmek için enable_ssl yöntemini kullanabilirsiniz.

TLS'yi Microsoft sertifikasıyla veya CA'dan satın alınan özel bir sertifikayla etkinleştirebilirsiniz.

  • Microsoft'tan bir sertifika kullandığınızda, leaf_domain_label parametresini kullanmanız gerekir. Bu parametre, hizmetin DNS adını oluşturur. Örneğin, "contoso" değeri "contoso<altı rastgele karakterden> oluşan bir etki alanı adı oluşturur.< azureregion.cloudapp.azure.com>", burada <azureregion> hizmeti içeren bölgedir. İsteğe bağlı olarak, var olan leaf_domain_label üzerine yazmak için overwrite_existing_domain parametresini kullanabilirsiniz. Aşağıdaki örnekte, Microsoft sertifikasıyla TLS'yi etkinleştiren bir yapılandırmanın nasıl oluşturulacağı gösterilmektedir:

    from azureml.core.compute import AksCompute
    
    # Config used to create a new AKS cluster and enable TLS
    provisioning_config = AksCompute.provisioning_configuration()
    
    # Leaf domain label generates a name using the formula
    #  "<leaf-domain-label>######.<azure-region>.cloudapp.azure.com"
    #  where "######" is a random series of characters
    provisioning_config.enable_ssl(leaf_domain_label = "contoso")
    
    
    # Config used to attach an existing AKS cluster to your workspace and enable TLS
    attach_config = AksCompute.attach_configuration(resource_group = resource_group,
                                          cluster_name = cluster_name)
    
    # Leaf domain label generates a name using the formula
    #  "<leaf-domain-label>######.<azure-region>.cloudapp.azure.com"
    #  where "######" is a random series of characters
    attach_config.enable_ssl(leaf_domain_label = "contoso")
    

    Önemli

    Microsoft'tan bir sertifika kullandığınızda, kendi sertifikanızı veya etki alanı adınızı satın almanız gerekmez.

  • Satın aldığınız özel bir sertifikayı kullandığınızdassl_cert_pem_file, ssl_key_pem_file ve ssl_cname parametrelerini kullanırsınız. Geçiş tümceciği koruması olan PEM dosyası desteklenmez. Aşağıdaki örnekte satın aldığınız TLS/SSL sertifikası kullanan bir yapılandırma oluşturmak için .pem dosyalarının nasıl kullanılacağı gösterilmektedir:

    from azureml.core.compute import AksCompute
    
    # Config used to create a new AKS cluster and enable TLS
    provisioning_config = AksCompute.provisioning_configuration()
    provisioning_config.enable_ssl(ssl_cert_pem_file="cert.pem",
                                        ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")
    
    # Config used to attach an existing AKS cluster to your workspace and enable SSL
    attach_config = AksCompute.attach_configuration(resource_group = resource_group,
                                         cluster_name = cluster_name)
    attach_config.enable_ssl(ssl_cert_pem_file="cert.pem",
                                        ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")
    

enable_ssl hakkında daha fazla bilgi için bkz. AksProvisioningConfiguration.enable_ssl() ve AksAttachConfiguration.enable_ssl().

Azure Container Instances’ta dağıtma

Azure Container Instances dağıttığınızda, aşağıdaki kod parçacığında gösterildiği gibi TLS ile ilgili parametreler için değerler sağlarsınız:

from azureml.core.webservice import AciWebservice

aci_config = AciWebservice.deploy_configuration(
    ssl_enabled=True, ssl_cert_pem_file="cert.pem", ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")

Daha fazla bilgi için bkz. AciWebservice.deploy_configuration().

DNS'nizi güncelleştirme

Özel sertifikayla AKS dağıtımı veya ACI dağıtımı için DNS kaydınızı puanlama uç noktasının IP adresine işaret eden şekilde güncelleştirmeniz gerekir.

Önemli

AKS dağıtımı için Microsoft'tan bir sertifika kullandığınızda, kümenin DNS değerini el ile güncelleştirmeniz gerekmez. Değer otomatik olarak ayarlanmalıdır.

Özel etki alanı adınızın DNS kaydını güncelleştirmek için aşağıdaki adımları izleyebilirsiniz:

  1. Puanlama uç noktası IP adresini genellikle biçiminde olan puanlama uç noktası URI'sinden http://104.214.29.152:80/api/v1/service/<service-name>/scorealın. Bu örnekte, IP adresi 104.214.29.152'dir.

  2. Etki alanı adınızın DNS kaydını güncelleştirmek için etki alanı adı kayıt şirketinizdeki araçları kullanın. Kayıt, FQDN'yi (örneğin, www.contoso.com) IP adresiyle eşler. Kaydın puanlama uç noktasının IP adresine işaret etmesi gerekir.

    İpucu

    Microsoft, özel DNS adınız veya sertifikanız için DNS'yi güncelleştirmekle sorumlu değildir. Etki alanı adı kayıt şirketinizle güncelleştirmeniz gerekir.

  3. DNS kaydı güncelleştirmesinin ardından nslookup custom-domain-name komutunu kullanarak DNS çözümlemesini doğrulayabilirsiniz. DNS kaydı doğru güncelleştirildiyse, özel etki alanı adı puanlama uç noktasının IP adresini gösterir.

    İstemcilerin etki alanı adını çözümleyebilmesi için kayıt şirketine ve etki alanı adı için yapılandırılan "yaşam süresine" (TTL) bağlı olarak dakika veya saat gecikmesi olabilir.

Azure Machine Learning ile DNS çözümlemesi hakkında daha fazla bilgi için bkz. Çalışma alanınızı özel bir DNS sunucusuyla kullanma.

TLS/SSL sertifikasını güncelleştirme

TLS/SSL sertifikalarının süresi doldu ve yenilenmesi gerekiyor. Genellikle bu her yıl gerçekleşir. Azure Kubernetes Service dağıtılan modellerde sertifikanızı güncelleştirmek ve yenilemek için aşağıdaki bölümlerde yer alan bilgileri kullanın:

Microsoft tarafından oluşturulan sertifikayı güncelleştirme

Sertifika başlangıçta Microsoft tarafından oluşturulduysa (hizmeti oluşturmak için leaf_domain_label kullanırken), gerektiğinde otomatik olarak yenilenir . Sertifikayı el ile yenilemek istiyorsanız, sertifikayı güncelleştirmek için aşağıdaki örneklerden birini kullanın:

Önemli

  • Mevcut sertifika hala geçerliyse yapılandırmayı yenilemeye zorlamak için (SDK) veya --ssl-renew (CLI) kullanın renew=True . Bu işlemin etkili olması yaklaşık 5 saat sürer.
  • Hizmet başlangıçta dağıtıldığında, desenini leaf_domain_label<leaf-domain-label>######.<azure-region>.cloudapp.azure.comkullanarak bir DNS adı oluşturmak için kullanılır. Mevcut adı (özgün olarak oluşturulan 6 basamak dahil) korumak için özgün leaf_domain_label değeri kullanın. Oluşturulan 6 basamağı eklemeyin.

SDK'yi kullanma

from azureml.core.compute import AksCompute
from azureml.core.compute.aks import AksUpdateConfiguration
from azureml.core.compute.aks import SslConfiguration

# Get the existing cluster
aks_target = AksCompute(ws, clustername)

# Update the existing certificate by referencing the leaf domain label
ssl_configuration = SslConfiguration(leaf_domain_label="myaks", overwrite_existing_domain=True, renew=True)
update_config = AksUpdateConfiguration(ssl_configuration)
aks_target.update(update_config)

CLI kullanma

ŞUNLAR IÇIN GEÇERLIDIR:Azure CLI ml uzantısı v1

az ml computetarget update aks -g "myresourcegroup" -w "myresourceworkspace" -n "myaks" --ssl-leaf-domain-label "myaks" --ssl-overwrite-domain True --ssl-renew

Daha fazla bilgi için aşağıdaki başvuru belgelerine bakın:

Özel sertifikayı güncelleştirme

Sertifika başlangıçta bir sertifika yetkilisi tarafından oluşturulduysa aşağıdaki adımları kullanın:

  1. Sertifikayı yenilemek için sertifika yetkilisi tarafından sağlanan belgeleri kullanın. Bu işlem yeni sertifika dosyaları oluşturur.

  2. Hizmeti yeni sertifikayla güncelleştirmek için SDK veya CLI kullanın:

    SDK'yi kullanma

    from azureml.core.compute import AksCompute
    from azureml.core.compute.aks import AksUpdateConfiguration
    from azureml.core.compute.aks import SslConfiguration
    
    # Read the certificate file
    def get_content(file_name):
        with open(file_name, 'r') as f:
            return f.read()
    
    # Get the existing cluster
    aks_target = AksCompute(ws, clustername)
    
    # Update cluster with custom certificate
    ssl_configuration = SslConfiguration(cname="myaks", cert=get_content('cert.pem'), key=get_content('key.pem'))
    update_config = AksUpdateConfiguration(ssl_configuration)
    aks_target.update(update_config)
    

    CLI kullanma

    ŞUNLAR IÇIN GEÇERLIDIR:Azure CLI ml uzantısı v1

    az ml computetarget update aks -g "myresourcegroup" -w "myresourceworkspace" -n "myaks" --ssl-cname "myaks"--ssl-cert-file "cert.pem" --ssl-key-file "key.pem"
    

Daha fazla bilgi için aşağıdaki başvuru belgelerine bakın:

TLS'yi devre dışı bırakma

Azure Kubernetes Service dağıtılan bir modelde TLS'yi devre dışı bırakmak için ile status="Disabled"bir SslConfiguration oluşturun ve bir güncelleştirme gerçekleştirin:

from azureml.core.compute import AksCompute
from azureml.core.compute.aks import AksUpdateConfiguration
from azureml.core.compute.aks import SslConfiguration

# Get the existing cluster
aks_target = AksCompute(ws, clustername)

# Disable TLS
ssl_configuration = SslConfiguration(status="Disabled")
update_config = AksUpdateConfiguration(ssl_configuration)
aks_target.update(update_config)

Sonraki adımlar

Şunları nasıl yapacağınızı öğrenin: