앱은 Azure ID 라이브러리를 사용하여 Microsoft Entra ID 인증할 수 있으며, 이를 통해 앱은 Azure 서비스 및 리소스에 액세스할 수 있습니다. 이 인증 요구 사항은 앱이 Azure 배포되거나, 온-프레미스에서 호스트되거나, 개발자 워크스테이션에서 로컬로 실행되는지 여부에 적용됩니다. 이 문서에서는 Azure SDK 클라이언트 라이브러리를 사용할 때 다양한 환경에서 Microsoft Entra ID 앱을 인증하는 권장 방법을 설명합니다.
앱 인증에 권장되는 접근 방식
Microsoft Entra ID 통한 토큰 기반 인증은 연결 문자열이나 키 기반 옵션을 사용하는 대신 Azure 앱을 인증하는 데 권장되는 방법입니다. Azure ID 라이브러리는 토큰 기반 인증을 지원하고 앱이 로컬, Azure 또는 온-프레미스 서버에서 실행되는지 여부에 관계없이 리소스를 Azure 인증할 수 있도록 하는 클래스를 제공합니다.
토큰 기반 인증의 장점
토큰 기반 인증은 연결 문자열에 비해 다음과 같은 이점을 제공합니다.
- 토큰 기반 인증은 Azure 리소스에 액세스하려는 특정 앱만 액세스할 수 있도록 하는 반면, connection string 있는 모든 앱은 Azure 리소스에 연결할 수 있습니다.
- 토큰 기반 인증을 사용하면 Azure 리소스 액세스를 앱에 필요한 특정 권한으로만 제한할 수 있습니다. 이 방법은 최소 권한 원칙을 따릅니다. 반면, connection string Azure 리소스에 대한 모든 권한을 부여합니다.
- 토큰 기반 인증에 관리 ID를 사용하는 경우 Azure 관리 기능을 처리하므로 비밀 보안 또는 회전과 같은 작업에 대해 걱정할 필요가 없습니다. 이 방법을 사용하면 손상될 수 있는 connection string 또는 애플리케이션 비밀이 없으므로 앱을 더욱 안전하게 보호할 수 있습니다.
- Azure ID 라이브러리는 Microsoft Entra 토큰을 획득하고 관리합니다.
토큰 기반 인증이 옵션이 아닌 시나리오, 초기 개념 증명 앱 또는 프로덕션 또는 중요한 데이터에 액세스하지 않는 개발 프로토타입으로 연결 문자열 사용을 제한합니다. 가능하면 Azure ID 라이브러리에서 사용할 수 있는 토큰 기반 인증 클래스를 사용하여 리소스를 Azure 인증합니다.
다양한 환경에서 인증
앱이 리소스를 Azure 인증하는 데 사용해야 하는 특정 유형의 토큰 기반 인증은 앱이 실행되는 위치에 따라 달라집니다. 다음 다이어그램은 다양한 시나리오 및 환경에 대한 지침을 제공합니다.
앱이 다음과 같은 경우:
- Azure에 호스팅됨: 앱은 관리 ID를 사용하여 Azure 리소스에 인증해야 합니다. 자세한 내용은 Azure 호스팅 앱에 대한 인증 섹션을 참조하세요.
- 개발 중 로컬 실행: 앱은 개발자 계정, 브로커 또는 서비스 주체를 사용하여 Azure에 인증할 수 있습니다. 자세한 내용은 로컬 개발 중 인증 섹션을 참조하세요.
- 온-프레미스: 앱은 애플리케이션 서비스 주체 또는 Azure Arc의 경우 관리 ID를 사용하여 Azure 리소스에 인증해야 합니다. 온-프레미스 워크플로는 온-프레미스에서 호스트되는 앱에 대한 인증에서 자세히 설명합니다.
Azure 호스팅 앱에 대한 인증
Azure 앱을 호스트하는 경우 관리 ID를 사용하여 자격 증명을 관리할 필요 없이 리소스를 Azure 인증할 수 있습니다. 사용자 할당 및 시스템 할당의 두 가지 유형의 관리 ID를 사용할 수 있습니다.
사용자 할당 관리 ID 사용
사용자 할당 관리 ID를 독립 실행형 Azure 리소스로 만들 수 있습니다. 그런 다음 해당 리소스가 동일한 ID 및 권한을 공유할 수 있도록 하나 이상의 Azure 리소스에 할당할 수 있습니다. 사용자 할당 관리 ID를 사용하여 인증하려면 ID를 만들고 Azure 리소스에 할당한 다음 클라이언트 ID, 리소스 ID 또는 개체 ID를 지정하여 인증에 이 ID를 사용하도록 앱을 구성합니다.
시스템 할당 관리 ID 사용
Azure 리소스에서 직접 시스템 할당 관리 ID를 사용하도록 설정할 수 있습니다. ID는 해당 리소스의 수명 주기에 연결되며 리소스가 삭제되면 자동으로 삭제됩니다. 시스템 할당 관리 ID를 사용하여 인증하려면 Azure 리소스에서 ID를 사용하도록 설정한 다음 인증에 이 ID를 사용하도록 앱을 구성합니다.
로컬 개발 중 인증
로컬 개발 중에 개발자 자격 증명, 브로커 또는 서비스 주체를 사용하여 리소스를 Azure 인증할 수 있습니다. 이러한 방법 중 하나를 사용하여 Azure 배포하지 않고 앱의 인증 논리를 테스트할 수 있습니다.
개발자 자격 증명 사용
사용자 고유의 Azure 자격 증명을 사용하여 로컬 개발 중에 리소스를 Azure 인증할 수 있습니다. 일반적으로 Azure CLI, Azure 개발자 CLI, Azure PowerShell, Visual Studio Code 또는 IntelliJ IDEA와 같은 개발 도구를 사용합니다. 이러한 도구는 앱에 Azure 서비스에 액세스하는 데 필요한 토큰을 제공할 수 있습니다. 이 방법은 편리하지만 개발 목적으로만 사용해야 합니다.
브로커를 사용하세요
조정된 인증은 시스템 인증 브로커를 사용하여 사용자 자격 증명을 수집하여 앱을 인증합니다. 시스템 인증 브로커는 사용자의 컴퓨터에서 실행되며 연결된 모든 계정에 대한 인증 핸드셰이크 및 토큰 유지 관리를 관리합니다.
서비스 주체를 사용하세요
Microsoft Entra 테넌트에 서비스 주체를 만들어 앱을 나타내고 Azure 리소스에 인증할 수 있습니다. 로컬 개발 중에 서비스 주체 자격 증명을 사용하도록 앱을 구성할 수 있습니다. 이 방법은 개발자 자격 증명을 사용하는 것보다 더 안전하며 앱이 프로덕션 환경에서 인증하는 방법에 더 가깝습니다. 그러나 비밀이 필요하기 때문에 관리 ID를 사용하는 것보다 더 이상적이지 않습니다.
온-프레미스에서 호스트되는 앱에 대한 인증
온-프레미스에서 호스트되는 앱의 경우 서비스 주체를 사용하여 리소스를 Azure 인증할 수 있습니다. 여기에는 Microsoft Entra ID 서비스 주체를 만들고, 필요한 권한을 할당하고, 자격 증명을 사용하도록 앱을 구성하는 작업이 포함됩니다. 이 방법을 사용하면 온-프레미스 앱이 Azure 서비스에 안전하게 액세스할 수 있습니다.