Azure Machine Learning 작업 영역에 대한 액세스 관리

이 문서에서는 Azure Machine Learning 작업 영역에 대한 액세스(권한 부여)를 관리하는 방법에 대해 알아봅니다. Azure RBAC(Azure 역할 기반 액세스 제어)는 새 리소스를 만들거나 기존 리소스를 사용하는 기능과 같은 Azure 리소스에 대한 액세스를 관리하는 데 사용됩니다. Azure AD(Azure Active Directory)의 사용자에게는 리소스에 대한 액세스 권한을 부여하는 특정 역할이 할당됩니다. Azure는 기본 제공 역할과 사용자 지정 역할을 만드는 기능을 모두 제공합니다.

이 문서에서는 Azure Machine Learning을 집중적으로 다루지만 Azure ML에서 사용하는 개별 서비스는 자체 RBAC 설정을 제공합니다. 예를 들어 이 문서의 정보를 사용하여 누가 Azure Kubernetes Service의 웹 서비스로 배포된 모델에 채점 요청을 제출할 수 있는지 구성할 수 있습니다. 그러나 Azure Kubernetes Service는 자체 Azure 역할 세트를 제공합니다. Azure Machine Learning에 유용할 수 있는 서비스별 RBAC 정보는 다음 링크를 참조하세요.

경고

일부 역할을 적용하면 다른 사용자에 대해 Azure Machine Learning 스튜디오의 UI 기능이 제한될 수 있습니다. 예를 들어 사용자의 역할에 컴퓨팅 인스턴스를 만들 수 없는 경우 스튜디오에서 컴퓨팅 인스턴스를 생성하는 옵션을 사용할 수 없습니다. 이 동작은 예상된 것이며, 사용자가 액세스 거부 오류를 반환하는 작업을 시도하지 못하게 합니다.

기본 역할

Azure Machine Learning 작업 영역에는 기본적으로 사용할 수 있는 5개의 기본 제공 역할이 있습니다. 작업 영역에 사용자를 추가할 때 아래에 설명된 기본 제공 역할 중 하나를 할당할 수 있습니다.

역할 액세스 수준
AzureML 데이터 과학자 컴퓨팅 리소스를 만들거나 삭제하고 작업 영역 자체를 수정하는 것을 제외하고 Azure Machine Learning 작업 영역에서 모든 작업을 수행할 수 있습니다.
AzureML Compute 연산자 작업 영역 내에서 컴퓨팅 리소스를 만들고, 관리하고, 액세스할 수 있습니다.
판독기 작업 영역의 읽기 전용 작업입니다. 읽기 권한자는 작업 영역에서 데이터 저장소 자격 증명을 포함한 자산을 나열하고 볼 수 있습니다. 읽기 권한자는 이러한 자산을 만들거나 업데이트할 수 없습니다.
기여자 작업 영역에서 해당하는 자산을 보거나, 만들거나, 편집하거나, 삭제합니다. 예를 들어 기여자는 실험을 만들고, 컴퓨팅 클러스터를 만들거나 연결하고, 실행을 제출하고, 웹 서비스를 배포할 수 있습니다.
소유자 작업 영역에 대한 모든 액세스 권한(작업 영역에서 해당하는 자산을 보거나, 만들거나, 편집하거나, 삭제하는 기능 포함)입니다. 또한 역할 할당을 변경할 수 있습니다.

또한 Azure Machine Learning 레지스트리 에는 데이터 과학자에게 사용자 수준 사전 권한을 부여하기 위해 레지스트리 리소스에 할당할 수 있는 AzureML 레지스트리 사용자 역할이 있습니다. 레지스트리를 만들거나 삭제하는 관리자 수준 권한의 경우 기여자 또는 소유자 역할을 사용합니다.

역할 액세스 수준
AzureML 레지스트리 사용자 레지스트리를 가져와서 해당 내의 자산을 읽고, 쓰고, 삭제할 수 있습니다. 새 레지스트리 리소스를 만들거나 삭제할 수 없습니다.

