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:
Ö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ınsslCertPemFile
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 sslSecret
iç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 desslCertPemFIle
yapılandırma korumalı parametreleri kullanın. Ve'yi aynı anda yapılandırmazsslSecret
/sslCertPemFile
sslKeyPemFile
.
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-fe
daha 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:
Genellikle biçiminde
http://104.214.29.152:80/api/v1/service/<service-name>/score
olan 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 adresidirazureml-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.
Ayrıca, çıkıştaki parametreden
LoadBalancer Ingress
IP adresini almak için kümenizde Kubernetes komutunukubectl describe svc azureml-fe -n azureml
çalıştırabilirsiniz.Not
Çıkarım yönlendiricisi hizmeti olarak veya
clusterIP
kullanannodePort
Kubernetes kümeleri için kendi yük dengeleme çözümünüzü ve içinazureml-fe
TLS/SSL sonlandırmayı ayarlamanız gerekir. Küme kapsamında hizmetin IP adresiniazureml-fe
de almanız gerekir.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.
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:
Sertifikayı yenilemek için sertifika yetkilisinden belgeleri kullanın. Bu işlem yeni sertifika dosyaları oluşturur.
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:
Azure Machine Learning uzantısını
allowInsercureconnection
olarak ayarlanmış olarakTrue
güncelleştirin.sslCname
veyasslPem
yapılandırma ayarlarıylasslSecret
birlikte yapılandırma ayarını kaldırın.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: