Aracılığıyla paylaş


Sanal ağlarla Azure Machine Learning çıkarım ortamının güvenliğini sağlama (v1)

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

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

Bu makalede, Azure Machine Learning'de bir sanal ağ ile çıkarım ortamlarının güvenliğini sağlamayı öğreneceksiniz. Bu makale, modeli web hizmeti olarak dağıtmaya yönelik SDK/CLI v1 dağıtım iş akışına özgüdür.

İpucu

Bu makale, Azure Machine Learning iş akışının güvenliğini sağlama serisinin bir parçasıdır. Bu serideki diğer makalelere bakın:

Güvenli çalışma alanı oluşturma öğreticisi için bkz . Öğretici: Güvenli çalışma alanı oluşturma veya Öğretici: Şablon kullanarak güvenli çalışma alanı oluşturma.

Bu makalede, bir sanal ağda aşağıdaki çıkarım kaynaklarının güvenliğini sağlamayı öğreneceksiniz:

  • Varsayılan Azure Kubernetes Service (AKS) kümesi
  • Özel AKS kümesi
  • Özel bağlantı içeren AKS kümesi

Önkoşullar

  • Kaynakları bir sanal ağa veya alt ağa dağıtmak için kullanıcı hesabınızın Azure rol tabanlı erişim denetiminde (Azure RBAC) aşağıdaki eylemlere yönelik izinleri olmalıdır:

    • Sanal ağ kaynağında "Microsoft.Network/*/read" yazın. Azure Resource Manager (ARM) şablonu dağıtımları için bu izin gerekli değildir.
    • Sanal ağ kaynağında "Microsoft.Network/virtualNetworks/join/action".
    • Alt ağ kaynağında "Microsoft.Network/virtualNetworks/subnets/join/action".

    Ağ ile Azure RBAC hakkında daha fazla bilgi için bkz . Ağ yerleşik rolleri

Ö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.

Sınırlamalar

Azure Container Instances

Azure Machine Learning çalışma alanınız özel uç noktayla yapılandırıldığında, sanal ağda Azure Container Instances'a dağıtım desteklenmez. Bunun yerine Ağ yalıtımına sahip yönetilen çevrimiçi uç nokta kullanmayı düşünün.

Azure Kubernetes Service

  • AKS kümeniz bir sanal ağın arkasındaysa, çalışma alanınızın ve ilişkili kaynaklarının (depolama, anahtar kasası, Azure Container Registry) AKS kümesinin sanal ağıyla aynı sanal ağda özel uç noktalara veya hizmet uç noktalarına sahip olması gerekir. Lütfen sanal ağınıza bu özel uç noktaları veya hizmet uç noktalarını eklemek için güvenli bir çalışma alanı oluşturma öğreticisini okuyun.
  • Çalışma alanınızın özel uç noktası varsa, Azure Kubernetes Service kümesi çalışma alanıyla aynı Azure bölgesinde olmalıdır.
  • Azure Machine Learning'de özel AKS kümesiyle genel tam etki alanı adı (FQDN) kullanılması desteklenmez.

Azure Kubernetes Service

Önemli

Sanal ağda AKS kümesi kullanmak için önce Azure Kubernetes Service'te (AKS) gelişmiş ağı yapılandırma bölümünde yer alan önkoşulları izleyin.