역할을 결합하여 다양한 수준의 액세스 권한을 부여할 수 있습니다. 예를 들어 AzureML 데이터 과학자Azure ML Compute Operator 역할을 모두 작업 영역 사용자에게 부여하여 사용자가 셀프 서비스 방식으로 컴퓨팅을 만드는 동안 실험을 수행할 수 있도록 허용할 수 있습니다.

중요

Azure에서 여러 수준으로 역할 액세스의 범위를 지정할 수 있습니다. 예를 들어 작업 영역에 대한 소유자 액세스 권한이 있는 사용자에게 작업 영역을 포함하는 리소스 그룹에 대한 소유자 액세스 권한이 없을 수 있습니다. 자세한 내용은 Azure RBAC 작동 방식을 참조하세요.

작업 영역 액세스 관리

작업 영역의 소유자인 경우 작업 영역에 대한 역할을 추가하고 제거할 수 있습니다. 또한 사용자에게 역할을 할당할 수 있습니다. 다음 링크를 사용하여 액세스를 관리하는 방법을 알아봅니다.

Azure AD 보안 그룹을 사용하여 작업 영역 액세스 관리

Azure AD 보안 그룹을 사용하여 작업 영역에 대한 액세스를 관리할 수 있습니다. 이 방법에는 다음과 같은 이점이 있습니다.

  • 팀 또는 프로젝트 리더는 작업 영역 리소스에 대한 소유자 역할이 직접 필요하지 않고 보안 그룹 소유자로서 작업 영역에 대한 사용자 액세스를 관리할 수 있습니다.
  • 사용자별로 권한을 관리할 필요 없이 작업 영역 및 기타 리소스에 대한 사용자 권한을 그룹으로 구성, 관리 및 취소할 수 있습니다.
  • Azure AD 그룹을 사용하면 역할 할당에 대한 구독 제한에 도달하는 것을 방지할 수 있습니다.

Azure AD 보안 그룹을 사용하려면:

  1. 보안 그룹을 만듭니다.
  2. 그룹 소유자 추가. 이 사용자는 그룹 멤버를 추가하거나 제거할 수 있는 권한이 있습니다. 그룹 소유자는 그룹 구성원이거나 작업 영역에서 직접 RBAC 역할을 가질 필요가 없습니다.
  3. AzureML 데이터 과학자, 읽기 권한자 또는 기여자와 같은 작업 영역에 대한 RBAC 역할을 그룹에 할당합니다.
  4. 그룹 멤버를 추가합니다. 결과적으로 멤버는 작업 영역에 액세스할 수 있습니다.

사용자 지정 역할 만들기

기본 제공 역할이 충분하지 않은 경우 사용자 지정 역할을 만들 수 있습니다. 사용자 지정 역할에는 해당 작업 영역에서 읽기, 쓰기, 삭제 및 컴퓨팅 리소스 권한이 있을 수 있습니다. 특정 작업 영역 수준, 특정 리소스 그룹 수준 또는 특정 구독 수준에서 역할을 사용하도록 설정할 수 있습니다.

참고

해당 리소스 내에서 사용자 지정 역할을 만들려면 해당 수준의 리소스 소유자여야 합니다.

사용자 지정 역할을 만들려면 먼저 역할에 대한 권한과 범위를 지정하는 역할 정의 JSON 파일을 생성합니다. 다음 예제에서는 특정 작업 영역 수준에서 범위가 지정된 "데이터 과학자 사용자 지정"이라는 사용자 지정 역할을 정의합니다.

data_scientist_custom_role.json :

{
    "Name": "Data Scientist Custom",
    "IsCustom": true,
    "Description": "Can run experiment but can't create or delete compute.",
    "Actions": ["*"],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/*/delete",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/delete", 
        "Microsoft.Authorization/*/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace_name>"
    ]
}

