Azure 호스팅된 앱을 다른 Azure 리소스에 인증하는 권장 방법은 관리 ID 사용하는 것입니다. 대부분의 Azure 서비스는 Azure App Service, Azure Container Apps 및 Azure Virtual Machines 호스트되는 앱을 포함하여 이 접근 방식을 지원합니다. 자세한 내용은 관리 ID를 지원하는 Azure 서비스 및 리소스 종류 참조하세요. 다양한 인증 기술 및 접근 방식에 대한 자세한 내용은 Azure ID 라이브러리 사용하여 Azure 서비스에 Java 앱 인증을 참조하세요.
다음 섹션에서는 다음에 대해 알아봅니다.
- 필수 관리 ID 개념입니다.
- 앱에 대한 사용자 할당 관리 ID를 만드는 방법입니다.
- 사용자가 할당한 관리 ID에 역할을 할당하는 방법입니다.
- 앱 코드에서 사용자 할당 관리 ID를 사용하여 인증하는 방법입니다.
필수 관리 ID 개념
관리 ID를 사용하면 앱이 비밀 키 또는 다른 애플리케이션 비밀을 사용하지 않고도 다른 Azure 리소스에 안전하게 연결할 수 있습니다. 내부적으로 Azure는 ID와 연결 권한이 있는 리소스를 추적합니다. Azure 이 정보를 사용하여 앱이 다른 Azure 리소스에 연결할 수 있도록 앱에 대한 Microsoft Entra 토큰을 자동으로 가져옵니다.
호스트된 앱을 구성할 때 고려해야 할 관리 ID에는 두 가지 유형이 있습니다.
- 시스템 할당 관리 ID는 Azure 리소스에서 직접 사용하도록 설정되며 수명 주기에 연결됩니다. 리소스가 삭제되면 Azure 자동으로 ID를 삭제합니다. 시스템 할당 ID는 관리 ID를 사용하는 최소한의 접근 방식을 제공합니다.
- 사용자 할당 관리 ID는 독립 실행형 Azure 리소스로 만들어지고 더 큰 유연성과 기능을 제공합니다. 동일한 ID와 권한을 공유해야 하는 여러 Azure 리소스와 관련된 솔루션에 적합합니다. 예를 들어 여러 가상 머신이 동일한 Azure 리소스 집합에 액세스해야 하는 경우 사용자 할당 관리 ID는 재사용성 및 최적화된 관리를 제공합니다.
팁 (조언)
관리 ID 모범 사례 권장 사항 문서에서 시스템 할당 및 사용자 할당 관리 ID를 선택하고 관리하는 방법에 대해 자세히 알아봅니다.
다음 섹션에서는 Azure 호스팅된 앱에 대해 사용자 할당 관리 ID를 사용하도록 설정하고 사용하는 단계를 설명합니다. 시스템 할당 관리 ID를 사용해야 하는 경우 시스템 할당 관리 ID를 사용하여 Azure에 호스팅된 Java 앱을 Azure 리소스에 인증하기를 참조하십시오.
사용자 할당 관리 ID 만들기
사용자 할당 관리 ID는 Azure 포털 또는 Azure CLI 사용하여 Azure 구독에서 독립 실행형 리소스로 만들어집니다. Azure CLI 명령은 Azure Cloud Shell 또는 Azure CLI 설치되어 있는 워크스테이션에서 실행할 수 있습니다.
Azure 포털의 기본 검색 창에 > 관리 ID를 입력하고 Services 섹션에서 일치하는 결과를 선택합니다.
관리 ID 페이지에서 +만들기를 선택합니다.
사용자 할당 관리 ID 만들기 페이지에서 사용자가 할당한 관리 ID에 대한 구독, 리소스 그룹 및 지역을 선택한 다음 이름을 입력합니다.
검토 + 만들기를 선택하여 입력을 검토하고 유효성을 검사합니다.
사용자 할당 관리형 ID를 만들려면 만들기을 선택합니다.
ID를 생성한 후, 리소스로 이동 을 선택합니다.
새 ID의 개요 페이지에서 나중에 애플리케이션 코드를 구성할 때 사용할 클라이언트 ID 값을 복사합니다.
앱에 관리 ID 할당
사용자 할당 관리 ID는 하나 이상의 Azure 리소스와 연결할 수 있습니다. 해당 ID를 사용하는 모든 리소스는 ID의 역할을 통해 적용된 권한을 얻습니다.
Azure 포털에서 앱 코드를 호스트하는 리소스(예: Azure App Service 또는 Azure Container Apps 인스턴스)로 이동합니다.
리소스의 개요 페이지에서 설정 확장하고 탐색에서 ID 선택합니다.
ID 페이지에서 사용자 할당 탭으로 전환합니다.
+ 추가를 선택하여 사용자 할당 관리 ID 추가 패널을 엽니다.
사용자 할당 관리 ID 추가 패널에서 구독 드롭다운을 사용하여 ID에 대한 검색 결과를 필터링합니다. 사용자 할당 관리 ID 검색 상자를 사용하여 앱을 호스트하는 Azure 리소스에 대해 사용하도록 설정한 사용자 할당 관리 ID를 찾습니다.
ID를 선택하고 패널 아래쪽에서 추가를 선택하여 계속합니다.
관리 ID에 역할 할당
다음으로 앱에 필요한 역할을 결정하고 관리 ID에 해당 역할을 할당합니다. 다음 범위에서 관리 ID에 역할을 할당할 수 있습니다.
- 리소스: 할당된 역할은 해당 특정 리소스에만 적용됩니다.
- 리소스 그룹: 할당된 역할은 리소스 그룹에 포함된 모든 리소스에 적용됩니다.
- 구독: 할당된 역할은 구독에 포함된 모든 리소스에 적용됩니다.
다음 예제에서는 많은 앱이 단일 리소스 그룹을 사용하여 모든 관련 Azure 리소스를 관리하므로 리소스 그룹 범위에서 역할을 할당하는 방법을 보여 줍니다.
사용자 할당 관리 ID가 있는 앱이 포함된 리소스 그룹의 개요 페이지로 이동합니다.
왼쪽 탐색 영역에서 액세스 제어(IAM) 선택합니다.
액세스 제어(IAM) 페이지에서 위쪽 메뉴에서 + 추가를 선택한 다음 역할 할당 추가 선택하여 역할 할당 추가 페이지로 이동합니다.
역할 할당 추가 페이지에는 ID에 역할을 할당하는 탭이 있는 다단계 워크플로가 표시됩니다. 초기 역할 탭에서 맨 위에 있는 검색 상자를 사용하여 ID에 할당할 역할을 찾습니다.
결과에서 역할을 선택한 다음 다음 선택하여 멤버 탭으로 이동합니다.
액세스 권한 할당 옵션에 대해 관리 ID 선택합니다.
멤버 옵션의 경우 + 멤버 선택 선택하여 관리 ID 선택 패널을 엽니다.
관리 ID 선택 패널에서 구독 및 관리 ID 드롭다운을 사용하여 ID에 대한 검색 결과를 필터링합니다. Select 검색 상자를 사용하여 앱을 호스트하는 Azure 리소스에 대해 사용하도록 설정한 사용자 할당 관리 ID를 찾습니다.
ID를 선택하고 패널 아래쪽에서 선택하여 계속합니다.
페이지 맨 아래에서 검토 및 할당을 선택합니다.
마지막 검토 + 할당 탭에서 검토 + 할당을 선택하여 워크플로를 완료합니다.
앱에서 Azure 서비스에 인증
Azure ID 라이브러리는 TokenCredential 구현으로 다른 자격 증명을 제공합니다. 각 구현은 다양한 시나리오와 Microsoft Entra 인증 흐름을 지원합니다. 사용자 할당 관리 ID의 경우 자격 증명을 구성할 때 ID의 클라이언트 ID, 리소스 ID 또는 개체 ID를 지정합니다.
코드 구현
pom.xml 파일에 azure-identity 종속성을 추가합니다.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
Azure SDK 클라이언트 라이브러리의 특수 클라이언트 클래스를 사용하여 Azure 서비스에 액세스합니다. 다음 코드 예제에서는 사용자 할당 관리 ID 인증에 대한 자격 증명을 구성하는 방법을 보여 줍니다.
DefaultAzureCredential 사용
DefaultAzureCredential Azure 호스팅 앱에 대한 자격 증명으로 사용합니다. 사용자 할당 관리 ID의 경우 다음 방법을 사용하여 클라이언트 ID를 managedIdentityClientId 구성합니다.
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
// Configure DefaultAzureCredential with the user-assigned managed identity's client ID
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.managedIdentityClientId("<user-assigned-managed-identity-client-id>")
.build();
// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://<your-key-vault-name>.vault.azure.net")
.credential(credential)
.buildClient();
ManagedIdentityCredential 사용
관리 ID 자격 증명을 명시적으로 사용하고 자격 증명 체인 조회를 피하려면 DefaultAzureCredential를 사용하지 말고, ManagedIdentityCredential를 직접 사용하십시오. 사용자가 할당한 관리 ID의 경우 클라이언트 ID, 리소스 ID 또는 개체 ID를 사용하여 ID를 지정할 수 있습니다.
클라이언트 ID를 사용하여 해당 ID를 사용하여 인증해야 하는 애플리케이션 또는 서비스를 구성할 때 관리 ID를 식별합니다.
다음 명령을 사용하여 사용자 할당 관리 ID에 할당된 클라이언트 ID를 검색합니다.
az identity show \
--resource-group <resource-group-name> \
--name <identity-name> \
--query clientId \
--output tsv
클라이언트 ID를 사용하여 ManagedIdentityCredential 구성합니다.
import com.azure.identity.ManagedIdentityCredential;
import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
// Specify the client ID of the user-assigned managed identity
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
.clientId("<user-assigned-managed-identity-client-id>")
.build();
// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://<your-key-vault-name>.vault.azure.net")
.credential(credential)
.buildClient();
다음 단계:
이 문서에서는 사용자 할당 관리 ID를 사용하는 인증에 대해 설명했습니다. 이 인증 형식은 Java 위해 Azure SDK 인증할 수 있는 여러 가지 방법 중 하나입니다. 다음 문서에서는 인증하는 다른 방법을 설명합니다.
- 시스템 할당 관리 ID를 사용하여 Azure에 호스팅된 Java 앱을 Azure 리소스에 인증합니다
- 개발자 계정을 사용하여 로컬 개발 중 Java 앱을 Azure 서비스에 인증하기
- 서비스 주체를 사용하여 로컬 개발 중에 Java 앱을 Azure 서비스에 인증합니다
Azure 호스팅된 애플리케이션 인증과 관련된 문제가 발생하는 경우 Azure 호스팅된 애플리케이션 인증 문제 해결 참조하세요.
인증을 마스터한 후 SDK에서 제공하는 로깅 기능에 대한 자세한 내용은 Java Azure SDK 로깅 구성을 참조하세요.