이 문서에서는 Azure 리소스 서비스 주체에 대한 관리 ID를 사용하여 로그인하기 위한 PowerShell 및 CLI 스크립트 예제와 오류 처리와 같은 중요한 항목에 대한 지침을 제공합니다.
비고
Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.
필수 조건
이 문서에서 Azure PowerShell 또는 Azure CLI 예제를 사용하려는 경우 최신 버전의 Azure PowerShell 또는 Azure CLI를 설치해야 합니다.
중요합니다
- 이 문서의 모든 샘플 스크립트는 명령줄 클라이언트가 Azure 리소스에 대한 관리 ID를 사용하도록 설정된 VM에서 실행되고 있다고 가정합니다. Azure Portal에서 VM "연결" 기능을 사용하여 VM에 원격으로 연결합니다. VM에서 Azure 리소스에 대한 관리 ID를 사용하도록 설정하는 방법에 대한 자세한 내용은 Azure Portal을 사용하여 VM에서 Azure 리소스에 대한 관리 ID 구성 또는 변형 문서 중 하나(PowerShell, CLI, 템플릿 또는 Azure SDK 사용)를 참조하세요.
- 리소스 액세스 중 오류를 방지하려면 VM에서 Azure Resource Manager 작업을 허용하려면 적절한 범위(VM 이상)에서 VM의 관리 ID에 최소한 "읽기 권한자" 액세스 권한을 부여해야 합니다. 자세한 내용은 Azure 포털을 사용하여 리소스에 Azure 리소스 접근을 위한 관리 ID를 할당하는 방법을 참조하세요.
개요
Azure 리소스에 대한 관리 ID는 VM에서 Azure 리소스에 대한 관리 ID를 사용하도록 설정할 때 만들어지는 서비스 주체 개체를 제공합니다. 서비스 주체는 Azure 리소스에 대한 액세스 권한을 부여하고 로그인 및 리소스 액세스를 위해 스크립트/명령줄 클라이언트에서 ID로 사용할 수 있습니다. 일반적으로 자체 ID로 보안 리소스에 액세스하려면 스크립트 클라이언트에서 다음을 수행해야 합니다.
- Microsoft Entra ID를 기밀/웹 클라이언트 애플리케이션으로 등록하고 동의해야 합니다.
- 앱의 자격 증명(스크립트에 포함되어 있을 가능성이 높음)을 사용하여 서비스 주체로 로그인합니다.
Azure 리소스에 대한 관리 ID를 사용하면 스크립트 클라이언트가 Azure 리소스 서비스 주체에 대한 관리 ID로 로그인할 수 있으므로 더 이상 둘 중 하나를 수행할 필요가 없습니다.
Azure 커맨드 라인 인터페이스 (CLI)
다음 스크립트는 다음 방법을 보여 줍니다.
Azure 리소스 서비스 주체에 대한 VM의 관리 ID로 Microsoft Entra ID에 로그인합니다.
Azure Resource Manager를 호출하고 VM의 서비스 주체 ID를 가져옵니다. CLI는 자동으로 토큰 획득/사용을 관리합니다. 가상 머신 이름으로
<VM-NAME>
을(를) 꼭 바꿔 넣으세요.az login --identity $spID=$(az resource list -n <VM-NAME> --query [*].identity.principalId --out tsv) echo The managed identity for Azure resources service principal ID is $spID
Azure PowerShell
다음 스크립트는 다음 방법을 보여 줍니다.
Azure 리소스 서비스 주체에 대한 VM의 관리 ID로 Microsoft Entra ID에 로그인합니다.
Azure Resource Manager cmdlet을 호출하여 VM에 대한 정보를 가져옵니다. PowerShell은 자동으로 토큰 사용을 관리합니다.
Add-AzAccount -identity # Call Azure Resource Manager to get the service principal ID for the VM's managed identity for Azure resources. $vmInfoPs = Get-AzVM -ResourceGroupName <RESOURCE-GROUP> -Name <VM-NAME> $spID = $vmInfoPs.Identity.PrincipalId echo "The managed identity for Azure resources service principal ID is $spID"
Azure 서비스의 리소스 ID
Microsoft Entra 인증을 지원하는 Azure 서비스에서 Microsoft Entra ID를 지원하고 Azure 리소스에 대한 관리 ID 및 해당 리소스 ID로 테스트된 리소스 목록을 참조하세요.
오류 처리 지침
다음과 같은 응답은 Azure 리소스에 대한 VM의 관리 ID가 올바르게 구성되지 않았음을 나타낼 수 있습니다.
- PowerShell: Invoke-WebRequest: 원격 서버에 연결할 수 없습니다.
- CLI: MSI: 'HTTPConnectionPool(host='localhost', port=50342) 오류로 토큰
http://localhost:50342/oauth2/token
을 검색하지 못했습니다.
이러한 오류 중 하나가 수신되면 Azure Portal 의 Azure VM으로 돌아가 서 ID 페이지로 이동하여 시스템 할당 이 "예"로 설정되어 있는지 확인합니다.
다음 단계
- Azure VM에서 Azure 리소스에 대한 관리 ID를 사용하도록 설정하려면 PowerShell을 사용하여 Azure VM에서 Azure 리소스에 대한 관리 ID 구성 또는 Azure CLI를 사용하여Azure VM에서 Azure 리소스에 대한 관리 ID 구성을 참조하세요.