AssignableScopes 필드를 변경하여 구독 수준, 리소스 그룹 수준 또는 특정 작업 영역 수준에서 이 사용자 지정 역할의 범위를 설정할 수 있습니다. 위의 사용자 지정 역할은 예일 뿐입니다. Azure Machine Learning Service에 대해 제안된 몇 가지 사용자 지정 역할을 참조하세요.

이 사용자 지정 역할은 다음 작업을 제외하고 작업 영역에서 모든 작업을 수행할 수 있습니다.

  • 컴퓨팅 리소스를 만들거나 업데이트할 수 없습니다.
  • 컴퓨팅 리소스를 삭제할 수 없습니다.
  • 역할 할당을 추가, 삭제 또는 변경할 수 없습니다.
  • 작업 영역을 삭제할 수 없습니다.

이 사용자 지정 역할을 배포하려면 다음 Azure CLI 명령을 사용합니다.

az role definition create --role-definition data_scientist_role.json

배포 후 지정된 작업 영역에서 이 역할을 사용할 수 있게 됩니다. 이제 Azure Portal에서 이 역할을 추가하고 할당할 수 있습니다.

사용자 지정 역할에 대한 자세한 내용은 Azure 사용자 지정 역할을 참조하세요.

Azure Machine Learning 작업

사용자 지정 역할과 함께 사용할 수 있는 작업(작업(Actions) 및 작업 안 함(NotActions))에 대한 자세한 내용은 리소스 공급자 작업을 참조하세요. 다음 Azure CLI 명령을 사용하여 작업을 나열할 수도 있습니다.

az provider operation show –n Microsoft.MachineLearningServices

사용자 지정 역할 나열

Azure CLI에서 다음 명령을 실행합니다.

az role definition list --subscription <sub-id> --custom-role-only true

특정 사용자 지정 역할에 대한 역할 정의를 보려면 다음 Azure CLI 명령을 사용합니다. <role-name>은 위의 명령에서 반환된 것과 동일한 형식이어야 합니다.

az role definition list -n <role-name> --subscription <sub-id>

사용자 지정 역할 업데이트

Azure CLI에서 다음 명령을 실행합니다.

az role definition update --role-definition update_def.json --subscription <sub-id>

새 역할 정의의 전체 범위에 대한 권한이 있어야 합니다. 예를 들어 3개의 구독이 이 새 역할의 범위에 해당하는 경우 3개의 구독 모두에 대한 권한이 있어야 합니다.

참고

역할 업데이트는 해당 범위의 모든 역할 할당에 적용되는 데 15분~1시간 정도 걸릴 수 있습니다.

반복성을 위해 Azure Resource Manager 템플릿 사용

복잡한 역할 할당을 다시 만들어야 하는 경우 Azure Resource Manager 템플릿이 중요한 도움이 될 수 있습니다. machine-learning-dependencies-role-assignment 템플릿은 재사용을 위해 소스 코드에서 역할 할당을 지정하는 방법을 보여줍니다.

일반적인 시나리오

다음 표에는 Azure Machine Learning 작업과 최소 범위에서 이를 수행하는 데 필요한 권한이 요약되어 있습니다. 예를 들어 작업 영역 범위(열 4)를 사용하여 작업을 수행할 수 있는 경우 해당 권한이 있는 모든 상위 범위도 자동으로 작동합니다. 특정 활동의 경우 사용 권한은 V1 및 V2 API 간에 다릅니다.

중요

이 표에서 /로 시작하는 모든 경로는 Microsoft.MachineLearningServices/에 대한 상대 경로입니다.

활동 구독 수준 범위 리소스 그룹 수준 범위 작업 영역 수준 범위
새 작업 영역 만들기 1 필요 없음 소유자 또는 기여자 해당 없음(소유자가 되거나 생성 후 더 높은 범위 역할을 상속함)
구독 수준 Amlcompute 할당량 요청 또는 작업 영역 수준 할당량 설정 구독 범위에서
/locations/updateQuotas/action
을 허용하는 소유자 또는 기여자 또는 사용자 지정 역할
권한 없음 권한 없음
새 컴퓨팅 클러스터 만들기 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: /workspaces/computes/write
새 컴퓨팅 인스턴스 만들기 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: /workspaces/computes/write
모든 유형의 실행 제출(V1) 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: "/workspaces/*/read", "/workspaces/environments/write", "/workspaces/experiments/runs/write", "/workspaces/metadata/artifacts/write", "/workspaces/metadata/snapshots/write", "/workspaces/environments/build/action", "/workspaces/experiments/runs/submit/action", "/workspaces/environments/readSecrets/action"
모든 유형의 실행 제출(V2) 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: "/workspaces/*/read", "/workspaces/environments/write", "/workspaces/jobs/*", "/workspaces/metadata/artifacts/write", "/workspaces/metadata/codes/*/write", "/workspaces/environments/build/action", "/workspaces/environments/readSecrets/action"
파이프라인 및 엔드포인트 게시(V1) 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: "/workspaces/endpoints/pipelines/*", "/workspaces/pipelinedrafts/*", "/workspaces/modules/*"
파이프라인 및 엔드포인트 게시(V2) 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: "/workspaces/endpoints/pipelines/*", "/workspaces/pipelinedrafts/*", "/workspaces/components/*"
AKS 리소스 연결 2 필요 없음 AKS를 포함하는 리소스 그룹의 소유자 또는 참가자
AKS/ACI 리소스에 등록된 모델 배포 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: "/workspaces/services/aks/write", "/workspaces/services/aci/write"
배포된 AKS 엔드포인트에 대한 점수 매기기 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: "/workspaces/services/aks/score/action", "/workspaces/services/aks/listkeys/action"(Azure Active Directory 인증을 사용하지 않는 경우) 또는 "/workspaces/read"(토큰 인증을 사용하는 경우)
대화형 Notebook을 사용하여 스토리지에 액세스 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: "/workspaces/computes/read", "/workspaces/notebooks/samples/read", "/workspaces/notebooks/storage/*", "/workspaces/listStorageAccountKeys/action", "/workspaces/listNotebookAccessToken/read"
새 사용자 지정 역할 만들기 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: Microsoft.Authorization/roleDefinitions/write 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: /workspaces/computes/write
관리형 온라인 엔드포인트 및 배포 만들기/관리 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
온라인 엔드포인트에 대한 인증 자격 증명 검색 필요 없음 필요 없음 다음을 허용하는 소유자, 기여자 또는 사용자 지정 역할: Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/actionMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action

1: 처음 작업 영역 만들기를 시도할 때 오류가 발생하면 역할이 Microsoft.MachineLearningServices/register/action을 허용하는지 확인합니다. 이 작업을 통해 Azure 구독에 Azure Machine Learning 리소스 공급자를 등록할 수 있습니다.

2: AKS 클러스터를 연결할 때 클러스터에 대한 Azure Kubernetes Service 클러스터 관리자 역할도 필요합니다.

V1 및 V2 API에 대한 작업 간 차이점

V1 API와 V2 API에 대한 작업 간에는 특정 차이점이 있습니다.

자산 V1 API에 대한 작업 경로 V2 API에 대한 작업 경로
데이터 세트 Microsoft.MachineLearningServices/workspaces/datasets Microsoft.MachineLearningServices/workspaces/datasets/versions
실험 실행 및 작업 Microsoft.MachineLearningServices/workspaces/experiments Microsoft.MachineLearningServices/workspaces/jobs
모델 Microsoft.MachineLearningServices/workspaces/models Microsoft.MachineLearningServices/workspaces/models/verstions
스냅샷 및 코드 Microsoft.MachineLearningServices/workspaces/snapshots Microsoft.MachineLearningServices/workspaces/codes/versions
모듈 및 구성 요소 Microsoft.MachineLearningServices/workspaces/modules Microsoft.MachineLearningServices/workspaces/components

두 작업을 모두 포함하거나 두 작업을 모두 포함하는 와일드카드(예: Microsoft.MachineLearningServices/workspaces/datasets/*/read)를 사용하여 사용자 지정 역할을 V1 및 V2 API와 호환되도록 만들 수 있습니다.

고객 관리형 키를 사용하여 작업 영역 만들기

CMK(고객 관리형 키)를 사용하는 경우 Azure Key Vault는 키를 저장하는 데 사용됩니다. 작업 영역을 만드는 데 사용되는 사용자 또는 서비스 주체는 키 자격 증명 모음에 대한 소유자 또는 참가자 액세스 권한이 있어야 합니다.

키 자격 증명 모음 내에서 사용자 또는 서비스 주체는 키 자격 증명 모음 액세스 정책을 통해 키에 대한 만들기, 가져오기, 삭제 및 제거 액세스 권한이 있어야 합니다. 자세한 내용은 Azure Key Vault 보안을 참조하세요.

Azure ML 컴퓨팅 클러스터를 통해 사용자가 할당한 관리 ID

사용자 할당 ID를 Azure Machine Learning 컴퓨팅 클러스터에 할당하려면 컴퓨팅 및 관리 ID 운영자 역할을 만들기 위한 쓰기 권한이 필요합니다. 관리 ID가 있는 Azure RBAC에 대한 자세한 내용은 사용자 할당 ID를 관리하는 방법을 참조하세요.

MLflow 작업

Azure Machine Learning 작업 영역에서 MLflow 작업을 수행하려면 사용자 지정 역할의 다음 범위를 사용합니다.

MLflow 작업 범위
(V1) 실험 나열, 읽기, 만들기, 업데이트 또는 삭제 Microsoft.MachineLearningServices/workspaces/experiments/*
(V2) 작업 나열, 읽기, 만들기, 업데이트 또는 삭제 Microsoft.MachineLearningServices/workspaces/jobs/*
이름으로 등록된 모델 가져오기, 레지스트리에 등록된 모든 모델 목록 가져오기, 등록된 모델 검색, 각 요청 단계에 대한 최신 버전 모델, 등록된 모델 버전 가져오기, 모델 버전 검색, 모델 버전의 아티팩트가 저장되는 URI 가져오기, 실험 ID로 실행 검색 Microsoft.MachineLearningServices/workspaces/models/*/read
등록된 새 모델 만들기, 등록된 모델의 이름/설명 업데이트, 등록된 기존 모델 이름 바꾸기, 모델의 새 버전 만들기, 모델 버전의 설명 업데이트, 단계 중 하나로 등록된 모델 전환 Microsoft.MachineLearningServices/workspaces/models/*/write
모든 버전과 함께 등록된 모델 삭제, 등록된 모델의 특정 버전 삭제 Microsoft.MachineLearningServices/workspaces/models/*/delete

사용자 지정 역할 예제

데이터 과학자

데이터 과학자가 작업 영역 내에서 다음을 제외한 모든 작업을 수행할 수 있습니다.

  • 컴퓨팅 만들기
  • 프로덕션 AKS 클러스터에 모델 배포
  • 프로덕션에서 파이프라인 엔드포인트 배포

data_scientist_custom_role.json :

{
    "Name": "Data Scientist Custom",
    "IsCustom": true,
    "Description": "Can run experiment but can't create or delete compute or deploy production endpoints.",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/*/read",
        "Microsoft.MachineLearningServices/workspaces/*/action",
        "Microsoft.MachineLearningServices/workspaces/*/delete",
        "Microsoft.MachineLearningServices/workspaces/*/write"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/delete", 
        "Microsoft.Authorization/*",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/services/aks/write",
        "Microsoft.MachineLearningServices/workspaces/services/aks/delete",
        "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscription_id>"
    ]
}

데이터 과학자 제한됨

허용된 작업에 와일드카드가 없는 보다 제한된 역할 정의. 작업 영역 내에서 다음을 제외한 모든 작업을 수행할 수 있습니다.

  • 컴퓨팅 만들기
  • 프로덕션 AKS 클러스터에 모델 배포
  • 프로덕션에서 파이프라인 엔드포인트 배포

data_scientist_restricted_custom_role.json :

{
    "Name": "Data Scientist Restricted Custom",
    "IsCustom": true,
    "Description": "Can run experiment but can't create or delete compute or deploy production endpoints",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/*/read",
        "Microsoft.MachineLearningServices/workspaces/computes/start/action",
        "Microsoft.MachineLearningServices/workspaces/computes/stop/action",
        "Microsoft.MachineLearningServices/workspaces/computes/restart/action",
        "Microsoft.MachineLearningServices/workspaces/computes/applicationaccess/action",
        "Microsoft.MachineLearningServices/workspaces/notebooks/storage/write",
        "Microsoft.MachineLearningServices/workspaces/notebooks/storage/delete",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/submit/action",
        "Microsoft.MachineLearningServices/workspaces/pipelinedrafts/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/write",
        "Microsoft.MachineLearningServices/workspaces/environments/write",
        "Microsoft.MachineLearningServices/workspaces/models/*/write",
        "Microsoft.MachineLearningServices/workspaces/modules/write",
        "Microsoft.MachineLearningServices/workspaces/components/*/write",
        "Microsoft.MachineLearningServices/workspaces/datasets/*/write", 
        "Microsoft.MachineLearningServices/workspaces/datasets/*/delete",
        "Microsoft.MachineLearningServices/workspaces/computes/listNodes/action",
        "Microsoft.MachineLearningServices/workspaces/environments/build/action"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/computes/write",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/delete",
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.Authorization/*",
        "Microsoft.MachineLearningServices/workspaces/datasets/registered/profile/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/registered/preview/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/profile/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/preview/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/registered/schema/read",    
        "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/schema/read",
        "Microsoft.MachineLearningServices/workspaces/datastores/write",
        "Microsoft.MachineLearningServices/workspaces/datastores/delete"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscription_id>"
    ]
}

MLflow 데이터 과학자

데이터 과학자가 다음을 제외한 모든 MLflow AzureML 지원 작업을 수행할 수 있습니다.

  • 컴퓨팅 만들기
  • 프로덕션 AKS 클러스터에 모델 배포
  • 프로덕션에서 파이프라인 엔드포인트 배포

mlflow_data_scientist_custom_role.json :

{
    "Name": "MLFlow Data Scientist Custom",
    "IsCustom": true,
    "Description": "Can perform azureml mlflow integrated functionalities that includes mlflow tracking, projects, model registry",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/experiments/*",
        "Microsoft.MachineLearningServices/workspaces/jobs/*",
        "Microsoft.MachineLearningServices/workspaces/models/*"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/delete", 
        "Microsoft.Authorization/*",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/services/aks/write",
        "Microsoft.MachineLearningServices/workspaces/services/aks/delete",
        "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscription_id>"
    ]
}

MLOps

서비스 주체에 역할을 할당하고 이를 사용하여 MLOps 파이프라인을 자동화할 수 있습니다. 이미 게시된 파이프라인에 대해 실행을 제출하려는 경우를 예로 들 수 있습니다.

mlops_custom_role.json :

{
    "Name": "MLOps Custom",
    "IsCustom": true,
    "Description": "Can run pipelines against a published pipeline endpoint",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/read",
        "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/read",
        "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/read",
        "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/read",
        "Microsoft.MachineLearningServices/workspaces/environments/read",    
        "Microsoft.MachineLearningServices/workspaces/metadata/secrets/read",
        "Microsoft.MachineLearningServices/workspaces/modules/read",
        "Microsoft.MachineLearningServices/workspaces/components/read",       
        "Microsoft.MachineLearningServices/workspaces/datasets/*/read",
        "Microsoft.MachineLearningServices/workspaces/datastores/read",
        "Microsoft.MachineLearningServices/workspaces/environments/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/read",       
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/submit/action",
        "Microsoft.MachineLearningServices/workspaces/experiments/jobs/read",       
        "Microsoft.MachineLearningServices/workspaces/experiments/jobs/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/codes/*/write",       
        "Microsoft.MachineLearningServices/workspaces/environments/build/action",
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/computes/write",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/delete",
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.Authorization/*"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscription_id>"
    ]
}

작업 영역 관리자

작업 영역 범위 내에서 다음을 제외한 모든 작업을 수행할 수 있습니다.

  • 새 작업 영역 만들기
  • 구독 또는 작업 영역 수준 할당량 할당

또한 작업 영역 관리자는 새 역할을 만들 수 없습니다. 작업 영역 범위 내에서 기존 기본 제공 또는 사용자 지정 역할만 할당할 수 있습니다.

workspace_admin_custom_role.json :

{
    "Name": "Workspace Admin Custom",
    "IsCustom": true,
    "Description": "Can perform all operations except quota management and upgrades",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/*/read",
        "Microsoft.MachineLearningServices/workspaces/*/action",
        "Microsoft.MachineLearningServices/workspaces/*/write",
        "Microsoft.MachineLearningServices/workspaces/*/delete",
        "Microsoft.Authorization/roleAssignments/*"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscription_id>"
    ]
}

데이터 레이블 지정

데이터 레이블 지정으로만 범위가 지정된 역할을 정의할 수 있습니다.

labeler_custom_role.json :

{
    "Name": "Labeler Custom",
    "IsCustom": true,
    "Description": "Can label data for Labeling",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/summary/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/write"   
    ],
    "NotActions": [        
    ],
    "AssignableScopes": [
        "/subscriptions/<subscription_id>"
    ]
}

문제 해결

다음은 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하는 동안 유의해야 할 사항입니다.

  • Azure에서 작업 영역과 같은 리소스를 만들 때 리소스의 소유자가 아닙니다. 역할은 해당 구독에서 권한이 부여된 가장 높은 범위 역할에서 상속됩니다. 예를 들어 네트워크 관리자이고 Machine Learning 작업 영역을 만들 수 있는 권한이 있는 경우 소유자 역할이 아닌 해당 작업 영역에 대한 네트워크 관리자 역할이 할당됩니다.

  • 작업 영역에서 할당량 작업을 수행하려면 구독 수준 권한이 필요합니다. 즉, 관리 컴퓨팅 리소스에 대한 구독 수준 할당량 또는 작업 영역 수준 할당량 설정은 구독 범위에서 쓰기 권한이 있는 경우에만 발생할 수 있습니다.

  • Actions/NotActions 섹션이 충돌하는 동일한 Azure Active Directory 사용자에 대한 2개의 역할 할당이 있으면 한 역할의 NotActions에 나열된 작업이 다른 역할의 Actions로도 나열되는 경우 해당 작업은 유효하지 않을 수 있습니다. Azure에서 역할 할당을 구문 분석하는 방법에 대해 자세히 알아보려면 Azure RBAC에서 사용자가 리소스에 액세스할 수 있는지 확인하는 방법을 참조하세요.

  • VNet 내에서 컴퓨팅 리소스를 배포하려면 다음 작업에 대한 권한이 명시적으로 있어야 합니다.

    • VNet 리소스의 Microsoft.Network/virtualNetworks/*/read
    • 서브넷 리소스의 Microsoft.Network/virtualNetworks/subnets/join/action

    네트워킹과 Azure RBAC에 관한 자세한 내용은 네트워킹 기본 제공 역할을 참조하세요.

  • 경우에 따라 새 역할 할당이 스택 전체의 캐시된 권한에 적용되는 데 최대 1시간까지 걸릴 수 있습니다.

다음 단계