Azure Machine Learning과 다른 서비스 간 인증 설정

적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)

Azure Machine Learning은 여러 Azure 서비스로 구성됩니다. 인증이 Azure Machine Learning과 사용하는 서비스 간에 수행될 수 있는 여러 가지 방법이 있습니다.

  • Azure Machine Learning 작업 영역은 관리 ID를 사용하여 다른 서비스와 통신합니다. 기본적으로 이는 시스템이 할당한 관리 ID입니다. 또한 사용자가 할당한 관리 ID를 대신 사용할 수 있습니다.
  • Azure Machine Learning은 ACR(Azure Container Registry)을 사용하여 모델을 학습시키고 배포하는 데 사용되는 Docker 이미지를 저장합니다. Azure Machine Learning에서 ACR을 자동으로 만들 수 있도록 허용하면 관리자 계정이 사용하도록 설정됩니다.
  • Azure Machine Learning 컴퓨팅 클러스터는 관리 ID를 사용하여 Azure Key Vault에서 데이터 저장소에 대한 연결 정보를 검색하고 ACR에서 Docker 이미지를 끌어옵니다. 또한 컴퓨팅 클러스터의 관리 ID를 대신 사용하는 데이터 저장소에 대한 ID 기반 액세스를 구성할 수 있습니다.
  • 데이터 스토리지 서비스 및 구성에 따라 데이터 액세스는 여러 경로를 따라 수행할 수 있습니다. 예를 들어 데이터 저장소에 대한 인증에서 계정 키, 토큰, 보안 주체, 관리 ID 또는 사용자 ID를 사용할 수 있습니다.
  • 관리형 온라인 엔드포인트는 유추를 수행할 때 관리 ID를 사용하여 Azure 리소스에 액세스할 수 있습니다. 자세한 내용은 온라인 엔드포인트에서 Azure 리소스에 액세스를 참조하세요.

필수 조건

이 문서의 단계를 수행하기 전에 다음과 같은 필수 구성 요소가 있는지 확인합니다.

  • Azure Machine Learning 작업 영역 리소스가 없으면 빠른 시작: 작업 영역 리소스 만들기 문서의 단계에서 리소스를 만듭니다.

  • Azure CLI 및 ml 확장 또는 Azure Machine Learning Python SDK v2:

    • Azure CLI 및 확장을 설치하려면 CLI(v2) 설치, 설정 및 사용을 참조하세요.

      Important

      이 문서의 CLI 예제에서는 Bash(또는 호환) 셸을 사용한다고 가정합니다. 예를 들어 Linux 시스템 또는 Linux용 Windows 하위 시스템에서 이러한 예제를 사용합니다.

    • Python SDK v2를 설치하려면 다음 명령을 사용합니다.

      pip install azure-ai-ml azure-identity
      

      기존 SDK 설치를 최신 버전으로 업데이트하려면 다음 명령을 사용합니다.

      pip install --upgrade azure-ai-ml azure-identity
      

      자세한 내용은 Azure Machine Learning용 Python SDK v2 설치를 참조하세요.

  • 역할을 할당하려면 Azure 구독에 대한 로그인에 관리 ID 운영자 역할 또는 필요한 작업을 부여하는 다른 역할(예: 소유자)이 있어야 합니다.

  • 관리 ID를 만들고 사용하는 방법에 대해 잘 알고 있어야 합니다.

Azure Container Registry 및 ID 유형

다음 표에는 인증 방법과 Azure Container Registry의공용 네트워크 액세스 구성에 따라 Azure Container Registry에 인증할 때 지원 매트릭스가 나열되어 있습니다.

인증 방법 공용 네트워크 액세스
사용 안 함
Azure Container Registry
공용 네트워크 액세스 사용
관리 사용자
Workspace 시스템 할당 관리 ID
Workspace 사용자 할당 관리 ID
ID에 ACRPull 역할이 할당됨

사용자 할당 관리 ID

작업 영역

사용자가 할당한 관리 ID는 Azure Portal에서 Azure Machine Learning 작업 영역을 만들 때 추가할 수 있습니다. 작업 영역을 만드는 동안 다음 단계를 사용합니다.

  1. 기본 사항 페이지에서 작업 영역에서 사용할 Azure Storage 계정, Azure Container Registry 및 Azure Key Vault를 선택합니다.
  2. ID 페이지에서 사용자 할당 ID를 선택한 다음, 사용할 관리 ID를 선택합니다.

Azure Machine Learning 작업 영역에서 작업 영역 관련 리소스에 있는 데이터에 액세스하려면 사용자가 할당한 관리 ID에 다음 Azure RBAC 역할 할당이 필요합니다.

리소스 Permission
Azure Machine Learning 작업 영역 참가자
Azure Storage 기여자(컨트롤 플레인) + Storage Blob 데이터 기여자(데이터 평면, 선택 사항, Azure Machine Learning 스튜디오 데이터 미리 보기를 사용하도록 설정)
Azure Key Vault(RBAC 권한 모델을 사용하는 경우) 기여자(컨트롤 플레인) + Key Vault 관리자(데이터 평면)
Azure Key Vault(액세스 정책 권한 모델을 사용하는 경우) 기여자 + 제거 작업 외에 모든 액세스 정책 권한
Azure Container Registry 참가자
Azure Application Insights 참가자

사용자가 할당한 관리 ID에 역할 할당을 자동으로 만들려면 이 ARM 템플릿을 사용하면 됩니다.

암호화를 위한 사용자 관리 키를 사용하는 작업 영역의 경우 사용자가 할당한 관리 ID를 전달하여 저장소에서 Key Vault로 인증할 수 있습니다. user-assigned-identity-for-cmk-encryption(CLI) 또는 user_assigned_identity_for_cmk_encryption(SDK) 매개 변수를 사용하여 관리 ID를 전달합니다. 이 관리 ID는 작업 영역 기본 사용자가 할당한 관리 ID와 동일하거나 다를 수 있습니다.

여러 사용자 할당 ID로 작업 영역을 만들려면 다음 방법 중 하나를 사용합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

workspace_creation_with_multiple_UAIs.yml의 콘텐츠는 다음과 같습니다.

location: <region name>
identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
storage_account: <storage acccount resource ID>
key_vault: <key vault resource ID>
image_build_compute: <compute(virtual machine) resource ID>
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

작업 영역에 대한 사용자 할당 ID를 업데이트하려면 새 ID 추가 또는 기존 ID 삭제를 포함하여 다음 방법 중 하나를 사용합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

workspace_update_with_multiple_UAIs.yml의 콘텐츠는 다음과 같습니다.

identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

새 UAI를 추가하려면 기존 UAI 외에 user_signed_identities 섹션에서 새 UAI ID를 할당할 수 있습니다. 기존 UAI ID를 모두 전달해야 합니다.
하나 이상의 기존 UAI를 삭제하려면 보존해야 하는 UAI ID를 user_signed_identities 섹션에 입력하면 나머지 UAI ID는 삭제됩니다.
SAI에서 UAI|SAI로 ID 유형을 업데이트하려면 형식을 "user_assigned"에서 "system_assigned, user_assigned"로 변경할 수 있습니다.

컴퓨팅 클러스터

참고 항목

Azure Machine Learning 컴퓨팅 클러스터는 하나의 시스템 할당 ID 또는 여러 사용자 할당 ID(둘 다를 동시에 지원하지 않음)만 지원합니다.

기본 관리 ID는 시스템 할당 관리 ID 또는 첫 번째 사용자 할당 관리 ID입니다.

두 가지 ID의 애플리케이션을 실행 중입니다.

  1. 시스템은 ID를 사용하여 사용자의 스토리지 탑재, 컨테이너 레지스트리 및 데이터 저장소를 설정합니다.

    • 이 경우 시스템은 기본 관리 ID를 사용합니다.
  2. ID를 적용하여 제출된 작업에 대한 코드 내에서 리소스에 액세스합니다.

    • 이 경우 자격 증명을 검색하는 데 사용할 관리 ID에 해당하는 client_id를 제공합니다.
    • 또는 DEFAULT_IDENTITY_CLIENT_ID 환경 변수를 통해 사용자 할당 ID의 클라이언트 ID를 가져옵니다.

    예를 들어 기본 관리 ID를 사용하여 데이터 저장소에 대한 토큰을 검색하려면 다음을 수행합니다.

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

관리 ID를 사용하여 컴퓨팅 클러스터를 구성하려면 다음 방법 중 하나를 사용합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az ml compute create -f create-cluster.yml

create-cluster.yml의 콘텐츠는 다음과 같습니다.

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: user_assigned
  user_assigned_identities: 
    - resource_id: "identity_resource_id"

비교를 위해 다음 예제는 시스템이 할당한 관리 ID를 사용하는 클러스터를 만드는 YAML 파일에서 가져온 것입니다.

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: system_assigned

기존 컴퓨팅 클러스터가 있는 경우 사용자 관리 ID와 시스템 관리 ID 간에 변경할 수 있습니다. 다음 예제에서는 구성을 변경하는 방법을 보여 줍니다.

사용자 할당 관리 ID

export MSI_NAME=my-cluster-identity
export COMPUTE_NAME=mycluster-msi

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Creating MSI $MSI_NAME"
# Get the resource id of the identity
IDENTITY_ID=$(az identity show --name "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]" || true)
if [[ -z $IDENTITY_ID ]]; then
    IDENTITY_ID=$(az identity create -n "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]")
fi
echo "MSI created: $MSI_NAME"
sleep 15 # Let the previous command finish: https://github.com/Azure/azure-cli/issues/8530


echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"

시스템 할당 관리 ID

export COMPUTE_NAME=mycluster-sa

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute
fi

az ml compute update --name "$COMPUTE_NAME" --identity-type system_assigned

데이터 저장소

ID 기반 데이터 액세스를 사용하는 데이터 저장소를 만들 때 Azure 계정(Microsoft Entra 토큰)을 사용하여 스토리지 서비스에 액세스할 권한이 있는지 확인합니다. ID 기반 데이터 액세스 시나리오에서는 인증 자격 증명이 저장되지 않습니다. 스토리지 계정 정보만 데이터 저장소에 저장됩니다.

반면 자격 증명 기반 인증을 사용하는 데이터 저장소는 스토리지 계정 키 또는 SAS 토큰과 같은 연결 정보를 작업 영역과 연결된 키 자격 증명 모음에 캐시합니다. 이 방법에는 충분한 권한이 있는 다른 작업 영역 사용자가 해당 자격 증명을 검색할 수 있다는 제한 사항이 있으며, 이는 일부 조직의 보안 문제일 수 있습니다.

데이터 액세스를 인증하는 방법에 대한 자세한 내용은 데이터 관리 문서를 참조하세요. 데이터에 대한 ID 기반 액세스를 구성하는 방법에 대한 자세한 내용은 데이터 저장소 만들기를 참조하세요.

Azure Machine Learning에서 ID 기반 데이터 액세스를 적용할 수 있는 두 가지 시나리오가 있습니다. 이러한 시나리오는 기밀 데이터로 작업하고 더 세분화된 데이터 액세스 관리가 필요한 경우 ID 기반 액세스에 적합합니다.

  • 스토리지 서비스에 액세스
  • 기계 학습 모델 학습

ID 기반 액세스를 사용하면 RBAC(역할 기반 액세스 제어)를 통해 데이터에 액세스할 수 있는 ID(예: 사용자 또는 컴퓨팅 리소스)를 제한할 수 있습니다.

스토리지 서비스에 액세스

Azure Machine Learning 데이터 저장소를 사용하여 ID 기반 데이터 액세스를 통해 스토리지 서비스에 연결할 수 있습니다.

ID 기반 데이터 액세스를 사용하는 경우, Azure Machine Learning은 데이터 저장소에 자격 증명을 유지하는 대신 데이터 액세스 인증을 위해 Microsoft Entra 토큰을 입력하라는 메시지를 표시합니다. 이 방식을 사용하면 스토리지 수준에서 데이터 액세스를 관리할 수 있고 자격 증명을 기밀로 유지할 수 있습니다.

로컬 컴퓨터 또는 컴퓨팅 인스턴스에서 Jupyter Notebook을 통해 대화형으로 데이터를 사용하는 경우에도 동일한 동작이 적용됩니다.

참고 항목

자격 증명 기반 인증을 통해 저장되는 자격 증명에는 구독 ID, SAS(공유 액세스 서명) 토큰, 스토리지 액세스 키 및 서비스 주체 정보(예: 클라이언트 ID 및 테넌트 ID)가 포함됩니다.

Azure의 스토리지 서비스에 안전하게 연결할 수 있도록, Azure Machine Learning을 사용하려면 해당하는 데이터 스토리지에 액세스할 수 있는 권한이 있어야 합니다.

Warning

스토리지 계정에 대한 테넌트 간 액세스는 지원되지 않습니다. 시나리오에 테넌트 간 액세스가 필요한 경우 amldatasupport@microsoft.com에 있는 Azure Machine Learning 데이터 지원 팀 별칭에 연락하여 사용자 지정 코드 솔루션에 대한 지원을 받으세요.

ID 기반 데이터 액세스는 다음 스토리지 서비스에 대한 연결 지원합니다.

  • Azure Blob Storage
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2

이러한 스토리지 서비스에 액세스하려면 스토리지 계정에 대한 스토리지 Blob 데이터 판독기 이상의 액세스 권한이 있어야 합니다. 스토리지 계정 소유자만 Azure Portal을 통해 액세스 수준을 변경할 수 있습니다.

관리 ID를 사용하여 컴퓨팅에서 학습 작업에 대한 데이터에 액세스

특정 기계 학습 시나리오에는 프라이빗 데이터 작업이 포함됩니다. 이러한 경우 데이터 과학자는 Microsoft Entra 사용자로 데이터에 직접 액세스하지 못할 수 있습니다. 이 시나리오에서는 컴퓨팅의 관리 ID를 데이터 액세스 인증에 사용할 수 있습니다. 이 시나리오에서 데이터는 학습 작업을 실행하는 컴퓨팅 인스턴스 또는 기계 학습 컴퓨팅 클러스터에서만 액세스할 수 있습니다. 이 방법을 사용하면 관리자는 스토리지에 대한 Storage Blob 데이터 읽기 권한자 권한을 컴퓨팅 인스턴스 또는 컴퓨팅 클러스터 관리 ID에 부여합니다. 개별 데이터 과학자에게 액세스 권한을 부여할 필요가 없습니다.

컴퓨팅 관리 ID를 사용하여 인증을 사용하도록 설정하려면 다음을 수행합니다.

  • 관리 ID를 사용하여 컴퓨팅을 만듭니다. 컴퓨팅 클러스터 섹션을 참조하세요. 컴퓨팅 인스턴스의 경우 관리 ID 할당 섹션을 참조하세요.

    Important

    컴퓨팅 인스턴스가 유휴 종료로 구성된 경우 관리 ID에 Azure Machine Learning 작업 영역에 대한 기여자 액세스 권한이 없으면 비활성으로 인해 컴퓨팅 인스턴스가 종료되지 않습니다. 권한 할당에 대한 자세한 내용은 Azure Machine Learning 작업 영역 액세스 관리를 참조하세요.

  • 스토리지 계정에 대한 Storage Blob 데이터 읽기 권한자 이상의 역할을 컴퓨팅 관리 ID에 부여합니다.

  • ID 기반 인증이 사용하도록 설정된 데이터 저장소를 만듭니다. 데이터 저장소 만들기를 참조하세요.

참고 항목

컴퓨팅 인스턴스 또는 클러스터에 대해 생성된 시스템 관리 ID의 이름은 Microsoft Entra ID에서 /workspace-name/computes/compute-name 형식입니다.

ID 기반 인증이 사용하도록 설정되면 학습 작업 내의 데이터에 액세스할 때 기본적으로 컴퓨팅 관리 ID가 사용됩니다. 필요에 따라 다음 섹션에서 설명하는 단계를 사용하여 사용자 ID로 인증할 수 있습니다.

스토리지에 대한 Azure RBAC 구성을 사용하는 방법에 대한 자세한 내용은 역할 기반 액세스 제어를 참조하세요.

사용자 ID를 사용하여 컴퓨팅 클러스터에서 학습 작업에 대한 데이터에 액세스

적용 대상:Azure CLI ml 확장 v2(현재)

Azure Machine Learning 컴퓨팅 클러스터에서 학습할 때 사용자 Microsoft Entra 토큰을 사용하여 스토리지에 인증할 수 있습니다.

이 인증 모드를 사용하면 다음을 수행할 수 있습니다.

  • 서로 다른 작업 영역 사용자가 스토리지 계정 내의 다른 스토리지 계정 또는 폴더에 액세스할 수 있는 세분화된 권한을 설정합니다.
  • 데이터 과학자가 스토리지 시스템에 대한 기존 권한을 다시 사용할 수 있도록 합니다.
  • 스토리지 로그에 데이터에 액세스하는 데 사용된 ID가 표시되므로 스토리지 액세스를 감사합니다.

Important

이 기능에는 다음과 같은 제한 사항이 있습니다.

  • 기능은 Azure Machine Learning CLI 및 Python SDK V2를 통해 제출된 실험에 대해 지원되지만 ML 스튜디오를 통해서는 지원되지 않습니다.
  • 사용자 ID 및 컴퓨팅 관리 ID는 동일한 작업 내에서 인증에 사용할 수 없습니다.
  • 파이프라인 작업의 경우 루트 파이프라인 수준이 아닌 컴퓨팅에서 실행되는 개별 단계 수준에서 사용자 ID를 설정하는 것이 좋습니다. (ID 설정은 루트 파이프라인 및 단계 수준 모두에서 지원되지만 둘 다 설정된 경우 단계 수준 설정이 우선합니다. 그러나 파이프라인 구성 요소가 포함된 파이프라인의 경우 실행할 개별 단계에서 ID를 설정해야 합니다. 루트 파이프라인 또는 파이프라인 구성 요소 수준에서 설정된 ID는 작동하지 않습니다. 따라서 간단히 하기 위해 개별 단계 수준에서 ID를 설정하는 것이 좋습니다.)

다음 단계에서는 CLI에서 컴퓨팅 클러스터의 학습 작업을 위해 사용자 ID를 사용하여 데이터 액세스를 설정하는 방법을 간략하게 설명합니다.

  1. 스토리지 리소스에 대한 사용자 ID 액세스 권한을 부여합니다. 예를 들어 사용하려는 특정 스토리지 계정에 StorageBlobReader 액세스 권한을 부여하거나 Azure Data Lake Gen 2 스토리지의 특정 폴더 또는 파일에 ACL 기반 권한을 부여합니다.

  2. 스토리지 계정에 대해 캐시된 자격 증명 없이 Azure Machine Learning 데이터 저장소를 만듭니다. 데이터 저장소에 스토리지 계정 키와 같은 캐시된 자격 증명이 있는 경우 해당 자격 증명은 사용자 ID 대신 사용됩니다.

  3. 다음 작업 사양에 표시된 대로 속성 ID형식: user_identity로 설정된 학습 작업을 제출합니다. 학습 작업 중에 스토리지에 대한 인증은 작업을 제출하는 사용자의 ID를 통해 수행됩니다.

    참고 항목

    ID 속성이 지정되지 않은 상태로 남아 있고 데이터 저장소에 캐시된 자격 증명이 없는 경우 컴퓨팅 관리 ID가 대체 옵션이 됩니다.

    command: |
    echo "--census-csv: ${{inputs.census_csv}}"
    python hello-census.py --census-csv ${{inputs.census_csv}}
    code: src
    inputs:
    census_csv:
        type: uri_file 
        path: azureml://datastores/mydata/paths/census.csv
    environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
    compute: azureml:cpu-cluster
    identity:
    type: user_identity
    

