서비스 주체를 사용하여 작업 영역에서 인증
대화형 인증을 사용하거나 사용자 계정으로 인증하는 것이 부적절한 경우도 있습니다. 이러한 경우는 웹 서비스, 다른 작업자 역할 또는 자동화된 시스템에서 작업을 제출하려고 할 때 발생할 수 있습니다. 한 가지 옵션은 설명하는 관리 ID를 구성하는 것이고, 이 문서에서 설명하는 서비스 주체를 사용하여 인증하는 옵션도 있습니다.
필수 구성 요소: 서비스 주체 및 애플리케이션 비밀 만들기
서비스 주체로 인증하려면 먼저 서비스 주체를 만들어야 합니다.
서비스 주체를 만들고 액세스 권한을 할당하고 자격 증명을 만들려면 다음을 수행합니다.
-
참고 항목
리디렉션 URI를 설정할 필요가 없습니다.
- 만든 후에는 애플리케이션(클라이언트) ID 및 디렉터리(테넌트) ID를 적어 씁니다.
애플리케이션으로 로그인하려면 자격 증명을 만듭니다.
- 애플리케이션에 대한 설정에서 인증서 및 비밀을 선택합니다.
- 클라이언트 비밀에서 새 비밀 만들기를 선택합니다.
- 설명 및 기간을 입력한 다음 추가를 선택합니다.
- 비밀 값을 안전한 장소에 즉시 복사합니다. 다시 볼 수 없습니다!
서비스 주체에게 작업 영역에 액세스할 수 있는 권한을 부여합니다.
- Azure Portal을 엽니다.
- 검색 창에서 작업 영역을 만든 리소스 그룹의 이름을 입력합니다. 결과에 올 때 리소스 그룹을 선택합니다.
- 리소스 그룹 개요에서 액세스 제어(IAM)를 선택합니다.
- 역할 할당 추가를 선택합니다.
- 서비스 주체를 검색하여 선택합니다.
- 기여자 또는 소유자 역할을 할당합니다.
참고 항목
리소스 그룹 또는 작업 영역에서 역할 할당을 만들려면 역할 할당 범위에서 소유자 또는 사용자 액세스 관리자여야 합니다. 구독에서 서비스 주체를 만들 수 있는 권한이 없는 경우에는 Azure 구독의 ‘소유자’ 또는 ‘관리자’로부터 권한을 요청해야 합니다.
리소스 그룹 또는 작업 영역 수준에서만 권한이 있는 경우 다음을 사용하여 기여자 역할 아래에 서비스 주체를 만들 수 있습니다.
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<SUBSCRIPTION-ID>
서비스 주체로 인증
옵션 1: 환경 변수 사용: 개체 만들기에 Workspace
사용되는 기본 자격 증명은 여러 유형의 인증을 시도하는 DefaultAzureCredential입니다.
첫 번째는 EnvironmentCredential이며, 다음과 같은 환경 변수를 통해 서비스 주체 자격 증명을 전달합니다.
- AZURE_TENANT_ID: 서비스 주체 테넌트의 ID입니다. '디렉터리' ID라고도 합니다.
- AZURE_CLIENT_ID: 서비스 주체의 클라이언트 ID
- AZURE_CLIENT_SECRET: 서비스 주체의 클라이언트 암호 중 하나
옵션 2: ClientSecretCredential 사용: Workspace
개체를 인스턴스화하는 동안 ClientSecretCredential을 전달하거나 credentials
속성을 설정합니다.
from azure.identity import ClientSecretCredential
tenant_id = os.environ["AZURE_TENANT_ID"]
client_id = os.environ["AZURE_CLIENT_ID"]
client_secret = os.environ["AZURE_CLIENT_SECRET"]
credential = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
workspace.credentials = credential
참고 항목
workspace.login()
메서드는 더 이상 사용되지 않으며 더 이상 필요하지 않습니다. 서비스에 대한 호출이 처음 있을 때 생성자 또는 해당 속성에 전달된 자격 증명을 사용하여 인증을 Workspace
시도합니다 credentials
. 자격 증명이 전달되지 않은 경우 DefaultAzureCredential에서 여러 인증 방법을 시도합니다.