Sanal ağdaki AKS'yi çalışma alanınıza eklemek için aşağıdaki adımları kullanın:

  1. Azure Machine Learning stüdyosu oturum açın ve aboneliğinizi ve çalışma alanınızı seçin.

  2. Sol tarafta İşlem'i, merkezden Çıkarım kümeleri'ni ve ardından + Yeni'yi seçin. Son olarak AksCompute'ı seçin.

    Screenshot of create inference cluster dialog.

  3. AksCompute Oluştur iletişim kutusunda Yeni oluştur'u, Konum'u ve küme için kullanılacak VM boyutunu seçin. Son olarak İleri'yi seçin.

    Screenshot of VM settings.

  4. Ayarlar Yapılandır bölümünden bir İşlem adı girin, Küme Amacı, Düğüm sayısı'nı seçin ve ardından gelişmiş'i seçerek ağ ayarlarını görüntüleyin. Sanal ağı yapılandır alanında aşağıdaki değerleri ayarlayın:

    • Kullanılacak Sanal ağı ayarlayın.

      İpucu

      Çalışma alanınız sanal ağa bağlanmak için özel bir uç nokta kullanıyorsa Sanal seçim alanı gri olur.

    • Kümeyi oluşturmak için Alt Ağı ayarlayın.

    • Kubernetes Service adres aralığı alanına Kubernetes hizmet adres aralığını girin. Bu adres aralığı, küme için kullanılabilen IP adreslerini tanımlamak için Sınıfsız Etki Alanları Arası Yönlendirme (CIDR) gösterimi IP aralığını kullanır. Herhangi bir alt ağ IP aralığıyla (örneğin, 10.0.0.0/16) çakışmamalıdır.

    • Kubernetes DNS hizmeti IP adresi alanına Kubernetes DNS hizmeti IP adresini girin. Bu IP adresi Kubernetes DNS hizmetine atanır. Kubernetes hizmet adres aralığında olmalıdır (örneğin, 10.0.0.10).

    • Docker köprüsü adresi alanına Docker köprüsü adresini girin. Bu IP adresi Docker Köprüsü'ne atanır. Hiçbir alt ağ IP aralığında veya Kubernetes hizmet adres aralığında olmamalıdır (örneğin, 172.18.0.1/16).

    Screenshot of configure network settings.

  5. Modeli AKS'ye web hizmeti olarak dağıttığınızda, çıkarım isteklerini işlemek için bir puanlama uç noktası oluşturulur. Sanal ağı denetleyan ağ güvenlik grubunun (NSG), sanal ağın dışından çağırmak istiyorsanız puanlama uç noktasının IP adresi için etkinleştirilmiş bir gelen güvenlik kuralı olduğundan emin olun.

    Puanlama uç noktasının IP adresini bulmak için dağıtılan hizmetin puanlama URI'sine bakın. Puanlama URI'sini görüntüleme hakkında bilgi için bkz . Web hizmeti olarak dağıtılan bir modeli kullanma.

    Önemli

    NSG için varsayılan giden kurallarını koruyun. Daha fazla bilgi için Bkz. Güvenlik grupları'ndaki varsayılan güvenlik kuralları.

    Screenshot that shows an inbound security rule.

    Önemli

    Puanlama uç noktasının görüntüsünde gösterilen IP adresi, dağıtımlarınız için farklı olacaktır. Aynı IP, bir AKS kümesine yapılan tüm dağıtımlar tarafından paylaşılırken, her AKS kümesinin farklı bir IP adresi olacaktır.

Azure Machine Learning SDK'sını kullanarak sanal ağa Azure Kubernetes Service ekleyebilirsiniz. Sanal ağda zaten bir AKS kümeniz varsa, AKS'ye dağıtma bölümünde açıklandığı gibi bu kümeyi çalışma alanına ekleyin. Aşağıdaki kod adlı mynetworksanal ağın default alt ağında yeni bir AKS örneği oluşturur:

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

from azureml.core.compute import ComputeTarget, AksCompute

# Create the compute configuration and set virtual network information
config = AksCompute.provisioning_configuration(location="eastus2")
config.vnet_resourcegroup_name = "mygroup"
config.vnet_name = "mynetwork"
config.subnet_name = "default"
config.service_cidr = "10.0.0.0/16"
config.dns_service_ip = "10.0.0.10"
config.docker_bridge_cidr = "172.17.0.1/16"

# Create the compute target
aks_target = ComputeTarget.create(workspace=ws,
                                  name="myaks",
                                  provisioning_configuration=config)

Oluşturma işlemi tamamlandığında, bir sanal ağın arkasındaki AKS kümesinde çıkarım veya model puanlaması çalıştırabilirsiniz. Daha fazla bilgi için bkz . AKS'ye dağıtma.

Kubernetes ile Rol Tabanlı Erişim Denetimi kullanma hakkında daha fazla bilgi için bkz . Kubernetes yetkilendirmesi için Azure RBAC kullanma.

Ağ katkıda bulunanı rolü

Önemli

Daha önce oluşturduğunuz bir sanal ağı sağlayarak aks kümesi oluşturur veya eklerseniz, AKS kümeniz için hizmet sorumlusuna (SP) veya yönetilen kimliğe sanal ağı içeren kaynak grubuna Ağ Katkıda Bulunanı rolünü vermelisiniz.

Kimliği ağ katkıda bulunanı olarak eklemek için aşağıdaki adımları kullanın:

  1. AKS için hizmet sorumlusunu veya yönetilen kimlik kimliğini bulmak için aşağıdaki Azure CLI komutlarını kullanın. değerini kümenin adıyla değiştirin <aks-cluster-name> . değerini AKS kümesini içeren kaynak grubunun adıyla değiştirin<resource-group-name>:

    az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query servicePrincipalProfile.clientId
    

    Bu komut değerini msidöndürürse, yönetilen kimliğin asıl kimliğini belirlemek için aşağıdaki komutu kullanın:

    az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query identity.principalId
    
  2. Sanal ağınızı içeren kaynak grubunun kimliğini bulmak için aşağıdaki komutu kullanın. değerini, sanal ağı içeren kaynak grubunun adıyla değiştirin<resource-group-name>:

    az group show -n <resource-group-name> --query id
    
  3. Hizmet sorumlusunu veya yönetilen kimliği ağ katkıda bulunanı olarak eklemek için aşağıdaki komutu kullanın. değerini hizmet sorumlusu veya yönetilen kimlik için döndürülen kimlikle değiştirin <SP-or-managed-identity> . değerini, sanal ağı içeren kaynak grubu için döndürülen kimlikle değiştirin <resource-group-id> :

    az role assignment create --assignee <SP-or-managed-identity> --role 'Network Contributor' --scope <resource-group-id>
    