다음 단계에서는 Python SDK에서 컴퓨팅 클러스터의 학습 작업을 위해 사용자 ID를 사용하여 데이터 액세스를 설정하는 방법을 간략하게 설명합니다.

  1. CLI에 대해 위에서 설명한 대로 데이터 액세스 권한을 부여하고 데이터 저장소를 만듭니다.

  2. ID 매개 변수가 azure.ai.ml.UserIdentityConfiguration으로 설정된 학습 작업을 제출합니다. 이 매개 변수 설정을 사용하면 작업을 제출하는 사용자를 대신하여 작업에서 데이터에 액세스할 수 있습니다.

    from azure.ai.ml import command
    from azure.ai.ml.entities import Data, UriReference
    from azure.ai.ml import Input
    from azure.ai.ml.constants import AssetTypes
    from azure.ai.ml import UserIdentityConfiguration
    
    # Specify the data location
    my_job_inputs = {
        "input_data": Input(type=AssetTypes.URI_FILE, path="<path-to-my-data>")
    }
    
    # Define the job
    job = command(
        code="<my-local-code-location>", 
        command="python <my-script>.py --input_data ${{inputs.input_data}}",
        inputs=my_job_inputs,
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9",
        compute="<my-compute-cluster-name>",
        identity= UserIdentityConfiguration() 
    )
    # submit the command
    returned_job = ml_client.jobs.create_or_update(job)
    

Important

사용자 ID가 사용하도록 설정된 인증을 사용하여 작업을 제출하는 동안 코드 스냅샷은 체크섬 유효성 검사로 인한 변조로부터 보호됩니다. 기존 파이프라인 구성 요소가 있고 사용자 ID가 사용하도록 설정된 인증과 함께 사용하려는 경우 다시 업로드해야 할 수 있습니다. 그렇지 않으면 체크섬 유효성 검사 중에 작업에 실패할 수 있습니다.

가상 네트워크 사용

기본적으로 Azure Machine Learning은 방화벽 뒤에 있거나 가상 네트워크에 있는 스토리지 계정과 통신할 수 없습니다.

특정 가상 네트워크 내에서만 액세스가 가능하도록 스토리지 계정을 구성할 수 있습니다. 이러한 구성에는 데이터가 네트워크 외부로 유출되지 않도록 하기 위한 추가 단계가 필요합니다. 이 동작은 자격 증명 기반 데이터 액세스에서도 동일합니다. 자세한 내용은 데이터 반출을 방지하는 방법을 참조하세요.

스토리지 계정에 가상 네트워크 설정이 있는 경우 필요한 ID 유형 및 사용 권한 액세스가 결정됩니다. 예를 들어 데이터 미리 보기 및 데이터 프로필의 경우 가상 네트워크 설정은 데이터 액세스를 인증하는 데 사용되는 ID 유형을 결정합니다.

  • 특정 IP 및 서브넷만 스토리지에 액세스할 수 있는 시나리오에서 Azure Machine Learning 작업 영역은 MSI를 사용하여 데이터 미리 보기 및 프로필을 수행합니다.

  • 스토리지가 ADLS Gen 2 또는 Blob이고 가상 네트워크 설정이 있는 경우 고객은 만드는 동안 정의된 데이터 저장소 설정에 따라 사용자 ID 또는 작업 영역 MSI를 사용할 수 있습니다.

  • 가상 네트워크 설정이 “신뢰할 수 있는 서비스 목록의 Azure 서비스가 이 스토리지 계정에 액세스하도록 허용”인 경우 작업 영역 MSI가 사용됩니다.

시나리오: 관리 사용자를 사용하지 않는 Azure Container Registry

관리 사용자를 ACR에 사용하지 않도록 설정하면 Azure Machine Learning에서 관리 ID를 사용하여 Docker 이미지를 빌드하고 끌어옵니다. 관리 사용자가 사용하지 않도록 설정된 상태에서 ACR을 사용하도록 Azure Machine Learning을 구성하는 경우 다음 두 가지 워크플로가 있습니다.

  • Azure Machine Learning에서 ACR 인스턴스를 만든 다음, 나중에 관리 사용자를 사용하지 않도록 설정할 수 있도록 허용합니다.
  • 관리 사용자가 이미 사용하지 않도록 설정된 기존 ACR을 가져옵니다.

자동으로 만든 ACR 인스턴스가 있는 Azure Machine Learning

  1. 새 Azure Machine Learning 작업 영역을 만듭니다.

  2. Azure Container Registry가 필요한 작업을 수행합니다. 예를 들어 자습서: 첫 번째 모델 학습이 있습니다.

  3. 클러스터에서 만든 ACR의 이름을 가져옵니다.

    적용 대상:Azure CLI ml 확장 v2(현재)

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    이 명령은 다음 텍스트와 유사한 값을 반환합니다. ACR 인스턴스 이름인 텍스트의 마지막 부분만 필요합니다.

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. ACR을 업데이트하여 관리 사용자를 사용하지 않도록 설정합니다.

    az acr update --name <ACR instance name> --admin-enabled false
    

사용자 고유의 ACR 가져오기

ACR 관리 사용자가 구독 정책에 의해 허용되지 않는 경우 먼저 관리 사용자 없이 ACR를 만든 다음, 작업 영역에 연결해야 합니다. 또한 관리 사용자를 사용하지 않도록 설정된 기존 ACR이 있는 경우에는 이를 작업 영역에 연결할 수 있습니다.

--admin-enabled 인수를 설정하지 않고 Azure CLI에서 ACR을 만들거나 관리 사용자를 사용하도록 설정하지 않고 Azure Portal에서 ACR을 만듭니다. 그런 다음, Azure Machine Learning 작업 영역을 만들 때 ACR의 Azure 리소스 ID를 지정합니다. 다음 예제에서는 기존 ACR을 사용하는 새 Azure Machine Learning 작업 영역을 만드는 방법을 보여 줍니다.

--container-registry 매개 변수에 대한 값을 가져오려면 az acr show 명령을 사용하여 ACR에 대한 정보를 표시합니다. 이 id 필드에는 ACR의 리소스 ID가 포함되어 있습니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az ml workspace create -w <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

관리 ID를 사용하여 컴퓨팅을 만들어 학습용 Docker 이미지에 액세스

작업 영역 ACR에 액세스하려면 시스템 할당 관리 ID가 사용하도록 설정된 기계 학습 컴퓨팅 클러스터를 만듭니다. 컴퓨팅을 만들 때 Azure Portal 또는 스튜디오에서, 또는 아래를 사용하여 Azure CLI에서 ID를 사용하도록 설정할 수 있습니다. 자세한 내용은 컴퓨팅 클러스터에서 관리 ID 사용을 참조하세요.

적용 대상:Azure CLI ml 확장 v2(현재)

az ml compute create --name cpu-cluster --type <cluster name>  --identity-type systemassigned

관리 ID는 작업 영역 ACR에서 자동으로 ACRPull 역할이 부여되어 학습용 Docker 이미지를 끌어올 수 있습니다.

참고 항목

컴퓨팅을 먼저 만든 경우 작업 영역 ACR을 만들기 전에 ACRPull 역할을 수동으로 할당해야 합니다.

유추를 위한 Docker 이미지 사용

앞서 설명한 대로 관리 사용자 없이 ACR을 구성하면 AKS(Azure Kubernetes Service)에서 관리 키 없이 유추를 위해 Docker 이미지에 액세스할 수 있습니다. AKS를 만들거나 작업 영역에 연결하면 클러스터의 서비스 주체에 작업 영역 ACR에 대한 ACRPull 액세스 권한이 자동으로 할당됩니다.

참고 항목

사용자 고유의 AKS 클러스터를 가져오는 경우 클러스터에서 관리 ID 대신 서비스 주체를 사용하도록 설정해야 합니다.

시나리오: 프라이빗 Azure Container Registry 사용

기본적으로 Azure Machine Learning은 Microsoft에서 관리하는 공용 리포지토리에서 제공되는 Docker 기본 이미지를 사용합니다. 그런 다음, 해당 이미지에 대한 학습 또는 유추 환경을 빌드합니다. 자세한 내용은 ML 환경이란?을 참조하세요.

회사 내부의 사용자 지정 기본 이미지를 사용하려면 관리 ID를 사용하여 프라이빗 ACR에 액세스할 수 있습니다. 두 가지 사용 사례가 있습니다.

  • 기본 이미지를 학습에 그대로 사용합니다.
  • 사용자 지정 이미지를 기반으로 Azure Machine Learning 관리 이미지를 빌드합니다.

학습용 Docker 기본 이미지를 기계 학습 컴퓨팅 클러스터로 그대로 끌어옵니다.

이전에 설명된 대로 시스템 할당 관리 ID가 사용하도록 설정된 기계 학습 컴퓨팅 클러스터를 만듭니다. 그런 다음, 관리 ID의 보안 주체 ID를 확인합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az ml compute show --name <cluster name> -w <workspace> -g <resource group>

필요에 따라 사용자가 할당한 관리 ID를 할당하도록 컴퓨팅 클러스터를 업데이트할 수 있습니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>

컴퓨팅 클러스터가 기본 이미지를 끌어올 수 있도록 하려면 프라이빗 ACR에서 관리되는 서비스 ID ACRPull 역할을 부여합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

az role assignment create --assignee <principal ID> \
--role acrpull \
--scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"

마지막으로 환경을 만들고, 환경 YAML 파일에서 기본 이미지 위치를 지정합니다.

적용 대상:Azure CLI ml 확장 v2(현재)

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
az ml environment create --file <yaml file>

이제 학습 작업에서 환경을 사용할 수 있습니다.

학습 또는 유추를 위해 프라이빗 ACR의 기본 이미지에 Azure Machine Learning 관리되는 환경 빌드

적용 대상:Azure CLI ml 확장 v2(현재)

이 시나리오에서 Azure Machine Learning Service는 프라이빗 ACR에서 제공하는 기본 이미지 위에 학습 또는 유추 환경을 빌드합니다. 이미지 빌드 작업은 ACR 작업을 사용하는 작업 영역 ACR에서 발생하기 때문에 액세스를 허용하려면 추가 단계를 수행해야 합니다.

  1. 사용자가 할당한 관리 ID를 만들고 프라이빗 ACR에 ID ACRPull 액세스 권한을 부여합니다.

  2. 이전 단계의 사용자가 할당한 관리 ID에 대한 관리 ID 운영자 역할을 작업 영역 관리 ID에 부여합니다. 이 역할을 통해 작업 영역에서 관리되는 환경을 빌드하기 위한 ACR 작업에 사용자가 할당한 관리 ID를 할당할 수 있습니다.

    1. 작업 영역 시스템 할당 관리 ID의 보안 주체 ID를 가져옵니다.

      적용 대상:Azure CLI ml 확장 v2(현재)

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. 관리 ID 운영자 역할을 부여합니다.

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
      

      사용자 할당 관리 ID 리소스 ID는 /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name> 형식으로 사용자 할당 ID의 Azure 리소스 ID입니다.

  3. az ml connection 명령을 사용하여 작업 영역 연결에서 사용자가 할당한 관리 ID의 외부 ACR 및 클라이언트 ID를 지정합니다. 이 명령은 연결에 대한 정보를 제공하는 YAML 파일을 허용합니다. 다음 예제에서는 관리 ID를 지정하기 위한 형식을 보여 줍니다. client_idresource_id 값을 관리 ID에 대한 값으로 바꿉니다.

    적용 대상:Azure CLI ml 확장 v2(현재)

    name: test_ws_conn_cr_managed
    type: container_registry
    target: https://test-feed.com
    credentials:
      type: managed_identity
      client_id: client_id
      resource_id: resource_id
    

    다음 명령에서는 YAML 파일을 사용하여 작업 영역과의 연결을 만드는 방법을 보여 줍니다. <yaml file>, <workspace name><resource group>을 구성 값으로 바꿉니다.

    az ml connection create --file <yml file> --resource-group <resource group> --workspace-name <workspace>
    
  4. 구성이 완료되면 학습 또는 유추를 위한 환경을 빌드할 때 프라이빗 ACR의 기본 이미지를 사용할 수 있습니다. 다음 코드 조각에서는 환경 정의에서 기본 이미지 ACR 및 이미지 이름을 지정하는 방법을 보여 줍니다.

    적용 대상: Python SDK azure-ai-ml v2(현재)

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: private-acr-example
    image: <acr url>/pytorch/pytorch:latest
    description: Environment created from private ACR.
    

다음 단계