Aracılığıyla paylaş


TLS/SSL ile güvenli bir çevrimiçi uç nokta yapılandırma

Bu makalede, Azure Machine Learning aracılığıyla oluşturulan bir Kubernetes çevrimiçi uç noktasının güvenliğini sağlama adımları gösterilmektedir.

Çevrimiçi uç noktalara erişimi kısıtlamak ve istemcilerin gönderdiği verilerin güvenliğini sağlamaya yardımcı olmak için HTTPS kullanırsınız. HTTPS, Aktarım Katmanı Güvenliği (TLS) kullanarak istemci ile çevrimiçi uç nokta arasındaki iletişimi şifreler. TLS bazen TLS'nin öncülü olan Güvenli Yuva Katmanı (SSL) olarak da adlandırılır.

İpucu

  • Kubernetes çevrimiçi uç noktaları özellikle Azure Kubernetes Service (AKS) ve Azure Arc özellikli Kubernetes için TLS sürüm 1.2'yi destekler.
  • Azure Machine Learning Kubernetes çıkarımı için TLS sürüm 1.3 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 public_key_infrastructure Wikipedia konusuna bakın.

Uyarı

Çevrimiçi uç noktalarınız 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.

Aşağıda genel olarak çevrimiçi uç noktanın güvenliğini sağlama işlemi yer alır:

  1. Etki alanı adı alın.

  2. Dijital sertifika alın.

  3. Azure Machine Learning uzantısında TLS/SSL'yi yapılandırın.

  4. DNS'nizi çevrimiçi uç noktaya işaret edecek şekilde tam etki alanı adıyla (FQDN) güncelleştirin.

Önemli

Bir etki alanı adı veya TLS/SSL sertifikası almak için kendi sertifikanızı satın almanız ve sonra bunları Azure Machine Learning uzantısında yapılandırmanız gerekir. Daha ayrıntılı bilgi için bu makalenin aşağıdaki bölümlerine bakın.

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. Bir FQDN'yi (örneğin www.contoso.com), çevrimiçi uç noktanızı barındıran IP adresiyle eşlemek için bu araçları kullanırsınız.

Çevrimiçi uç noktalarınızın IP adresini alma hakkında daha fazla bilgi için bu makalenin FQDN ile DNS'nizi güncelleştirme bölümüne bakın.

TLS/SSL sertifikası alma

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

  • Tam sertifika zincirini içeren ve PEM kodlanmış bir sertifika
  • PEM ile kodlanmış bir anahtar

Not

Parola korumasına sahip bir PEM dosyasındaki SSL anahtarı desteklenmez.

Sertifika istediğinizde, çevrimiçi uç nokta 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, çevrimiçi uç noktanın kimliğini doğrulamak için karşılaştırılır. Bu adresler eşleşmiyorsa istemci bir hata iletisi alır.

FQDN ile IP bant oluşturma yapılandırması hakkında daha fazla bilgi için bu makalenin FQDN ile DNS'nizi güncelleştirme bölümüne bakın.

İpucu

Sertifika yetkilisi sertifikayı ve anahtarı PEM ile kodlanmış dosyalar olarak sağlayamıyorsa, biçimi değiştirmek için OpenSSL gibi bir araç 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.

Azure Machine Learning uzantısında TLS/SSL'yi yapılandırma

Güvenli bağlantılar için çıkarım HTTPS'sini kullanacak şekilde ayarlanmış bir Kubernetes çevrimiçi uç noktası için, Azure Machine Learning uzantısını bir Kubernetes kümesine dağıtırken dağıtım yapılandırma ayarlarıyla TLS sonlandırmayı etkinleştirebilirsiniz.

Azure Machine Learning uzantısının dağıtım zamanında yapılandırma allowInsecureConnections ayarı varsayılan olarakdır False . Uzantı dağıtımının sslSecret başarılı olmasını sağlamak için yapılandırma ayarını veya ve sslCertPemFile yapılandırma korumalı ayarların bir bileşimini sslKeyPemFile belirtmeniz gerekir. Aksi takdirde, HTTP'yi destekleyecek şekilde ayarlayabilir allowInsecureConnections=True ve TLS sonlandırmasını devre dışı bırakabilirsiniz.

Not

HTTPS çevrimiçi uç noktasını allowInsecureConnections desteklemek için olarak ayarlanmalıdır False.

Bir HTTPS uç noktasını gerçek zamanlı çıkarım için etkinleştirmek için PEM ile kodlanmış bir TLS/SSL sertifikası ve anahtarı sağlamanız gerekir. Azure Machine Learning uzantısının dağıtım zamanında sertifikayı ve anahtarı belirtmenin iki yolu vardır:

  • sslSecret Yapılandırma ayarını belirtin.
  • ve slKeyPemFile yapılandırma korumalı ayarların sslCertPemFile bir bileşimini belirtin.

sslSecret yapılandırma

En iyi yöntem, sertifikayı ve anahtarı ad alanında bir Kubernetes gizli dizisine kaydetmektir azureml .

'yi yapılandırmak sslSecretiçin, cert.pem (PEM kodlu TLS/SSL sertifikası) ve key.pem (PEM ile kodlanmış TLS/SSL anahtarı) depolamak için kubernetes kümenizdeki azureml bir Kubernetes gizli dizisini ad alanına kaydetmeniz gerekir.

Aşağıdaki kod, TLS/SSL gizli dizisinin örnek YAML tanımıdır:

apiVersion: v1
data:
  cert.pem: <PEM-encoded SSL certificate> 
  key.pem: <PEM-encoded SSL key>
kind: Secret
metadata:
  name: <secret name>
  namespace: azureml
type: Opaque

Gizli diziyi kümenize kaydettikten sonra, bu Kubernetes gizli dizisinin adı olarak belirtmek sslSecret için aşağıdaki Azure CLI komutunu kullanabilirsiniz. (Bu komut yalnızca AKS kullanıyorsanız çalışır.)

   az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config inferenceRouterServiceType=LoadBalancer sslSecret=<Kubernetes secret name> sslCname=<ssl cname> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster

sslCertPemFile ve sslKeyPemFile yapılandırma

Yapılandırma ayarını PEM ile kodlanmış TLS/SSL sertifika dosyasının yolu, yapılandırma ayarını ise sslKeyPemFile PEM ile kodlanmış TLS/SSL anahtar dosyasının yolu olarak belirtebilirsinizsslCertPemFile.

Aşağıdaki örnek, satın aldığınız TLS/SSL sertifikasını kullanan Azure Machine Learning uzantısına PEM dosyaları belirtmek için Azure CLI'nin nasıl kullanılacağını gösterir. Örnekte AKS kullandığınız varsayılır.

   az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableInference=True inferenceRouterServiceType=LoadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster

Not

  • Parola koruması olan PEM dosyası desteklenmez.
  • sslKeyPemFIle Hem hem de sslCertPemFIle yapılandırma korumalı parametreleri kullanın. Ve'yi aynı anda yapılandırmazsslSecret/sslCertPemFilesslKeyPemFile.

DNS'nizi FQDN ile güncelleştirme

Özel sertifikayla Kubernetes çevrimiçi uç noktasında model dağıtımı yapmak için DNS kaydınızı çevrimiçi uç noktanın IP adresine işaret edecek şekilde güncelleştirmeniz gerekir. Azure Machine Learning çıkarım yönlendirici hizmeti (azureml-fe) bu IP adresini sağlar. hakkında azureml-fedaha fazla bilgi için bkz . Yönetilen Azure Machine Learning çıkarım yönlendiricisi.

Özel etki alanı adınızın DNS kaydını güncelleştirmek için:

  1. Genellikle biçiminde http://104.214.29.152:80/api/v1/service/<service-name>/scoreolan puanlama URI'sinden çevrimiçi uç noktanın IP adresini alın. Bu örnekte IP adresi 104.214.29.152'dir.

    Özel etki alanı adınızı yapılandırdıktan sonra, puanlama URI'sindeki IP adresinin yerini alır. Çıkarım yönlendiricisi hizmeti olarak kullanılan LoadBalancer Kubernetes kümeleri için, azureml-fe bulut sağlayıcısının yük dengeleyicisi ve TLS/SSL sonlandırması aracılığıyla harici olarak kullanıma sunulur. Kubernetes çevrimiçi uç noktasının IP adresi, kümede dağıtılan hizmetin dış IP adresidir azureml-fe .

    AKS kullanıyorsanız IP adresini Azure portalından alabilirsiniz. AKS kaynak sayfanıza gidin, Hizmet ve girişler'e gidin ve azuerml ad alanı altında azureml-fe hizmetini bulun. Ardından IP adresini Dış IP sütununda bulabilirsiniz.

    Azure portalından Azure Arc özellikli Kubernetes kümesine yeni bir uzantı ekleme işleminin ekran görüntüsü.

    Ayrıca, çıkıştaki parametreden LoadBalancer Ingress IP adresini almak için kümenizde Kubernetes komutunu kubectl describe svc azureml-fe -n azureml çalıştırabilirsiniz.

    Not

    Çıkarım yönlendiricisi hizmeti olarak veya clusterIP kullanan nodePort Kubernetes kümeleri için kendi yük dengeleme çözümünüzü ve için azureml-feTLS/SSL sonlandırmayı ayarlamanız gerekir. Küme kapsamında hizmetin IP adresini azureml-fe de almanız gerekir.

  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 çevrimiçi uç noktanın IP adresine işaret etmesi gerekir.

    İpucu

    Özel DNS adınız veya sertifikanız için DNS'yi güncelleştirmek Microsoft'un sorumluluğunda değildir. Etki alanı adı kayıt şirketinizle güncelleştirmeniz gerekir.

  3. DNS kaydı güncelleştirmesinin ardından komutunu kullanarak DNS çözümlemesini nslookup custom-domain-name doğrulayabilirsiniz. DNS kaydı doğru güncelleştirildiyse, özel etki alanı adı çevrimiçi uç noktanı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 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 dns sunucusuyla kullanma.

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

TLS/SSL sertifikalarının süresi doldu ve yenilenmesi gerekiyor. Bu genellikle her yıl gerçekleşir. Kubernetes'e (AKS ve Azure Arc özellikli Kubernetes) dağıtılan modeller için sertifikanızı güncelleştirmek ve yenilemek için aşağıdaki adımlarda yer alan bilgileri kullanın:

  1. Sertifikayı yenilemek için sertifika yetkilisinden belgeleri kullanın. Bu işlem yeni sertifika dosyaları oluşturur.

  2. Azure Machine Learning uzantınızı güncelleştirin ve komutunu kullanarak az k8s-extension update yeni sertifika dosyalarını belirtin.

    Daha önce TLS/SSL yapılandırmak için kubernetes gizli dizisi kullandıysanız, önce Kubernetes gizli dizisini Kubernetes kümenizdeki yeni cert.pem ve key.pem yapılandırmasıyla güncelleştirmeniz gerekir. Ardından uzantı güncelleştirme komutunu çalıştırarak sertifikayı güncelleştirin:

       az k8s-extension update --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config inferenceRouterServiceType=LoadBalancer sslSecret=<Kubernetes secret name> sslCname=<ssl cname> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    

    PEM dosyalarını daha önce uzantı dağıtım komutunda doğrudan yapılandırdıysanız, uzantı güncelleştirme komutunu çalıştırmanız ve yeni PEM dosyasının yolunu belirtmeniz gerekir:

       az k8s-extension update --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    

TLS'yi devre dışı bırakma

Kubernetes'e dağıtılan bir model için TLS'yi devre dışı bırakmak için:

  1. Azure Machine Learning uzantısını allowInsercureconnection olarak ayarlanmış olarak Truegüncelleştirin.

  2. sslCname veya sslPem yapılandırma ayarlarıyla sslSecret birlikte yapılandırma ayarını kaldırın.

  3. Kubernetes kümenizde aşağıdaki Azure CLI komutunu çalıştırın ve bir güncelleştirme gerçekleştirin. Bu komut AKS kullandığınızı varsayar.

       az k8s-extension update --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableInference=True inferenceRouterServiceType=LoadBalancer allowInsercureconnection=True --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
    

Uyarı

Varsayılan olarak, Azure Machine Learning uzantısı dağıtımı HTTPS desteği için yapılandırma ayarlarını bekler. HTTP desteğini yalnızca geliştirme veya test amacıyla öneririz. Yapılandırma allowInsecureConnections=True ayarı HTTP desteği sağlar.

Sonraki adımlar

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