편집

다음을 통해 공유


Azure IoT Hub를 사용하여 Azure Storage 계정에 파일을 비공개로 업로드

Azure IoT Hub
Azure Storage
Azure Firewall
Azure Virtual Network
Azure Application Gateway

솔루션 아이디어

이 문서에서는 솔루션 아이디어를 설명합니다. 클라우드 설계자는 이 지침을 사용하여 이 아키텍처의 일반적인 구현을 위한 주요 구성 요소를 시각화할 수 있습니다. 이 문서를 시작점으로 사용하여 워크로드의 특정 요구 사항에 맞는 잘 설계된 솔루션을 디자인할 수 있습니다.

이 문서에서는 프라이빗 네트워크를 사용하여 Azure Storage 계정에 파일을 업로드하는 방법을 설명합니다.

일반적인 Azure IoT 배포의 경우 IoT 클라이언트 디바이스는 파일을 업로드하기 위해 Storage 계정과 직접 통신해야 합니다. IoT 클라이언트 디바이스는 일반적으로 서로 다른 위치에 배포되며 프라이빗 네트워크의 일부가 아니므로 공용 인터넷을 통해 연결됩니다. 이러한 디바이스를 프라이빗 네트워크에 통합할 수 없으므로 Storage 계정에 들어오는 인터넷 트래픽을 허용해야 합니다.

그러나 더 엄격한 네트워크 세분화 요구 사항이 있는 경우 프라이빗 네트워크 내에서 Storage 계정에 대한 액세스를 제한할 수 있습니다. 이 솔루션은 Storage 계정으로의 직접 인터넷 트래픽을 차단하므로 Storage 계정은 인바운드 Azure 애플리케이션 게이트웨이 인스턴스를 통과하는 트래픽만 허용합니다. 허브-스포크 네트워크 토폴로 지를 구현하는 경우 Azure Firewall은 일반적으로 추가 보안 계층을 제공하는 트래픽을 검사해야 합니다.

아키텍처

Azure IoT Hub 프라이빗 파일 업로드 아키텍처를 보여 주는 다이어그램

이 아키텍처의 Visio 파일을 다운로드합니다.

워크플로

다음 워크플로는 이전 다이어그램에 해당합니다.

  1. 허브-스포크 네트워크 토폴로지에는 스포크라고도 하는 각 리소스 가상 네트워크에 피어링되는 허브 가상 네트워크가 있습니다. 모든 트래픽은 트래픽 검사를 위해 Azure Firewall을 통과합니다.

  2. Azure Blob Storage 계정은 공용 인터넷 액세스를 거부합니다. 다른 가상 네트워크의 연결만 허용합니다. 리소스 인스턴스 규칙을 사용하면 선택한 Azure IoT Hub 서비스가 관리 ID를 통해 연결할 수 있습니다. Blob Storage 계정은 데이터 평면 액세스를 위한 Azure RBAC(역할 기반 액세스 제어)만 지원합니다.

  3. 애플리케이션 게이트웨이에는 사용자 지정 DNS(도메인 이름 시스템)가 있으며 TLS(전송 계층 보안) 트래픽을 종료합니다. 가상 네트워크 내에 상주합니다. 이 가상 네트워크는 Blob Storage 계정의 프라이빗 링크에서 사용하는 가상 네트워크와 피어링됩니다. 허브 가상 네트워크를 통한 강제 터널은 연결을 설정합니다.

  4. IoT Hub SDK를 사용하는 IoT 클라이언트 디바이스는 IoT Hub에 파일 업로드를 위해 SAS(공유 액세스 서명) URI를 요청합니다. IoT 클라이언트 디바이스는 공용 인터넷을 통해 요청을 보냅니다.

  5. IoT Hub는 디바이스에 대한 이 요청을 처리합니다. 사용자 위임 키 요청에 대한 Storage Blob 데이터 기여자 권한이 있는 관리 ID 인증을 통해 Blob Storage 계정에 직접 연결합니다.

    IoT Hub는 Blob Storage 계정에 대한 사용자 위임 키를 요청합니다. 수명이 짧은 SAS 토큰은 Blob 컨테이너의 요청된 Blob에 대한 디바이스 읽기-쓰기 권한을 부여합니다.

  6. IoT Hub는 상관 관계 ID와 함께 공용 Blob Storage 계정 URI 및 SAS 토큰을 IoT 클라이언트 디바이스에 보냅니다.

  7. IoT 클라이언트 디바이스에는 공용 Blob Storage URI를 사용자 지정 도메인(예: 디바이스 쌍)으로 바꾸는 논리가 있습니다. IoT 디바이스는 표준 Blob Storage SDK를 사용하여 사용자 지정 Blob Storage DNS를 통해 파일을 업로드합니다.

  8. Application Gateway는 클라이언트 디바이스에서 HTTP POST를 수신하고 Azure Private Link를 통해 Blob Storage 계정으로 보냅니다.

  9. 파일 업로드가 완료되면 IoT 클라이언트 디바이스는 Azure IoT SDK를 사용하여 IoT Hub에 알립니다.

    IoT 클라이언트 디바이스는 알림이 구성된 경우 IoT Hub가 백 엔드 서비스에 파일 업로드 알림을 트리거할 수 있도록 파일 업로드 상태를 업데이트합니다. 또한 클라이언트 디바이스는 IoT Hub에서 파일 업로드와 연결된 리소스를 해제합니다.