AKS ile iç yük dengeleyiciyi kullanma hakkında daha fazla bilgi için bkz . Azure Kubernetes Service ile iç yük dengeleyici kullanma.

Sanal ağ trafiğinin güvenliğini sağlama

AKS kümesinden sanal ağa gelen ve gelen trafiği yalıtmak için iki yaklaşım vardır:

  • Özel AKS kümesi: Bu yaklaşım, dağıtım/yönetim işlemleri için kümeyle iletişimin güvenliğini sağlamak için Azure Özel Bağlantı kullanır.
  • İç AKS yük dengeleyici: Bu yaklaşım, AKS'ye dağıtımlarınızın uç noktasını sanal ağ içinde özel bir IP kullanacak şekilde yapılandırıyor.

Özel AKS kümesi

Varsayılan olarak AKS kümelerinin genel IP adresleri olan bir denetim düzlemi veya API sunucusu vardır. Özel bir AKS kümesi oluşturarak AKS'yi özel denetim düzlemi kullanacak şekilde yapılandırabilirsiniz. Daha fazla bilgi için bkz. Özel Azure Kubernetes Service kümesi oluşturma.

Özel AKS kümesini oluşturduktan sonra, Azure Machine Learning ile kullanmak üzere kümeyi sanal ağa ekleyin.

İç AKS yük dengeleyici

AKS dağıtımları varsayılan olarak genel yük dengeleyici kullanır. Bu bölümde AKS'yi iç yük dengeleyici kullanacak şekilde yapılandırmayı öğreneceksiniz. Ön uç olarak yalnızca özel IP'lere izin verilen bir iç (veya özel) yük dengeleyici kullanılır. İç yük dengeleyiciler, sanal ağ içindeki trafiğin yükünü dengelemek için kullanılır

Aks iç yük dengeleyici kullanacak şekilde yapılandırılarak özel yük dengeleyici etkinleştirilir.

Özel yük dengeleyiciyi etkinleştirme

Önemli

Azure Machine Learning stüdyosu'de Azure Kubernetes Service kümesini oluştururken özel IP'yi etkinleştiremezsiniz. Makine öğrenmesi için Python SDK'sını veya Azure CLI uzantısını kullanırken iç yük dengeleyici ile bir tane oluşturabilirsiniz.

Aşağıdaki örneklerde SDK ve CLI kullanarak özel IP/iç yük dengeleyici ile yeni bir AKS kümesinin nasıl oluşturulacağı gösterilmektedir:

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

import azureml.core
from azureml.core.compute import AksCompute, ComputeTarget

# Verify that cluster does not exist already
try:
    aks_target = AksCompute(workspace=ws, name=aks_cluster_name)
    print("Found existing aks cluster")

except:
    print("Creating new aks cluster")

    # Subnet to use for AKS
    subnet_name = "default"
    # Create AKS configuration
    prov_config=AksCompute.provisioning_configuration(load_balancer_type="InternalLoadBalancer")
    # Set info for existing virtual network to create the cluster in
    prov_config.vnet_resourcegroup_name = "myvnetresourcegroup"
    prov_config.vnet_name = "myvnetname"
    prov_config.service_cidr = "10.0.0.0/16"
    prov_config.dns_service_ip = "10.0.0.10"
    prov_config.subnet_name = subnet_name
    prov_config.load_balancer_subnet = subnet_name
    prov_config.docker_bridge_cidr = "172.17.0.1/16"

    # Create compute target
    aks_target = ComputeTarget.create(workspace = ws, name = "myaks", provisioning_configuration = prov_config)
    # Wait for the operation to complete
    aks_target.wait_for_completion(show_output = True)

Var olan bir kümeyi çalışma alanınıza eklerken, yük dengeleyiciyi load_balancer_type yapılandırmak için AksCompute.attach_configuration() ve load_balancer_subnet parametrelerini kullanın.

Kümeyi ekleme hakkında bilgi için bkz. Mevcut AKS kümesini ekleme.

Sanal ağdan giden bağlantıyı sınırlama

Varsayılan giden kurallarını kullanmak istemiyorsanız ve sanal ağınızın giden erişimini sınırlamak istiyorsanız, Azure Container Registry erişimine izin vermelisiniz. Örneğin, Ağ Güvenlik Grupları'nızın (NSG) AzureContainerRegistry.RegionName hizmet etiketine erişim izni veren bir kural içerdiğinden emin olun; burada '{RegionName} bir Azure bölgesinin adıdır.

Sonraki adımlar

Bu makale, Azure Machine Learning iş akışının güvenliğini sağlama serisinin bir parçasıdır. Bu serideki diğer makalelere bakın: