디먼 애플리케이션 보호
이 문서에서는 Microsoft Azure Maps의 신뢰할 수 있는 보안 환경에 디먼 애플리케이션을 호스트하는 방법을 설명합니다.
다음은 디먼 애플리케이션의 예입니다.
- Azure 웹 작업
- Azure 함수 앱
- Windows 서비스
- 실행 중인 안정적인 백그라운드 서비스
Azure Maps 인증 세부 정보 보기
Azure Portal에서 Azure Maps 계정 인증 세부 정보를 보려면 다음을 수행합니다.
Azure Portal에 로그인합니다.
Azure Portal 메뉴로 이동합니다. 모든 리소스를 선택한 다음, Azure Maps 계정을 선택합니다.
왼쪽 창의 설정에서 인증을 선택합니다.
Azure Maps 계정을 만들 때 세 가지 값이 생성됩니다. 해당 값은 Azure Maps의 두 가지 인증 유형을 지원하는 데 사용됩니다.
- Microsoft Entra 인증:
Client ID
는 REST API 요청에 사용되는 계정을 나타냅니다.Client ID
값은 애플리케이션 구성에 저장되며, Microsoft Entra 인증을 사용하는 Azure Maps HTTP 요청을 수행하기 전에 검색해야 합니다. - 공유 키 인증:
Primary Key
와Secondary Key
가 공유 키 인증의 구독 키로 사용됩니다. 공유 키 인증은 각 요청과 함께 Azure Maps 계정에서 생성된 키를 Azure Maps에 전달합니다. 키를 정기적으로 다시 생성하는 것이 좋습니다. 다시 생성하는 동안 현재 연결을 유지하기 위해 두 개의 키가 제공됩니다. 하나의 키를 다시 생성하는 동안 다른 키를 사용할 수 있습니다. 키를 다시 생성하는 경우 이 계정에 액세스하는 모든 애플리케이션이 새 키를 사용하도록 업데이트해야 합니다. 자세한 내용은 Azure Maps 인증을 참조하세요.
Important
프로덕션 애플리케이션의 경우 Microsoft Entra ID 및 Azure RBAC(Azure 역할 기반 액세스 제어)를 구현하는 것이 좋습니다. Microsoft Entra 개념에 관한 개요는 Azure Maps 인증을 참조하세요.
시나리오: Azure Key Vault을 사용하여 공유 키 인증
공유 키 인증을 사용하는 애플리케이션은 키를 보안 저장소에 저장해야 합니다. 이 시나리오에서는 애플리케이션 키를 Azure Key Vault에 비밀로 안전하게 저장하는 방법을 설명합니다. 공유 키를 애플리케이션 구성에 저장하는 대신, 애플리케이션은 공유 키를 Azure Key Vault 비밀로 검색할 수 있습니다. 키를 간단하게 다시 생성할 수 있도록 애플리케이션에서 한 번에 하나의 키를 사용하는 것이 좋습니다. 그러면 애플리케이션이 키 하나로 현재 연결을 계속 유지하면서도 사용되지 않는 키를 다시 생성하고 다시 생성된 키를 Azure Key Vault에 배포할 수 있습니다. Azure Key Vault를 구성하는 방법을 알아보려면 Azure Key Vault 개발자 가이드를 참조하세요.
Important
이 시나리오에서는 Azure Key Vault를 통해 Microsoft Entra ID에 간접적으로 액세스합니다. 그러나 Microsoft Entra 인증을 직접 사용하는 것이 좋습니다. Microsoft Entra ID를 직접 사용하면 공유 키 인증을 사용하고 Key Vault를 설정하는 복잡한 과정과 작업을 수행할 필요가 없습니다.
다음 단계에서는 이 프로세스를 간략하게 설명합니다.
- Azure Key Vault를 만듭니다.
- 앱 등록 또는 관리 ID를 만들어 Microsoft Entra 서비스 주체를 만듭니다. 생성된 주체는 Azure Key Vault에 대한 액세스를 담당합니다.
- Azure Key 비밀
get
권한에 대한 액세스 권한을 서비스 주체에 할당합니다. 권한 설정에 대한 자세한 내용은 Azure Portal을 사용하여 Key Vault 액세스 정책 할당을 참조하세요. - 비밀
set
권한에 대한 액세스 권한을 개발자에게 일시적으로 할당합니다. - Key Vault 비밀에서 공유 키를 설정하고, 비밀 ID를 디먼 애플리케이션의 구성으로 참조합니다.
- 비밀
set
권한을 제거합니다. - Azure Key Vault에서 공유 비밀 키를 검색하려면 디먼 애플리케이션에서 Microsoft Entra 인증을 구현합니다.
- 공유 키를 사용하여 Azure Maps REST API 요청을 만듭니다. 이제 디먼 애플리케이션은 Key Vault에서 공유 키를 검색할 수 있습니다.
팁
앱이 Azure 환경에 호스트되는 경우 관리 ID를 사용하여 인증 비밀을 관리하는 비용과 복잡성을 줄이는 것이 좋습니다. 관리 ID를 설정하는 방법을 알아보려면 자습서: 관리 ID를 사용하여 .NET에서 Key Vault를 Azure 웹 앱에 연결을 참조하세요.
시나리오: Microsoft Entra 역할 기반 액세스 제어
Azure Maps 계정이 만들어지면 Azure Maps Client ID
값이 Azure Portal 인증 정보 페이지에 표시됩니다. 이 값은 REST API 요청에 사용되는 계정을 나타냅니다. 이 값은 애플리케이션 구성에 저장되고, HTTP 요청을 만들기 전에 검색됩니다. 이 시나리오의 목표는 디먼 애플리케이션이 Microsoft Entra ID에 인증하고 Azure Maps REST API를 호출할 수 있도록 하는 것입니다.
팁
관리 ID 구성 요소의 이점을 활용할 수 있도록 Azure Virtual Machines, Virtual Machine Scale Sets 또는 App Services에서 호스트하는 것이 좋습니다.
Azure 리소스에서 디먼 호스트
Azure 리소스에서 실행하는 경우 적은 비용으로 최소한의 자격 증명 관리 작업을 수행할 수 있도록 Azure 관리 ID를 구성할 수 있습니다.
관리 ID에 대한 애플리케이션 액세스를 사용하려면 관리 ID 개요를 참조하세요.
관리 ID의 이점은 다음과 같습니다.
- Azure 시스템 관리형 X509 인증서 공개 키 암호화 인증
- 클라이언트 비밀 대신 X509 인증서를 사용하는 Microsoft Entra 보안.
- Azure는 관리 ID 리소스와 연결된 모든 인증서를 관리하고 갱신합니다.
- 관리 ID를 사용하면 Azure Key Vault와 같은 보호된 비밀 저장소 서비스가 필요 없기 때문에 자격 증명 관리가 간소화됩니다.
Azure 이외의 리소스에서 디먼 호스트
Azure 환경에서 실행하는 경우에만 관리 ID를 사용할 수 있습니다. 따라서 디먼 애플리케이션의 Microsoft Entra 애플리케이션 등록을 통해 서비스 주체를 구성해야 합니다.
새 애플리케이션 등록 만들기
애플리케이션 등록을 이미 만든 경우 위임된 API 권한 할당으로 이동합니다.
새 애플리케이션 등록을 만들려면 다음을 수행합니다.
Azure Portal에 로그인합니다.
Microsoft Entra ID를 선택합니다.
왼쪽 창의 관리에서 앱 등록을 선택합니다.
+ 새 등록 탭을 선택합니다.
이름을 입력하고 계정 유형 지원을 선택합니다.
등록을 선택합니다.
위임된 API 사용 할당
위임된 API 권한을 Azure Maps에 할당하려면 다음을 수행합니다.
아직 로그인하지 않은 경우 Azure Portal에 로그인합니다.
Microsoft Entra ID를 선택합니다.
왼쪽 창의 관리에서 앱 등록을 선택합니다.
애플리케이션을 선택합니다.
왼쪽 창의 관리에서 API 권한을 선택합니다.
권한 추가를 선택합니다.
내 조직에서 사용하는 API 탭을 선택합니다.
검색 상자에 Azure Maps를 입력합니다.
Azure Maps를 선택합니다.
Azure Maps 액세스 확인란을 선택합니다.
권한 추가를 선택합니다.
클라이언트 암호 만들기 또는 인증서 구성
애플리케이션에 서버 또는 애플리케이션 기반 인증을 구현할 때 다음 두 가지 옵션 중 하나를 선택할 수 있습니다.
- 공개 키 인증서를 업로드합니다.
- 클라이언트 암호를 만듭니다.
공개 키 인증서 업로드
공개 키 인증서를 업로드하려면 다음을 수행합니다.
왼쪽 창의 관리에서 인증서 및 비밀을 선택합니다.
인증서 업로드를 선택합니다.
텍스트 상자 오른쪽에서 파일 아이콘을 선택합니다.
.crt, .cer 또는 .pem 파일을 선택한 다음, 추가를 선택합니다.
클라이언트 암호 만들기
클라이언트 암호를 만들려면 다음을 수행합니다.
왼쪽 창의 관리에서 인증서 및 비밀을 선택합니다.
+ 새 클라이언트 암호를 선택합니다.
클라이언트 암호에 대한 설명을 입력합니다.
추가를 선택합니다.
비밀을 복사하여 Azure Key Vault와 같은 서비스에 안전하게 저장합니다. 이 문서의 관리 ID를 사용하여 토큰 요청 섹션에서 이 비밀을 사용하게 됩니다.
Important
인증서 또는 비밀을 안전하게 저장하려면 Azure Key Vault 개발자 가이드를 참조하세요. 이 비밀을 사용하여 Microsoft Entra ID에서 토큰을 가져옵니다.
사용자에게 Azure Maps에 대한 역할 기반 액세스 권한 부여
Microsoft Entra 그룹 또는 보안 주체를 하나 이상의 Azure Maps 역할 정의에 할당하여 Azure RBAC(Azure 역할 기반 액세스 제어)를 부여할 수 있습니다.
Azure Maps에 대한 사용 가능한 Azure 역할 정의를 보려면 기본 제공 Azure Maps 역할 정의 보기를 참조하세요.
만든 관리 ID 또는 서비스 주체에 사용 가능한 Azure Maps 역할을 할당하는 방법에 대한 자세한 단계는 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.
Azure Maps 앱 및 대규모 사용자의 리소스 액세스를 효율적으로 관리하려면 Microsoft Entra 그룹을 참조하세요.
Important
사용자가 애플리케이션에 인증할 수 있으려면 먼저 Microsoft Entra ID에서 사용자를 만들어야 합니다. 자세한 내용은 Microsoft Entra ID를 사용한 사용자 추가 및 삭제를 참조하세요.
사용자를 위해 대규모 디렉터리를 효과적으로 관리하는 방법에 대해 알아보려면 Microsoft Entra ID를 참조하세요.
Warning
Azure Maps 기본 제공 역할 정의는 많은 Azure Maps REST API에 강력한 액세스 권한을 부여합니다. API 액세스를 최소한으로 제한하려면 사용자 지정 역할 정의 만들기를 참조하고 시스템 할당 ID를 사용자 지정 역할 정의에 할당합니다. 이렇게 하면 애플리케이션에서 Azure Maps에 액세스하는 데 필요한 최소 권한을 사용할 수 있습니다.
관리 ID를 사용하여 토큰 요청
호스팅 리소스의 관리 ID가 구성되면 Azure SDK 또는 REST API를 사용하여 Azure Maps 토큰을 획득할 수 있습니다. 액세스 토큰을 획득하는 방법을 알아보려면 액세스 토큰 획득을 참조하세요.
애플리케이션 등록을 사용하여 토큰 요청
앱을 등록하고 Azure Maps와 연결한 후에는 액세스 토큰을 요청해야 합니다.
액세스 토큰을 획득하려면 다음을 수행합니다.
아직 로그인하지 않은 경우 Azure Portal에 로그인합니다.
Microsoft Entra ID를 선택합니다.
왼쪽 창의 관리에서 앱 등록을 선택합니다.
애플리케이션을 선택합니다.
[개요] 페이지가 표시됩니다. 애플리케이션(클라이언트) ID 및 디렉터리(테넌트) ID를 복사합니다.
이 문서에서는 bruno 애플리케이션을 사용하여 토큰 요청을 만들지만 다른 API 개발 환경을 사용할 수 있습니다.
브루노 앱을 열고 NEW REQUEST를 선택하여 요청을 만듭니다.
새 요청 창에서 형식을 HTTP로 설정합니다. POST 토큰 요청과 같은 요청의 이름을 입력합니다.
URL 드롭다운 목록에서 GET HTTP 메서드를 선택한 다음, 다음 URL을 입력합니다.
https://login.microsoftonline.com/{Tenant-ID}/oauth2/v2.0/token?response_type=token&grant_type=client_credentials&client_id={Client-ID}&client_secret={Client-Secret}&scope=https://atlas.microsoft.com/.default
참고 항목
다음을
{Tenant-ID}
디렉터리(테넌트) ID 사용{Client-ID}
애플리케이션(클라이언트) ID 사용{Client-Secret}
클라이언트 암호를 사용합니다.
실행 단추 선택
다음 JSON 응답이 표시됩니다.
{
"token_type": "Bearer",
"expires_in": 86399,
"ext_expires_in": 86399,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRHJPRFhFSzFq..."
}
인증 흐름에 대한 자세한 내용은 Microsoft ID 플랫폼의 OAuth 2.0 클라이언트 자격 증명 흐름을 참조하세요.
다음 단계
보다 자세한 예제는 다음을 참조하세요.
Azure Maps 계정에 대한 API 사용 현황 메트릭을 확인하는 방법을 알아봅니다.
Microsoft Entra ID를 Azure Maps와 통합하는 방법을 보여 주는 샘플을 살펴봅니다.