구성 요소

  • Application Gateway 는 매우 안전하고 확장 가능하며 고가용성 프런트 엔드를 빌드하는 데 사용할 수 있는 PaaS(Platform as a Service) 관리형 솔루션입니다. 이 아키텍처에서 Application Gateway는 들어오는 인터넷 HTTPS 트래픽을 처리하고, TLS 종료를 적용하고, Blob Storage 계정과 TLS를 협상하고, 프라이빗 네트워크를 통해 Blob Storage 계정으로 트래픽을 전달합니다.

  • Azure Firewall 은 Azure Virtual Network 리소스에 대한 보호를 제공합니다. 이 아키텍처에서 Azure Firewall은 경계 네트워크와 스포크 네트워크 간의 트래픽을 필터링하고 라우팅합니다.

  • IoT Hub 는 IoT 애플리케이션과 관리하는 디바이스 간의 양방향 통신을 위한 중앙 메시지 허브 역할을 하는 PaaS 관리형 솔루션입니다. 이 아키텍처에서 IoT Hub는 IoT 클라이언트 디바이스가 제어 및 데이터 평면 작업을 위해 연결하는 중앙 엔드포인트입니다.

  • Private Link 는 Microsoft 네트워크에서 데이터를 유지하면서 Azure 플랫폼에서 호스트되는 서비스에 대한 프라이빗 액세스를 제공합니다. 이 아키텍처에서 Private Link는 Application Gateway와 Blob Storage 계정 간에 프라이빗 통신을 제공합니다.

  • Storage 는 내구성이 뛰어나고 고가용성이며 확장성이 뛰어난 클라우드 스토리지 솔루션을 제공합니다. 여기에는 개체, 파일, 디스크, 큐 및 테이블 스토리지 기능이 포함되어 있습니다. 이 아키텍처에서 디바이스는 Blob Storage를 사용하여 IoT Hub가 사용자 위임을 통해 제공하는 단기 SAS 토큰을 통해 클라우드에 파일을 업로드합니다.

  • 프라이빗 DNS 영역은 사용자 지정 DNS 솔루션 없이 가상 네트워크에서 도메인 이름을 관리하고 확인할 수 있는 안정적이고 향상된 보안 DNS 서비스를 제공합니다. 이 아키텍처에서 프라이빗 DNS 영역은 Blob Storage에 대한 프라이빗 DNS 항목을 제공하여 스토리지 Blob 엔드포인트가 네트워크 내의 프라이빗 IP 엔드포인트로 변환되도록 합니다.

  • Virtual Network 는 Azure에서 프라이빗 네트워크의 기본 구성 요소입니다. 이 서비스를 사용하면 Azure 가상 머신과 같은 다양한 유형의 Azure 리소스가 보안 강화를 통해 서로, 인터넷 및 온-프레미스 네트워크와 통신할 수 있습니다. 이 아키텍처는 Virtual Network를 사용하여 Azure 기반 서비스에 대한 인터넷 퍼블릭 엔드포인트를 방지하는 프라이빗 네트워크 토폴로지 빌드를 사용합니다.

시나리오 정보

정기적인 배포의 경우 Azure IoT 클라이언트 디바이스는 파일을 업로드하기 위해 Storage 계정과 직접 통신해야 합니다. Storage 계정에서 인터넷 트래픽을 사용하지 않도록 설정하면 모든 클라이언트 IoT 클라이언트 디바이스에서 파일을 업로드할 수 없습니다. IoT Hub 파일 업로드 기능은 Blob에 대한 읽기/쓰기 권한이 있는 SAS 토큰을 생성하기 위한 사용자 위임 역할을 합니다. 파일 업로드 자체는 IoT Hub를 통과하지 않습니다. IoT 클라이언트 디바이스는 실제 업로드에 일반 Blob Storage SDK를 사용합니다.

이 시나리오에서는 IoT Hub와 Storage 계정 간의 통신이 여전히 퍼블릭 엔드포인트를 통과합니다. 이 예외는 리소스 인스턴스에 대한 스토리지 네트워킹 구성을 통해 가능합니다. Storage 계정에 대한 공용 인터넷 액세스를 사용하지 않도록 설정하고 Azure 서비스 및 특정 리소스 인스턴스가 Azure 백본을 통해 연결되도록 허용할 수 있습니다. 이 네트워크 경계는 Azure RBAC를 사용하여 데이터 평면 액세스를 제한하는 Microsoft Entra ID 기반 ID 경계와 쌍을 이릅니다.

이 아키텍처는 관리 ID를 IoT Hub에 할당합니다. 관리 ID에는 지정된 Storage 계정에 Storage Blob 데이터 기여자의 역할이 할당됩니다. 이 권한을 사용하여 IoT Hub는 SAS 토큰을 생성하기 위해 사용자 위임 키를 요청할 수 있습니다. IoT 클라이언트 디바이스는 파일 업로드 프로세스에 대한 SAS 토큰을 받습니다.

Application Gateway는 유일한 백 엔드로 구성된 Storage 계정의 프라이빗 엔드포인트로 이동하는 요청의 진입점 역할을 합니다. Application Gateway는 공용 IP 주소를 사용합니다. 공용 IP 주소를 A 레코드 또는 CNAME 레코드에 매핑하도록 사용자 지정 DNS 공급자를 구성할 수 있습니다.

많은 Azure PaaS 서비스에 프라이빗 엔드포인트를 사용하기 위한 내부 보안 요구 사항이 있는 경우 이 시나리오를 구현하여 더 짧은 유효성 검사 주기를 제공하여 프로덕션 환경에서 IoT 솔루션을 배포할 수 있습니다.

잠재적인 사용 사례

이 아키텍처는 공개적으로 노출되지 않는 Storage 계정과 통신해야 하는 디바이스를 사용하는 모든 시나리오에 적용할 수 있습니다.

예를 들어 산업 자동화 공급업체는 관리형 연결된 에지 컨트롤러 및 센서를 제공합니다. 이러한 센서는 공용 인터넷을 통해 Azure 클라우드와 통신해야 하지만 공급업체의 보안 팀은 스토리지 계정에 공용 인터넷 액세스를 거부해야 합니다. 이 아키텍처는 이 요구 사항을 충족합니다.

대안

Azure Firewall 트래픽 검사를 포함하는 허브-스포크 네트워크 토폴로지를 필요로 하지 않는 경우 이 접근 방식의 이점을 활용하기 위해 간소화된 네트워킹 토폴로지를 구현할 수 있습니다. Application Gateway, Private Link 및 프라이빗 DNS 영역을 수용하기 위해 고유한 서브넷이 있는 단일 가상 네트워크를 사용할 수 있습니다. 스토리지 계정 및 IoT Hub는 원래 아키텍처와 동일한 구성을 사용할 수 있습니다.

간소화된 아키텍처의 이점은 복잡성과 비용을 줄이는 것입니다. 허브-스포크 토폴로지의 특정 비즈니스 또는 엔터프라이즈 요구 사항이 없는 경우 간소화된 아키텍처를 사용하여 Storage 계정에서 공용 인터넷 엔드포인트를 제거합니다. 또한 이 방법은 IoT Hub 파일 업로드 기능을 사용하는 IoT 애플리케이션이 올바르게 작동하는지 확인하는 데 도움이 됩니다.

유사한 아키텍처 를 배포하는 샘플은 프라이빗 엔드포인트를 통해 스토리지에 IoT Hub 파일 업로드 설정을 참조하세요. 이 샘플에서는 시뮬레이션된 IoT 클라이언트 디바이스를 배포하고 디바이스 쌍을 사용하여 Storage 계정의 사용자 지정 도메인 이름을 바꿉니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

주요 작성자:

기타 기여자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계

IoT Hub를 사용하여 파일을 업로드하는 방법을 알아봅니다.