Azure 서비스에 대한 애플리케이션 요청은 계정 액세스 키 또는 암호 없는 연결과 같은 구성을 사용하여 인증되어야 합니다. 그러나 가능한 경우 애플리케이션에서 암호 없는 연결에 대한 우선 순위를 지정해야 합니다. 암호 또는 비밀 키를 사용하는 기존의 인증 방법은 보안 위험과 복잡성을 야기합니다. 암호 없는 연결로 이동하는 이점에 대해 자세히 알아보려면 Azure 서비스에 대한 암호 없는 연결 허브를 방문하세요.
다음 자습서에서는 암호 없는 연결을 사용하여 연결하도록 기존 애플리케이션을 마이그레이션하는 방법을 설명합니다. 이러한 동일한 마이그레이션 단계는 액세스 키, 연결 문자열 또는 다른 비밀 기반 접근 방식을 사용하는지 여부에 관계없이 적용되어야 합니다.
로컬 개발 환경 구성
로컬 및 Azure 호스팅 환경 모두에서 작동하도록 암호 없는 연결을 구성할 수 있습니다. 이 섹션에서는 개별 사용자가 로컬 개발을 위해 Azure Event Hubs에 인증할 수 있도록 구성을 적용합니다.
사용자 역할 할당하기
로컬로 개발하는 경우 Azure Event Hubs에 액세스하는 사용자 계정에 올바른 권한이 있는지 확인합니다. 메시지 데이터를 읽고 쓰려면 Azure Event Hubs 데이터 수신자 및 Azure Event Hubs 데이터 보낸 사람 역할이 필요합니다. 이 역할을 자신에게 할당하려면 사용자 액세스 관리자 역할 또는 Microsoft.Authorization/roleAssignments/write 작업을 포함하는 다른 역할이 필요합니다. Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 사용자에게 Azure RBAC 역할을 할당할 수 있습니다. 범위 개요 페이지에서 역할 할당에 사용할 수 있는 범위에 대해 자세히 알아봅니다.
다음 예제에서는 Azure Event Hubs 데이터 보낸 사람 및 Azure Event Hubs 데이터 수신자 역할을 사용자 계정에 할당합니다. 이러한 역할은 이벤트 허브 메시지에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.
대부분의 경우 Azure에서 역할 할당이 전파되는 데 1~2분이 걸리지만 드문 경우이지만 최대 8분이 걸릴 수 있습니다. 코드를 처음 실행할 때 인증 오류가 발생하면 잠시 기다렸다가 다시 시도하세요.
로컬로 Azure에 로그인
로컬 개발의 경우 역할을 할당한 것과 동일한 Microsoft Entra 계정을 사용하여 인증되었는지 확인합니다. Azure CLI 또는 Azure PowerShell과 같은 인기 있는 개발 도구를 통해 인증할 수 있습니다. 인증할 수 있는 개발 도구는 언어에 따라 다릅니다.
DefaultAzureCredential은 다중 인증 방법을 지원합니다. 사용할 메서드는 런타임 시 결정됩니다. 이 방법을 사용하면 앱에서 환경별 코드를 구현하지 않고도 다양한 환경(로컬 및 프로덕션)에서 다양한 인증 방법을 사용할 수 있습니다. DefaultAzureCredential이 자격 증명을 찾는 순서 및 위치는 이전의 링크를 참조하세요.
EventHubProducerClient 또는 EventProcessorClient 개체의 URI에서 이벤트 허브 네임스페이스를 업데이트해야 합니다. Azure Portal의 개요 페이지에서 네임스페이스 이름을 찾을 수 있습니다.
로컬에서 앱 실행하기
이러한 코드가 변경되면 애플리케이션을 로컬로 실행합니다. 새 구성에서 Azure CLI, Visual Studio 또는 IntelliJ와 같은 로컬 자격 증명을 선택해야 합니다. Azure에서 사용자에게 할당한 역할을 통해 앱에서 Azure 서비스에 로컬로 연결할 수 있습니다.
Azure 호스팅 환경 구성
애플리케이션이 암호 없는 연결을 사용하도록 구성되고 로컬로 실행되면 동일한 코드가 Azure에 배포된 후 Azure 서비스에 인증될 수 있습니다. 다음 섹션에서는 관리 ID를 사용하여 Azure Event Hubs에 연결하도록 배포된 애플리케이션을 구성하는 방법을 설명합니다. 관리 ID는 Microsoft Entra 인증을 지원하는 리소스에 연결할 때 애플리케이션이 사용할 수 있도록 Microsoft Entra ID에서 자동으로 관리 ID를 제공합니다. 관리 ID에 대해 자세히 알아보세요.
az vm identity assign \
--resource-group <resource-group-name> \
--name <virtual-machine-name>
--identities <managed-identity-id>
az aks update 명령을 사용하여 관리 ID를 AKS(Azure Kubernetes Service)에 할당할 수 있습니다.
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-managed-identity \
--assign-identity <managed-identity-id> \
--assign-kubelet-identity <managed-identity-id>
서비스 커넥터를 통해 Azure CLI를 사용하여 Azure 컴퓨팅 호스팅 환경과 대상 서비스 간의 연결을 만들 수 있습니다. 서비스 커넥터 CLI 명령은 적절한 역할을 ID에 자동으로 할당합니다. 서비스 커넥터 및 지원되는 시나리오는 개요 페이지에서 자세히 알아볼 수 있습니다.
az identity show 명령을 사용하여 만든 관리 ID의 클라이언트 ID를 검색합니다. 나중에 사용할 수 있도록 값을 복사합니다.
az identity show \
--name MigrationIdentity \
--resource-group <your-resource-group> \
--query clientId
이벤트 허브 개요 페이지로 이동하여 왼쪽 탐색 영역에서 액세스 제어(IAM)를 선택합니다.
역할 할당 추가를 선택합니다.
역할 검색 상자에서 큐에 대한 데이터 작업을 관리하는 데 사용되는 일반적인 역할인 Azure Event Hubs 데이터 보낸 사람을 검색합니다. 사용 사례에 적합한 역할을 할당할 수 있습니다. 목록에서 Azure Event Hubs 데이터 보낸 사람을 선택하고 다음을 선택합니다.
역할 할당 추가 화면에서 다음에 대한 액세스 할당 옵션에 대해 관리 ID를 선택합니다. 그런 다음, + 멤버 선택을 선택합니다.
플라이아웃에서 이름으로 만든 관리 ID를 검색하고 결과에서 선택합니다. 선택을 선택하여 플라이아웃 메뉴를 닫습니다.
검토 + 할당을 선택하여 역할 할당을 완료할 수 있을 때까지 다음을 몇 번 선택합니다.
Azure Event Hub 데이터 수신자 역할에 대해 이러한 단계를 반복합니다.
Azure CLI를 사용하여 리소스 수준에서 역할을 할당하려면 먼저 az eventhubs eventhub show show 명령을 사용하여 리소스 ID를 검색해야 합니다. --query 매개 변수를 사용하여 출력 속성을 필터링할 수 있습니다.
az eventhubs eventhub show \
--resource-group '<your-resource-group-name>' \
--namespace-name '<your-event-hubs-namespace>' \
--name '<your-event-hub-name>' \
--query id
이전 명령의 출력 ID를 복사합니다. 그런 다음, Azure CLI의 az role assignment 명령을 사용하여 역할을 할당할 수 있습니다.
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Receiver" \
--scope "<your-resource-id>"
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Sender" \
--scope "<your-resource-id>"
서비스 커넥터를 사용하여 서비스를 연결한 경우 이 단계를 완료할 필요가 없습니다. 서비스 커넥터 CLI 명령을 실행할 때 필요한 역할 구성이 처리되었습니다.
애플리케이션 코드 업데이트
Azure에 배포할 때 만든 특정 관리 ID를 찾도록 애플리케이션 코드를 구성해야 합니다. 일부 시나리오에서는 앱에 대한 관리 ID를 명시적으로 설정하면 다른 환경 ID가 실수로 검색되어 자동으로 사용되지 않도록 방지할 수도 있습니다.
업데이트된 코드가 배포되면 브라우저에서 호스트된 애플리케이션으로 이동합니다. 앱에서 이벤트 허브에 성공적으로 연결할 수 있어야 합니다. 역할 할당이 Azure 환경을 통해 전파되는 데 몇 분 정도 걸릴 수 있습니다. 이제 개발자가 애플리케이션 자체에서 비밀을 관리하지 않고도 애플리케이션이 로컬 및 프로덕션 환경 모두에서 실행되도록 구성되었습니다.