TLS kullanarak Azure Machine Learning aracılığıyla web hizmetinin güvenliğini sağlama
ŞUNUN 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şimi şifreleyerek bir istemci ile web hizmeti arasındaki iletişimin güvenliğini sağlar. Ş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ü 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 sertifikaları kullanı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, istemcinin bağlandığını sunucunun orijinalliğini doğrulamasını da 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:
Etki alanı adı alın.
Dijital sertifika alın.
TLS etkinleştirilmiş olarak web hizmetini dağıtın veya güncelleştirin.
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 sertifikayı 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ükleyebilecek ve kullanabileceksiniz.
30 Eylül 2025'e kadar , veya v2 uzantısına geçmenizi ml
ö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. Bu araçları, tam etki alanı adını (FQDN) (www.contoso.com gibi) web hizmetinizi barındıran IP adresiyle eşlemek için 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 damgalanan 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 aks kümesi oluştururken veya eklerken TLS sonlandırmayı 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ırma 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'te 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 nedir?.
Azure Machine Learning çalışma alanında aks kümesi oluşturduğunuzda veya eklediğinizde, AksCompute.provisioning_configuration() ve AksCompute.attach_configuration() yapılandırma nesneleriyle TLS sonlandırmayı 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, mevcut 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 sertifika kullandığınızda ssl_cert_pem_file, ssl_key_pem_file ve ssl_cname parametrelerini kullanırsınız. Geçiş tümceciği korumasına sahip 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'a 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 sertifika ile 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üme için 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:
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>/score
alın. Bu örnekte IP adresi 104.214.29.152'dir.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.
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ümlemesi için kayıt şirketine ve etki alanı adı için yapılandırılan "yaşam süresine" (TTL) bağlı olarak birkaç dakika veya saat gecikme olabilir.
Azure Machine Learning ile DNS çözümlemesi hakkında daha fazla bilgi için bkz . Çalışma alanınızı özel 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'e dağıtılan modeller için sertifikanızı güncelleştirmek ve yenilemek için aşağıdaki bölümlerdeki bilgileri kullanın:
Microsoft tarafından oluşturulan bir sertifikayı güncelleştirme
Sertifika ilk olarak 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ınrenew=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.com
kullanarak bir DNS adı oluşturmak için kullanılır. Mevcut adı (başlangıçta oluşturulan 6 basamak dahil) korumak için özgünleaf_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:
Sertifikayı yenilemek için sertifika yetkilisi tarafından sağlanan belgeleri kullanın. Bu işlem yeni sertifika dosyaları oluşturur.
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'e dağıtılan bir modelin TLS'sini 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: