다음을 통해 공유


가상 네트워크에 대한 Azure IoT Hub DPS(Device Provisioning Service) 지원

이 문서에서는 DPS를 사용하여 IoT Hub를 사용하여 프로비전하는 IoT 디바이스에 대한 가상 네트워크 연결 패턴을 소개합니다. 이 패턴은 고객 소유 Azure 가상 네트워크 내의 디바이스, DPS 및 IoT Hub 간에 프라이빗 연결을 제공합니다.

DPS가 가상 네트워크로 구성된 대부분의 시나리오에서 IoT Hub는 동일한 가상 네트워크에서도 구성됩니다. IoT Hub에 대한 가상 네트워크 지원 및 구성에 대한 자세한 내용은 Azure Private Link를 사용하여 가상 네트워크에 대한 IoT Hub 지원을 참조하세요.

소개

기본적으로 DPS 호스트 이름은 인터넷을 통해 공개적으로 라우팅 가능한 IP 주소를 사용하여 공용 엔드포인트에 매핑됩니다. 이 퍼블릭 엔드포인트는 모든 고객에게 표시됩니다. 광역 네트워크 및 온-프레미스 네트워크를 통해 IoT 디바이스는 퍼블릭 엔드포인트에 액세스하려고 시도할 수 있습니다.

여러 가지 이유로 고객은 DPS와 같은 Azure 리소스에 대한 연결을 제한하려고 할 수 있습니다. 이러한 이유는 다음과 같습니다.

  • 공용 인터넷을 통해 연결 노출을 방지합니다. IoT Hub 및 DPS 리소스에 대한 네트워크 수준 격리를 통해 더 많은 보안 계층을 도입하여 노출을 줄일 수 있습니다.

  • 온-프레미스 네트워크 자산에서 프라이빗 연결 환경을 사용하도록 설정하여 데이터 및 트래픽이 Azure 백본 네트워크로 직접 전송되도록 합니다.

  • 중요한 온-프레미스 네트워크에서 반출 공격을 방지합니다.

  • 프라이빗 엔드포인트를 사용하여 설정된 Azure 전체 연결 패턴에 따라 수행합니다.

연결을 제한하는 일반적인 방법은 DPS IP 필터 규칙프라이빗 엔드포인트를 사용한 가상 네트워킹을 포함합니다. 이 문서의 목표는 프라이빗 엔드포인트를 사용하는 DPS에 대한 가상 네트워킹 접근 방식을 설명하는 것입니다.

온-프레미스 네트워크에서 작동하는 디바이스는 VPN(가상 사설망) 또는 ExpressRoute 프라이빗 피어링을 사용하여 Azure의 가상 네트워크에 연결하고 프라이빗 엔드포인트를 통해 DPS 리소스에 액세스할 수 있습니다.

프라이빗 엔드포인트는 Azure 리소스에 액세스할 수 있는 고객 소유 가상 네트워크 내에 할당된 개인 IP 주소입니다. DPS 리소스에 대한 프라이빗 엔드포인트를 사용하면 가상 네트워크 내에서 작동하는 디바이스가 공용 엔드포인트에 대한 트래픽을 허용하지 않고 DPS 리소스에서 프로비저닝을 요청하도록 허용할 수 있습니다. 각 DPS 리소스는 여러 프라이빗 엔드포인트를 지원할 수 있으며, 각 엔드포인트는 다른 지역의 가상 네트워크에 있을 수 있습니다.

필수 조건

계속하기 전에 다음 필수 구성 요소가 충족되는지 확인합니다.

프라이빗 엔드포인트 제한 사항

프라이빗 엔드포인트를 사용하는 경우 DPS에 대한 다음과 같은 현재 제한 사항에 유의하세요.

  • DPS 리소스와 연결된 IoT Hub가 서로 다른 클라우드에 있는 경우 프라이빗 엔드포인트가 작동하지 않습니다. 예를 들어 Azure Government 및 글로벌 Azure입니다.

  • DPS의 프라이빗 엔드포인트는 공용 지역에서만 지원되는 Azure Private Link를 사용합니다. 자세한 내용은 Azure Private Link 가용성을 참조하세요.

  • 현재 Azure Functions for DPS를 사용하는 사용자 지정 할당 정책은 Azure 함수가 가상 네트워크 및 프라이빗 엔드포인트로 잠긴 경우 작동하지 않습니다.

  • 현재 DPS 가상 네트워크 지원은 DPS로의 데이터 수신 전용입니다. DPS에서 IoT Hub로의 트래픽인 데이터 송신은 전용 가상 네트워크 대신 내부 서비스 간 메커니즘을 사용합니다. DPS와 IoT Hub 간의 전체 가상 네트워크 기반 송신 잠금에 대한 지원은 현재 사용할 수 없습니다.

  • 가장 낮은 대기 시간 할당 정책은 대기 시간이 가장 낮은 IoT Hub에 디바이스를 할당하는 데 사용됩니다. 이 할당 정책은 가상 네트워크 환경에서 신뢰할 수 없습니다.

  • 하나 이상의 프라이빗 엔드포인트를 사용하도록 설정하려면 일반적으로 DPS 인스턴스에 대한 공용 액세스를 사용하지 않도록 설정 해야 합니다. 공용 액세스를 사용하지 않도록 설정하면 더 이상 Azure Portal을 사용하여 등록을 관리할 수 없습니다. 대신 DPS 인스턴스에 구성된 하나 이상의 가상 네트워크/프라이빗 엔드포인트 내의 컴퓨터에서 Azure CLI, PowerShell 또는 서비스 API를 사용하여 등록을 관리할 수 있습니다.

  • 프라이빗 엔드포인트를 사용하는 경우 가용성 영역을 지원하는 지역 중 하나에 DPS를 배포하는 것이 좋습니다. 그렇지 않으면 프라이빗 엔드포인트가 사용하도록 설정된 DPS 인스턴스는 가동 중단 중에 가용성이 저하될 수 있습니다.

비고

데이터 상주 고려 사항:

DPS는 전역 디바이스 엔드포인트 (global.azure-devices-provisioning.net)를 제공합니다. 그러나 전역 엔드포인트를 사용하는 경우 DPS 인스턴스가 처음 만들어진 지역 외부로 데이터가 리디렉션될 수 있습니다. 초기 DPS 지역 내에서 데이터 상주를 보장하려면 프라이빗 엔드포인트를 사용합니다.

프라이빗 엔드포인트 설정

프라이빗 엔드포인트를 설정하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 DPS 리소스로 이동합니다.

  2. 서비스 메뉴의 설정에서 네트워킹 탭을 선택합니다.

  3. 작업 창에서 프라이빗 액세스 탭을 선택한 다음 + 프라이빗 엔드포인트 만들기를 선택합니다.

    Azure Portal에서 DPS 인스턴스에 대한 새 프라이빗 엔드포인트 추가를 보여 주는 스크린샷

  4. 프라이빗 엔드포인트 만들기 페이지의 기본 사항 탭에서 다음 표에 언급된 정보를 입력합니다.

    프라이빗 엔드포인트 만들기 페이지의 기본 사항 탭을 보여 주는 스크린샷

    분야 가치
    Subscription 프라이빗 엔드포인트를 포함하도록 원하는 Azure 구독을 선택합니다.
    리소스 그룹 프라이빗 엔드포인트를 포함할 리소스 그룹을 선택하거나 만듭니다.
    이름 프라이빗 엔드포인트에 대한 이름을 입력합니다.
    네트워크 인터페이스 이름 원하는 경우 프라이빗 엔드포인트의 네트워크 인터페이스 이름을 입력합니다.
    지역 프라이빗 엔드포인트의 지역을 선택합니다. 선택한 지역은 가상 네트워크를 포함하는 지역과 동일해야 하지만 DPS 리소스와 동일할 필요는 없습니다.

    다음: 리소스를 선택하여 프라이빗 엔드포인트가 가리키는 리소스를 구성합니다.

  5. 프라이빗 엔드포인트 만들기 페이지의 리소스 탭에서 다음 표에 언급된 정보를 입력합니다.

    프라이빗 엔드포인트 만들기 페이지의 리소스 탭을 보여 주는 스크린샷.

    분야 가치
    Subscription 아직 선택되지 않은 경우 프라이빗 엔드포인트가 가리키는 DPS 리소스가 포함된 Azure 구독을 선택합니다.
    리소스 종류 아직 선택되지 않은 경우 Microsoft.Devices/ProvisioningServices를 선택합니다.
    Resource 아직 선택되지 않은 경우 프라이빗 엔드포인트가 매핑하는 DPS 리소스를 선택합니다.
    대상 하위 리소스 iotDps를 선택합니다.

    팁 (조언)

    리소스 ID 또는 별칭 설정으로 Azure 리소스에 연결에 대한 정보는 이 문서의 프라이빗 엔드포인트 요청 섹션에서 제공합니다.

    다음: 가상 네트워크를 선택하여 프라이빗 엔드포인트에 대한 가상 네트워크를 구성합니다.

  6. 프라이빗 엔드포인트 만들기 페이지의 Virtual Network 탭에서 가상 네트워크 및 서브넷을 선택하여 프라이빗 엔드포인트를 만듭니다.

    프라이빗 엔드포인트 만들기 페이지의 Virtual Network 탭을 보여 주는 스크린샷.

    다음: DNS를 선택하여 프라이빗 엔드포인트에 필요한 프라이빗 DNS 통합 옵션을 선택합니다.

  7. 프라이빗 엔드포인트 만들기 페이지의 DNS 탭에서 프라이빗 엔드포인트에 필요한 프라이빗 DNS 통합 옵션을 선택합니다.

    프라이빗 엔드포인트 만들기 페이지의 DNS 탭을 보여 주는 스크린샷

    다음: 태그를 선택하고 필요에 따라 리소스에 대한 태그를 제공합니다.

  8. 다음: 검토 + 만들기를 선택한 다음 만들기를 선택하여 프라이빗 엔드포인트 리소스를 만듭니다.

디바이스에서 프라이빗 엔드포인트 사용

디바이스 프로비저닝 코드와 함께 프라이빗 엔드포인트를 사용하려면 프로비전 코드가 Azure Portal에서 DPS 인스턴스의 개요 페이지에 표시된 대로 DPS 인스턴스에 대한 특정 서비스 엔드포인트를 사용해야 합니다. 서비스 엔드포인트에는 다음과 같은 형식이 있습니다.

<Your DPS Tenant Name>.azure-devices-provisioning.net

설명서 및 SDK에 설명된 대부분의 샘플 코드는 전역 디바이스 엔드포인트 (global.azure-devices-provisioning.net) 및 ID 범위를 사용하여 특정 DPS 인스턴스를 확인합니다. 프라이빗 엔드포인트를 사용하여 DPS 인스턴스에 연결할 때 전역 디바이스 엔드포인트 대신 서비스 엔드포인트를 사용하여 디바이스를 프로비전합니다.

예를 들어 Azure IoT C SDK의 프로비저닝 디바이스 클라이언트 샘플(pro_dev_client_sample)은 prov_dev_client_sample.c에서 global_prov_uri를 전역 프로비저닝 URI()로 사용하도록 설계되었습니다.

MU_DEFINE_ENUM_STRINGS_WITHOUT_INVALID(PROV_DEVICE_RESULT, PROV_DEVICE_RESULT_VALUE);
MU_DEFINE_ENUM_STRINGS_WITHOUT_INVALID(PROV_DEVICE_REG_STATUS, PROV_DEVICE_REG_STATUS_VALUES);

static const char* global_prov_uri = "global.azure-devices-provisioning.net";
static const char* id_scope = "[ID Scope]";
}

PROV_DEVICE_RESULT prov_device_result = PROV_DEVICE_RESULT_ERROR;
PROV_DEVICE_HANDLE prov_device_handle;
if ((prov_device_handle = Prov_Device_Create(global_prov_uri, id_scope, prov_transport)) == NULL)
{
    (void)printf("failed calling Prov_Device_Create\r\n");

프라이빗 엔드포인트와 함께 샘플을 사용하려면 이전 예제에서 강조 표시된 코드가 DPS 리소스에 대한 서비스 엔드포인트를 사용하도록 변경됩니다. 예를 들어 서비스 엔드포인트가 있는 mydps.azure-devices-provisioning.net경우 코드는 다음과 같습니다.

static const char* global_prov_uri = "global.azure-devices-provisioning.net";
static const char* service_uri = "mydps.azure-devices-provisioning.net";
static const char* id_scope = "[ID Scope]";
    PROV_DEVICE_RESULT prov_device_result = PROV_DEVICE_RESULT_ERROR;
    PROV_DEVICE_HANDLE prov_device_handle;
    if ((prov_device_handle = Prov_Device_Create(service_uri, id_scope, prov_transport)) == NULL)
    {
        (void)printf("failed calling Prov_Device_Create\r\n");
    }

프라이빗 엔드포인트 요청

리소스 ID로 DPS 인스턴스에 프라이빗 엔드포인트를 요청할 수 있습니다. 이 요청을 수행하려면 리소스 소유자가 리소스 ID를 제공해야 합니다.

  1. 리소스 ID는 다음 스크린샷과 같이 Azure Portal의 DPS 리소스에 대한 속성 페이지에 제공됩니다.

    Azure Portal에서 DPS 인스턴스의 속성 페이지를 보여 주는 스크린샷으로, DPS 인스턴스의 리소스 ID를 강조 표시합니다.

    주의

    리소스 ID에는 구독 ID가 포함되어 있습니다.

  2. 리소스 ID가 있으면 프라이빗 엔드포인트 만들기 페이지의 리소스 탭에서 프라이빗 엔드포인트를 3단계로 설정하는 단계를 따릅니다. 리소스 ID 또는 별칭을 사용하여 Azure 리소스에 연결을 선택하고 다음 표에 정보를 입력합니다.

    분야 가치
    리소스 ID 또는 별칭 DPS 리소스의 리소스 ID를 입력합니다.
    대상 하위 리소스 iotDps 입력
    요청 메시지 DPS 리소스 소유자에 대한 요청 메시지를 입력합니다.
    예를 들면 다음과 같습니다.
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    다음: 가상 네트워크를 선택하여 프라이빗 엔드포인트에 대한 가상 네트워크를 구성합니다.

  3. 프라이빗 엔드포인트 만들기 페이지의 Virtual Network 탭에서 가상 네트워크 및 서브넷을 선택하여 프라이빗 엔드포인트를 만듭니다.

    프라이빗 엔드포인트 만들기 페이지의 Virtual Network 탭을 보여 주는 스크린샷.

    다음: DNS를 선택하여 프라이빗 엔드포인트 요청에 필요한 프라이빗 DNS 통합 옵션을 선택합니다.

  4. 프라이빗 엔드포인트 만들기 페이지의 DNS 탭에서 프라이빗 엔드포인트 요청에 필요한 프라이빗 DNS 통합 옵션을 선택합니다.

    프라이빗 엔드포인트 만들기 페이지의 DNS 탭을 보여 주는 스크린샷

    다음: 태그를 선택하고 필요에 따라 리소스에 대한 태그를 제공합니다.

  5. 다음: 검토 + 만들기를 선택한 다음 만들기를 선택하여 프라이빗 엔드포인트 요청을 만듭니다.

  6. DPS 소유자는 Azure Portal에서 DPS 인스턴스의 네트워킹 페이지에 있는 프라이빗 엔드포인트 연결 목록에서 프라이빗 엔드포인트 요청을 확인합니다. 해당 페이지에서 소유자는 프라이빗 엔드포인트 요청을 승인 하거나 거부할 수 있습니다.

    프라이빗 엔드포인트 요청을 강조 표시하는 Azure Portal에서 DPS 인스턴스의 네트워킹 페이지를 보여 주는 스크린샷

프라이빗 엔드포인트 가격 책정

가격 책정에 대한 자세한 내용은 Azure Private Link 가격 책정을 참조하세요.

다음 단계

DPS 보안 기능에 대해 자세히 알아보세요.