다음을 통해 공유


Azure Queue Storage에서 암호 없는 연결을 사용하도록 애플리케이션 마이그레이션

Azure 서비스에 대한 애플리케이션 요청은 계정 액세스 키 또는 암호 없는 연결과 같은 구성을 사용하여 인증되어야 합니다. 그러나 가능한 경우 애플리케이션에서 암호 없는 연결에 대한 우선 순위를 지정해야 합니다. 암호 또는 비밀 키를 사용하는 기존의 인증 방법은 보안 위험과 복잡성을 야기합니다. 암호 없는 연결로 이동하는 이점에 대해 자세히 알아보려면 Azure 서비스에 대한 암호 없는 연결 허브를 방문하세요.

다음 자습서에서는 암호 없는 연결을 사용하여 연결하도록 기존 애플리케이션을 마이그레이션하는 방법을 설명합니다. 이러한 동일한 마이그레이션 단계는 액세스 키, 연결 문자열 또는 다른 비밀 기반 접근 방식을 사용하는지 여부에 관계없이 적용되어야 합니다.

로컬 개발 환경 구성

로컬 및 Azure 호스팅 환경 모두에서 작동하도록 암호 없는 연결을 구성할 수 있습니다. 이 섹션에서는 개별 사용자가 로컬 개발을 위해 Azure Storage Queues에 인증할 수 있도록 구성을 적용합니다.

사용자 역할 할당하기

로컬로 개발하는 경우 Queue Storage 데이터에 액세스하는 사용자 계정에 올바른 권한이 있는지 확인합니다. 큐 데이터를 읽고 쓰려면 스토리지 큐 데이터 기여자 역할이 필요합니다. 이 역할을 자신에게 할당하려면 사용자 액세스 관리자 역할 또는 Microsoft.Authorization/roleAssignments/write 작업을 포함하는 다른 역할이 필요합니다. Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 사용자에게 Azure RBAC 역할을 할당할 수 있습니다. 범위 개요 페이지에서 역할 할당에 사용할 수 있는 범위에 대해 자세히 알아봅니다.

다음 예제에서는 스토리지 큐 데이터 기여자 역할을 할당합니다. 이 역할은 스토리지 계정의 큐 데이터에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.

  1. Azure Portal에서 기본 검색 창 또는 왼쪽 탐색 영역을 사용하여 스토리지 계정을 찾습니다.

  2. 스토리지 계정 개요 페이지의 왼쪽 메뉴에서 액세스 제어(IAM)를 선택합니다.

  3. 액세스 제어(IAM) 페이지에서 역할 할당 탭을 선택합니다.

  4. 위쪽 메뉴에서 + 추가를 선택한 다음, 드롭다운 메뉴에서 역할 할당 추가를 선택합니다.

    역할을 할당하는 방법을 보여 주는 스크린샷

  5. 검색 상자를 사용하여 결과를 원하는 역할로 필터링합니다. 이 예에서는 스토리지 큐 데이터 기여자를 검색하고, 일치하는 결과를 선택한 후 다음을 선택합니다.

  6. 다음에 대한 액세스 할당 아래에서 사용자, 그룹 또는 서비스 주체를 선택한 다음, + 멤버 선택을 선택합니다.

  7. 대화 상자에서 Microsoft Entra 사용자 이름(일반적으로 user@domain 이메일 주소)을 검색한 다음, 대화 상자 하단에서 선택을 선택합니다.

  8. 검토 + 할당을 선택하여 최종 페이지로 이동한 다음, 검토 + 할당을 다시 선택하여 프로세스를 완료합니다.

Important

대부분의 경우 Azure에서 역할 할당이 전파되는 데 1~2분이 걸리지만 드문 경우이지만 최대 8분이 걸릴 수 있습니다. 코드를 처음 실행할 때 인증 오류가 발생하면 잠시 기다렸다가 다시 시도하세요.

로컬로 Azure에 로그인

로컬 개발의 경우 역할을 할당한 것과 동일한 Microsoft Entra 계정을 사용하여 인증되었는지 확인합니다. Azure CLI 또는 Azure PowerShell과 같은 인기 있는 개발 도구를 통해 인증할 수 있습니다. 인증할 수 있는 개발 도구는 언어에 따라 다릅니다.

다음 명령을 사용하여 Azure CLI를 통해 Azure에 로그인합니다.

az login

암호 없는 연결을 사용하도록 애플리케이션 코드 업데이트

다음 에코시스템 각각에 대한 Azure ID 클라이언트 라이브러리는 Azure에 대한 암호 없는 인증을 처리하는 DefaultAzureCredential 클래스를 제공합니다.

DefaultAzureCredential은 다중 인증 방법을 지원합니다. 사용할 메서드는 런타임 시 결정됩니다. 이 방법을 사용하면 앱에서 환경별 코드를 구현하지 않고도 다양한 환경(로컬 및 프로덕션)에서 다양한 인증 방법을 사용할 수 있습니다. DefaultAzureCredential이 자격 증명을 찾는 순서 및 위치는 이전의 링크를 참조하세요.

  1. .NET 애플리케이션에서 DefaultAzureCredential을 사용하려면 Azure.Identity 패키지를 설치합니다.

    dotnet add package Azure.Identity
    
  2. 파일 맨 위에 다음 코드를 추가합니다.

    using Azure.Identity;
    
  3. Azure Queue Storage에 연결할 QueueClient 개체를 만드는 코드의 위치를 식별합니다. 코드를 다음 예제와 일치하도록 업데이트합니다.

    DefaultAzureCredential credential = new();
    
    QueueClient queueClient = new(
         new Uri($"https://{storageAccountName}.queue.core.windows.net/{queueName}"),
         new DefaultAzureCredential());
    
  1. QueueClient 개체의 URI에서 스토리지 계정 이름을 업데이트해야 합니다. Azure Portal의 개요 페이지에서 스토리지 계정 이름을 찾을 수 있습니다.

    스토리지 계정 이름을 찾는 방법을 보여 주는 스크린샷

로컬에서 앱 실행하기

이러한 코드가 변경되면 애플리케이션을 로컬로 실행합니다. 새 구성에서 Azure CLI, Visual Studio 또는 IntelliJ와 같은 로컬 자격 증명을 선택해야 합니다. Azure에서 사용자에게 할당한 역할을 통해 앱에서 Azure 서비스에 로컬로 연결할 수 있습니다.

Azure 호스팅 환경 구성

애플리케이션이 암호 없는 연결을 사용하도록 구성되고 로컬로 실행되면 동일한 코드가 Azure에 배포된 후 Azure 서비스에 인증될 수 있습니다. 다음 섹션에서는 관리 ID를 사용하여 Azure Queue Storage에 연결하도록 배포된 애플리케이션을 구성하는 방법을 설명합니다. 관리 ID는 Microsoft Entra 인증을 지원하는 리소스에 연결할 때 애플리케이션이 사용할 수 있도록 Microsoft Entra ID에서 자동으로 관리 ID를 제공합니다. 관리 ID에 대해 자세히 알아보세요.

관리 ID 만들기

사용자가 할당한 관리 ID는 Azure Portal 또는 Azure CLI를 사용하여 만들 수 있습니다. 애플리케이션에서 ID를 사용하여 다른 서비스에 인증합니다.

  1. Azure Portal의 위쪽에서 관리 ID를 검색합니다. 관리 ID 결과를 선택합니다.
  2. 관리 ID 개요 페이지의 위쪽에서 + 만들기를 선택합니다.
  3. 기본 사항 탭에서 다음 값을 입력합니다.
    • 구독: 원하는 구독을 선택합니다.
    • 리소스 그룹: 원하는 리소스 그룹을 선택합니다.
    • 지역: 자신의 위치 근처 지역을 선택합니다.
    • 이름: 인식할 수 있는 ID 이름(예: MigrationIdentity)을 입력합니다.
  4. 페이지 아래쪽에서 검토 + 만들기를 선택합니다.
  5. 유효성 검사가 완료되면 만들기를 선택합니다. Azure에서 사용자가 할당한 ID를 새로 만듭니다.

리소스가 만들어지면 리소스로 이동을 선택하여 관리 ID의 세부 정보를 확인합니다.

사용자가 할당한 관리 ID를 만드는 방법을 보여주는 스크린샷.

관리 ID를 웹앱과 연결

만든 관리 ID를 사용하도록 웹앱을 구성해야 합니다. Azure Portal 또는 Azure CLI를 사용하여 ID를 앱에 할당합니다.

Azure Portal에서 다음 단계를 완료하여 ID를 앱과 연결합니다. 이러한 동일한 단계가 적용되는 Azure 서비스는 다음과 같습니다.

  • Azure Spring Apps
  • Azure Container Apps
  • Azure 가상 머신
  • Azure Kubernetes Service
  1. 웹앱의 개요 페이지로 이동합니다.

  2. 왼쪽 탐색 영역에서 ID를 선택합니다.

  3. ID 페이지에서 사용자 할당 탭으로 전환합니다.

  4. + 추가를 선택하여 사용자가 할당한 관리 ID 추가 플라이아웃을 엽니다.

  5. 이전에 ID를 만드는 데 사용한 구독을 선택합니다.

  6. 이름으로 MigrationIdentity를 검색하고 검색 결과에서 선택합니다.

  7. 추가를 선택하여 ID를 앱과 연결합니다.

    사용자가 할당한 ID를 만드는 방법을 보여주는 스크린샷.

관리 ID에 역할 할당

다음으로, 스토리지 계정에 액세스하기 위해 권한을 만든 관리 ID에 부여해야 합니다. 로컬 개발 사용자에게 수행한 것과 마찬가지로 역할을 관리 ID에 할당하여 권한을 부여합니다.

  1. 스토리지 계정 개요 페이지로 이동하여 왼쪽 탐색 영역에서 액세스 제어(IAM)를 선택합니다.

  2. 역할 할당 추가를 선택합니다.

    역할을 관리 ID에 추가하는 방법을 보여 주는 스크린샷

  3. 역할 검색 상자에서 큐에 대한 데이터 작업을 관리하는 데 사용되는 일반적인 역할인 스토리지 큐 데이터 기여자를 검색합니다. 사용 사례에 적합한 역할을 할당할 수 있습니다. 목록에서 스토리지 큐 데이터 기여자를 선택하고, 다음을 선택합니다.

  4. 역할 할당 추가 화면에서 다음에 대한 액세스 할당 옵션에 대해 관리 ID를 선택합니다. 그런 다음, + 멤버 선택을 선택합니다.

  5. 플라이아웃에서 이름으로 만든 관리 ID를 검색하고 결과에서 선택합니다. 선택을 선택하여 플라이아웃 메뉴를 닫습니다.

    할당된 관리 ID를 선택하는 방법을 보여 주는 스크린샷

  6. 검토 + 할당을 선택하여 역할 할당을 완료할 수 있을 때까지 다음을 몇 번 선택합니다.

애플리케이션 코드 업데이트

Azure에 배포할 때 만든 특정 관리 ID를 찾도록 애플리케이션 코드를 구성해야 합니다. 일부 시나리오에서는 앱에 대한 관리 ID를 명시적으로 설정하면 다른 환경 ID가 실수로 검색되어 자동으로 사용되지 않도록 방지할 수도 있습니다.

  1. 관리 ID 개요 페이지에서 클라이언트 ID 값을 클립보드에 복사합니다.

  2. 다음 언어별 변경 내용을 적용합니다.

    DefaultAzureCredentialOptions 개체를 만들고 DefaultAzureCredential에 전달합니다. ManagedIdentityClientId 속성을 클라이언트 ID로 설정합니다.

    DefaultAzureCredential credential = new(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = managedIdentityClientId
        });
    
  3. 구성 업데이트를 적용하기 위해 이 변경을 수행한 후 코드를 Azure에 다시 배포합니다.

앱 테스트

업데이트된 코드가 배포되면 브라우저에서 호스트된 애플리케이션으로 이동합니다. 앱에서 스토리지 계정에 성공적으로 연결할 수 있어야 합니다. 역할 할당이 Azure 환경을 통해 전파되는 데 몇 분 정도 걸릴 수 있습니다. 이제 개발자가 애플리케이션 자체에서 비밀을 관리하지 않고도 애플리케이션이 로컬 및 프로덕션 환경 모두에서 실행되도록 구성되었습니다.

다음 단계

이 자습서에서는 애플리케이션을 암호 없는 연결로 마이그레이션하는 방법을 알아보았습니다.

다음 리소스를 참조하여 이 문서에서 설명하는 개념을 자세히 살펴볼 수 있습니다.