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