이 문서에서는 Azure ADR(Device Registry) 통합 및 Microsoft 지원 X.509 인증서 관리를 사용하여 새 IoT Hub를 만드는 방법을 설명합니다.
중요합니다
ADR 통합 및 Microsoft 지원 X.509 인증서 관리를 사용하는 Azure IoT Hub는 공개 미리 보기 로 제공되며 프로덕션 워크로드에는 권장되지 않습니다. 자세한 내용은 FAQ: IoT Hub의 새로운 기능?을 참조하세요.
필수 조건
활성화된 Azure 구독. Azure 구독이 없는 경우 무료 계정을 만드세요.
Azure CLI가 설치되어 있지 않은 경우 단계에 따라 Azure CLI를 설치합니다.
IoT Hub에 대한 ADR 통합 및 인증서 관리 기능에 액세스하기 위해 미리 보기가 활성화된 Azure IoT CLI 확장을 설치합니다.
기존 Azure CLI 확장 설치를 확인합니다.
az extension list기존 azure-iot 설치를 제거합니다.
az extension remove --name azure-iot미리 보기가 사용하도록 설정된 인덱스에서 azure-iot 확장을 설치합니다.
az extension add --name azure-iot --allow-preview또는 GitHub 릴리스 페이지에서 .whl 파일을 다운로드하여 확장을 수동으로 설치합니다.
az extension add --upgrade --source https://github.com/Azure/azure-iot-cli-extension/releases/download/v0.30.0b1/azure_iot-0.30.0b1-py3-none-any.whl설치 후 azure-iot 확장 버전이 0.30.0b1보다 큰지 확인합니다.
az extension list
대상 범위 내에서 역할 할당을 수행할 수 있는 권한이 있는지 확인합니다. Azure에서 역할 할당을 수행하려면 적절한 범위에서 소유자 또는 사용자 액세스 관리자와 같은 권한 있는 역할이 필요합니다.
배포 방법 선택
인증서 관리를 사용하려면 IoT Hub, ADR 및 DPS(Device Provisioning Service)도 설정해야 합니다. 원하는 경우 인증서 관리를 사용하도록 설정하지 않고 ADR을 사용하여 IoT Hub만 구성할 수 있습니다.
ADR 통합 및 인증서 관리를 사용하여 IoT Hub를 설정하려면 Azure CLI 또는 설치 프로세스를 자동화하는 스크립트를 사용할 수 있습니다.
| 배포 방법 | Description |
|---|---|
| 페이지 맨 위에서 Azure CLI 선택 | Azure CLI를 사용하여 새 IoT Hub, DPS 인스턴스 및 ADR 네임스페이스를 만들고 필요한 모든 설정을 구성합니다. |
| 페이지 맨 위에 있는 PowerShell 스크립트 선택 | PowerShell 스크립트(Windows에만 해당)를 사용하여 새 IoT Hub, DPS 인스턴스 및 ADR 네임스페이스 만들기를 자동화하고 필요한 모든 설정을 구성합니다. |
개요
Azure CLI 명령을 사용하여 ADR 통합 및 인증서 관리를 사용하여 IoT Hub를 만듭니다.
이 문서의 설치 프로세스에는 다음 단계가 포함되어 있습니다.
- 리소스 그룹 만들기
- 필요한 앱 권한 구성
- 사용자 할당 관리 ID 만들기
- 시스템 할당 관리 ID를 사용하여 ADR 네임스페이스 만들기
- 해당 네임스페이스로 범위가 지정된 자격 증명(루트 CA) 및 정책(발급 CA) 만들기
- 연결된 네임스페이스 및 관리 ID를 사용하여 IoT Hub(미리 보기) 만들기
- 연결된 IoT Hub 및 네임스페이스를 사용하여 DPS 만들기
- 자격 증명 및 정책(CA 인증서)을 ADR 네임스페이스와 동기화
- 등록 그룹을 만들고 정책에 연결하여 인증서 프로비저닝을 사용하도록 설정
중요합니다
미리 보기 기간 동안 IoT Hub를 기반으로 ADR 통합 및 인증서 관리 기능을 사용하도록 설정된 IoT Hub를 무료로 사용할 수 있습니다. DPS(Device Provisioning Service)는 별도로 청구되며 미리 보기 제품에 포함되지 않습니다. DPS 가격 책정에 대한 자세한 내용은 Azure IoT Hub 가격 책정을 참조하세요.
환경 준비
Azure Device Registry를 사용하도록 환경을 준비하려면 다음 단계를 완료합니다.
터미널 창을 엽니다.
Azure 계정에 로그인하려면 다음을 실행
az login합니다.액세스 권한이 있는 모든 구독 및 테넌트 목록을 표시하려면 다음을 실행
az account list합니다.여러 Azure 구독에 액세스할 수 있는 경우 다음 명령을 실행하여 IoT 디바이스가 만들어지는 활성 구독을 설정합니다.
az account set --subscription "<your subscription name or ID>"현재 계정 세부 정보를 표시하려면 다음을 실행
az account show합니다. 명령의 출력에서 다음 값을 모두 복사하고 안전한 위치에 저장합니다.-
idGUID입니다. 이 값을 사용하여 구독 ID를 제공합니다. -
tenantIdGUID입니다. 이 값을 사용하여 테넌트 ID를 사용하여 사용 권한을 업데이트합니다.
-
리소스 그룹, 권한 및 관리 ID 구성
IoT 솔루션에 대한 리소스 그룹, 역할 및 권한을 만들려면 다음 단계를 완료합니다.
사용자 환경에 대한 리소스 그룹을 만듭니다.
az group create --name <RESOURCE_GROUP_NAME> --location <REGION>리소스 그룹 수준에서 IoT Hub에 기여자 역할을 할당합니다. IoT Hub의 주요 ID인
AppId값은 모든 허브 앱에서 동일한89d10474-74af-4874-99a7-c23c2f643083값입니다.az role assignment create --assignee "89d10474-74af-4874-99a7-c23c2f643083" --role "Contributor" --scope "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>"새 UAMI(사용자 할당 관리 ID)를 만듭니다.
az identity create --name <USER_IDENTITY> --resource-group <RESOURCE_GROUP_NAME> --location <REGION>관리 ID의 리소스 ID를 검색합니다. 역할을 할당하거나, 액세스 정책을 구성하거나, ID를 다른 리소스에 연결하려면 리소스 ID가 필요합니다.
UAMI_RESOURCE_ID=$(az identity show --name <USER_IDENTITY> --resource-group <RESOURCE_GROUP_NAME> --query id -o tsv)
새 ADR 네임스페이스 만들기
이 섹션에서는 시스템 할당 관리 ID를 사용하여 새 ADR 네임스페이스를 만듭니다. 이 프로세스는 네임스페이스에 대한 루트 CA 자격 증명 및 발급 CA 정책을 자동으로 생성합니다. 프로비전하는 동안 자격 증명 및 정책을 사용하여 디바이스 리프 인증서에 서명하는 방법에 대한 자세한 내용은 인증서 관리를 참조하세요.
비고
자격 증명은 선택 사항입니다.
--enable-credential-policy 및 --policy-name 플래그를 생략하여 관리 ID 없이 네임스페이스를 만들 수도 있습니다.
새 ADR 네임스페이스를 만듭니다. 네임스페이스는
name이름 중간에 소문자와 하이픈('-')만 포함할 수 있지만 시작이나 끝에는 포함될 수 없습니다. 예를 들어 "msft-namespace"라는 이름은 유효합니다.
이 명령은 이--enable-credential-policy네임스페이스에 대한 자격 증명(루트 CA) 및 기본 정책(발급 CA)을 만듭니다. 명령을 사용하여--policy-name이 정책의 이름을 구성할 수 있습니다. 기본적으로 정책은 30일의 유효 기간으로 인증서를 발급할 수 있습니다.az iot adr ns create --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> --location <REGION> --enable-credential-policy true --policy-name <POLICY_NAME>팁 (조언)
필요하면
--cert-subject및--cert-validity-days매개 변수를 추가하여 사용자 지정 정책을 만들 수 있습니다. 자세한 내용은 사용자 지정 정책 만들기를 참조하세요.비고
시스템 할당 관리 ID를 사용하여 ADR 네임스페이스를 만드는 데 최대 5분이 걸릴 수 있습니다.
시스템 할당 관리 ID 또는 보안 주체 ID가 있는 네임스페이스가 생성되었는지 확인합니다.
az iot adr ns show --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>명명된 자격 증명과 정책이 생성되었는지 확인합니다.
az iot adr ns credential show --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> az iot adr ns policy show --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> --name <POLICY_NAME>비고
정책 이름을 할당하지 않은 경우 이름이 "default"인 정책이 만들어집니다.
ADR 네임스페이스에 액세스하는 UAMI 역할 할당
이 섹션에서는 관리 ID에 Azure Device Registry 기여자 역할을 할당하고 네임스페이스로 범위를 지정합니다. 이 사용자 지정 역할은 ADR 네임스페이스 내의 IoT 디바이스에 대한 모든 권한을 허용합니다.
사용자 할당 관리 ID의 주체 ID를 검색합니다. ID에 역할을 할당하려면 이 ID가 필요합니다.
UAMI_PRINCIPAL_ID=$(az identity show --name <USER_IDENTITY> --resource-group <RESOURCE_GROUP> --query principalId -o tsv)ADR 네임스페이스의 리소스 ID를 검색합니다. 이 ID는 역할 할당의 범위로 사용됩니다.
NAMESPACE_RESOURCE_ID=$(az iot adr ns show --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)관리 ID에 Azure Device Registry 기여자 역할을 할당합니다. 이 역할은 관리 ID에 네임스페이스로 범위가 지정된 필요한 권한을 부여합니다.
az role assignment create --assignee $UAMI_PRINCIPAL_ID --role "a5c3590a-3a1a-4cd4-9648-ea0a32b15137" --scope $NAMESPACE_RESOURCE_ID
ADR 통합을 사용하여 IoT Hub 만들기
ADR 네임스페이스와 이전에 만든 UAMI에 연결된 새 IoT Hub를 만듭니다.
az iot hub create --name <HUB_NAME> --resource-group <RESOURCE_GROUP> --location <HUB_LOCATION> --sku GEN2 --mi-user-assigned $UAMI_RESOURCE_ID --ns-resource-id $NAMESPACE_RESOURCE_ID --ns-identity-id $UAMI_RESOURCE_ID중요합니다
IoT 허브는 DNS 엔드포인트로 공개적으로 검색될 수 있기 때문에 이름을 지정할 때 민감하거나 개인을 식별할 수 있는 정보는 입력하지 마십시오.
IoT Hub에 올바른 ID 및 ADR 속성이 구성되어 있는지 확인합니다.
az iot hub show --name <HUB_NAME> --resource-group <RESOURCE_GROUP> --query identity --output json
ADR 네임스페이스에 액세스하는 IoT Hub 역할 할당
ADR 네임스페이스의 관리 ID의 주체 ID를 검색합니다. 이 ID는 IoT Hub와 상호 작용할 수 있는 권한이 필요합니다.
ADR_PRINCIPAL_ID=$(az iot adr ns show --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP> --query identity.principalId -o tsv)IoT Hub의 리소스 ID를 검색합니다. 이 ID는 역할 할당의 범위로 사용됩니다.
HUB_RESOURCE_ID=$(az iot hub show --name <HUB_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)ADR ID에 "기여자" 역할을 할당합니다. 이렇게 하면 ADR 네임스페이스의 관리 ID 기여자에게 IoT Hub에 대한 액세스 권한이 부여됩니다. 이 역할은 리소스 관리를 비롯한 광범위한 액세스를 허용하지만 역할을 할당하지는 않습니다.
az role assignment create --assignee $ADR_PRINCIPAL_ID --role "Contributor" --scope $HUB_RESOURCE_IDADR ID에 "IoT Hub 레지스트리 기여자" 역할을 할당합니다. 이렇게 하면 IoT Hub에서 디바이스 ID를 관리할 수 있는 보다 구체적인 권한이 부여됩니다. 이는 ADR이 허브에서 디바이스를 등록하고 관리하는 데 필수적입니다.
az role assignment create --assignee $ADR_PRINCIPAL_ID --role "IoT Hub Registry Contributor" --scope $HUB_RESOURCE_ID
ADR 통합을 사용하여 Device Provisioning Service 인스턴스 만들기
이전 섹션에서 만든 ADR 네임스페이스에 연결된 새 DPS 인스턴스를 만듭니다. DPS 인스턴스는 ADR 네임스페이스와 동일한 지역에 있어야 합니다.
az iot dps create --name <DPS_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --mi-user-assigned $UAMI_RESOURCE_ID --ns-resource-id $NAMESPACE_RESOURCE_ID --ns-identity-id $UAMI_RESOURCE_IDDPS에 올바른 ID 및 ADR 속성이 구성되어 있는지 확인합니다.
az iot dps show --name <DPS_NAME> --resource-group <RESOURCE_GROUP> --query identity --output json
Device Provisioning Service 인스턴스에 IoT Hub 연결
IoT Hub를 DPS에 연결합니다.
az iot dps linked-hub create --dps-name <DPS_NAME> --resource-group <RESOURCE_GROUP> --hub-name <HUB_NAME>IoT Hub가 DPS에 대한 연결된 허브 목록에 표시되는지 확인합니다.
az iot dps linked-hub list --dps-name <DPS_NAME> --resource-group <RESOURCE_GROUP>
ADR 자격 증명 동기화 실행
자격 증명 및 정책을 IoT Hub에 동기화합니다. 이 단계는 IoT Hub가 CA 인증서를 등록하고 구성된 정책에서 발급한 리프 인증서를 신뢰하도록 합니다.
az iot adr ns credential sync --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP>
허브 CA 인증서 유효성 검사
IoT Hub가 CA 인증서를 등록했는지 확인합니다.
az iot hub certificate list --hub-name <HUB_NAME> --resource-group <RESOURCE_GROUP>
DPS에서 등록 만들기
리프 인증서를 사용하여 디바이스를 프로비전하려면 DPS에서 등록 그룹을 만들고 매개 변수를 사용하여 적절한 자격 증명 정책에 --credential-policy 할당합니다.
다음 명령은 기본적으로 대칭 키 증명을 사용하여 등록 그룹을 만듭니다.
비고
"default"와 다른 이름으로 정책을 만든 경우 매개 변수 뒤에서 --credential-policy 해당 정책 이름을 사용해야 합니다.
az iot dps enrollment-group create --dps-name <DPS_NAME> --resource-group <RESOURCE_GROUP> --enrollment-id <ENROLLMENT_ID> --credential-policy <POLICY_NAME>
이제 ADR 통합 및 인증서 관리를 사용하는 IoT Hub가 설정되고 사용할 준비가 되었습니다.
선택적 명령
다음 명령은 ADR 네임스페이스를 관리하고, 디바이스를 사용하지 않도록 설정하고, 사용자 지정 정책을 만들고, 더 이상 필요하지 않은 경우 리소스를 삭제하는 데 도움이 됩니다.
네임스페이스 관리
리소스 그룹의 모든 네임스페이스를 나열합니다.
az iot adr ns list --resource-group <RESOURCE_GROUP_NAME>특정 네임스페이스의 세부 정보를 표시합니다.
az iot adr ns show --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>네임스페이스의 모든 정책을 나열합니다.
az iot adr ns policy list --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>특정 정책의 세부 정보를 표시합니다.
az iot adr ns policy show --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> --name <POLICY_NAME>네임스페이스의 모든 자격 증명을 나열합니다.
az iot adr ns credential list --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>
디바이스 사용 안 함
IoT Hub의 모든 디바이스를 나열합니다.
az iot hub device-identity list --hub-name <HUB_NAME> --resource-group <RESOURCE_GROUP_NAME>상태를
disabled.로 업데이트하여 디바이스를 사용하지 않도록 설정합니다.<MY_DEVICE_ID>을 사용하지 않으려는 디바이스 ID로 바꾸세요.az iot hub device-identity update --hub-name <HUB_NAME> --resource-group <RESOURCE_GROUP_NAME> -d <MY_DEVICE_ID> --status disabled디바이스를 다시 실행하고 IoT Hub에 연결할 수 없는지 확인합니다.
사용자 지정 정책 만들기
명령을 사용하여 사용자 지정 정책을 만듭니다 az iot adr ns policy create . 다음 규칙에 따라 정책의 이름, 인증서 주체 및 유효 기간을 설정합니다.
- 정책
name값은 네임스페이스 내에서 고유해야 합니다. 이름이 이미 있는 정책을 만들려고 하면 오류 메시지가 표시됩니다. - 인증서 주체
cert-subject값은 네임스페이스의 모든 정책에서 고유해야 합니다. 제목이 이미 있는 정책을 만들려고 하면 오류 메시지가 표시됩니다. - 유효 기간
cert-validity-days값은 1일에서 30일 사이여야 합니다. 유효 기간이 이 범위를 벗어나는 정책을 만들려고 하면 오류 메시지가 표시됩니다.
다음 예제에서는 "CN=TestDevice"라는 제목과 유효 기간이 30일인 "custom-policy"라는 정책을 만듭니다.
az iot adr ns policy create --name "custom-policy" --namespace <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME> --cert-subject "CN=TestDevice" --cert-validity-days "30"
리소스 삭제
ADR 네임스페이스를 삭제하려면 먼저 네임스페이스에 연결된 IoT Hubs 및 DPS 인스턴스를 삭제해야 합니다.
az iot hub delete --name <HUB_NAME> --resource-group <RESOURCE_GROUP_NAME>
az iot adr ns delete --name <NAMESPACE_NAME> --resource-group <RESOURCE_GROUP_NAME>
az iot dps delete --name <DPS_NAME> --resource-group <RESOURCE_GROUP_NAME>
az identity delete --name <USER_IDENTITY> --resource-group <RESOURCE_GROUP_NAME>
개요
제공된 PowerShell 스크립트를 사용하여 Azure Device Registry 통합을 사용하여 IoT Hub의 설정을 자동화합니다. 스크립트는 필요한 리소스를 만들고 다음을 포함하여 함께 연결하는 데 필요한 모든 단계를 수행합니다.
- 리소스 그룹 만들기
- 필요한 앱 권한 구성
- 사용자 할당 관리 ID 만들기
- 시스템 할당 관리 ID를 사용하여 ADR 네임스페이스 만들기
- 해당 네임스페이스로 범위가 지정된 자격 증명(루트 CA) 및 정책(발급 CA) 만들기
- 연결된 네임스페이스 및 관리 ID를 사용하여 IoT Hub(미리 보기) 만들기
- 연결된 IoT Hub 및 네임스페이스를 사용하여 DPS 만들기
- 자격 증명 및 정책(CA 인증서)을 ADR 네임스페이스와 동기화
- 등록 그룹을 만들고 정책에 연결하여 인증서 프로비저닝을 사용하도록 설정
중요합니다
미리 보기 기간 동안 IoT Hub를 기반으로 ADR 통합 및 인증서 관리 기능을 사용하도록 설정된 IoT Hub를 무료로 사용할 수 있습니다. DPS(Device Provisioning Service)는 별도로 청구되며 미리 보기 제품에 포함되지 않습니다. DPS 가격 책정에 대한 자세한 내용은 Azure IoT Hub 가격 책정을 참조하세요.
환경 준비
- Windows용 PowerShell 7 을 다운로드합니다.
-
GitHub 리포지토리로 이동하고 스크립트 파일이 포함된
iothub-adr-certs-setup-preview.ps1폴더를 다운로드합니다.
스크립트 변수 사용자 지정
텍스트 편집기에서 스크립트 파일을 열고 원하는 구성에 맞게 다음 변수를 수정합니다.
-
TenantId: 테넌트 ID입니다. 터미널에서 실행az account show하여 이 값을 찾을 수 있습니다. -
SubscriptionId: 구독 ID입니다. 터미널에서 실행az account show하여 이 값을 찾을 수 있습니다. -
ResourceGroup: 리소스 그룹의 이름입니다. -
Location: 리소스를 만들려는 Azure 지역입니다. 지원되는 지역 섹션에서 미리 보기 기능에 사용할 수 있는 위치를 확인하세요. -
NamespaceName: 네임스페이스 이름은 이름 중간에 소문자와 하이픈('-')만 포함할 수 있지만 시작이나 끝에는 포함될 수 없습니다. 예를 들어 "msft-namespace"는 유효한 이름입니다. -
HubName: 허브 이름에는 소문자와 숫자만 포함될 수 있습니다. -
DpsName: Device Provisioning Service 인스턴스의 이름입니다. -
UserIdentity: 리소스에 대한 사용자 할당 관리 ID입니다. -
WorkingFolder: 스크립트가 있는 로컬 폴더입니다.
중요합니다
IoT 허브는 DNS 엔드포인트로 공개적으로 검색될 수 있기 때문에 이름을 지정할 때 민감하거나 개인을 식별할 수 있는 정보는 입력하지 마십시오.
대화형으로 스크립트 실행
스크립트를 열고 PowerShell 7 이상에서 관리자 권한으로 실행합니다. 스크립트가 포함된 폴더로 이동하여 실행
.\iothub-adr-certs-setup-preview.ps1합니다.실행 정책 문제가 발생하면
powershell -ExecutionPolicy Bypass -File .\iothub-adr-certs-setup-preview.ps1명령을 실행해 보세요.안내된 프롬프트를 따릅니다.
- 단계를 계속하려면
Enter를 누르십시오. -
s또는S을 눌러 단계를 건너뛰기 -
Ctrl+C을 눌러 중단
- 단계를 계속하려면
비고
ADR 네임스페이스, IoT Hub, DPS 및 기타 리소스를 만드는 데 각각 최대 5분이 걸릴 수 있습니다.
실행 모니터링 및 리소스 유효성 검사
경고가 발생하면 스크립트가 실행을 계속하고 명령이 0이 아닌 종료 코드를 반환하는 경우에만 중지됩니다. 콘솔에서 주의가 필요한 문제를 나타내는 빨간색 오류 메시지를 모니터링합니다.
스크립트가 완료되면 Azure Portal의 새 리소스 그룹을 방문하여 리소스 만들기의 유효성을 검사합니다. 생성된 리소스는 다음과 같습니다.
- IoT Hub 인스턴스
- DPS(Device Provisioning Service) 인스턴스
- ADR(Azure Device Registry) 네임스페이스
- UAMI(사용자 할당 관리 ID)
다음 단계
이 시점에서 ADR 통합 및 인증서 관리를 사용하는 IoT Hub가 설정되고 사용할 준비가 되었습니다. 이제 DPS(Device Provisioning Service) 인스턴스를 사용하여 허브에 IoT 디바이스 온보딩을 시작하고 설정한 정책 및 등록을 사용하여 IoT 디바이스를 안전하게 관리할 수 있습니다.
새 기능: 인증서 관리는 선택한 DPS 디바이스 SDK에서 지원됩니다. 이제 다음 SDK 샘플을 사용하여 Microsoft 지원 X.509 인증서 관리를 사용하여 디바이스를 온보딩할 수 있습니다.