IoT 보안 기본 사항 - 5부: IoT 클라우드 서비스에 안전하게 연결
DigiKey 북미 편집자 제공
2020-07-02
편집자 주: IoT 장치의 확산에도 불구하고, 공격이 성공할 경우 회사 데이터와 개인 데이터가 손상될 수 있는 산업용 IoT(IIoT)와 핵심 응용 분야에서 보안 위협은 연결 장치를 채택하는 데 장벽이 되는 만큼, 이러한 장치를 보호하는 것은 지속적인 문제로 남아 있습니다. IoT 응용 제품을 보호하는 것이 까다로울 수도 있지만, 실제로 IoT 장치 보안은 하드웨어 보안 장치에서 지원하는 상대적으로 간단한 몇 가지 원칙으로 구축할 수 있습니다. 체계적인 보안 방법에 따라 문제를 해결할 수 있습니다. 여러 단원으로 구성된 이 시리즈에서는 개발자가 시작 단계부터 모범 사례를 따르도록 도와주는 실용적인 지침을 제공합니다. 1부에서는 보안 설계의 기반이 되는 암호화 알고리즘에 대해 설명합니다. 2부에서는 보안 IoT 설계에서 개인 키, 키 관리 및 보안 스토리지의 역할에 대해 설명합니다. 3부에서는 IoT 장치에 대한 다른 유형의 위협을 완화하기 위해 보안 프로세서를 기반으로 구축된 메커니즘을 살펴봅니다. 4부에서는 고급 프로세서에 보안 메커니즘을 적용하여 IoT 장치의 런타임 환경에서 공격을 완화하는 데 필요한 분리 상태를 보장하는 방법을 확인하고 보여줍니다. 본 5부에서는 이러한 장치를 IoT 클라우드 리소스에 연결하는 데 사용되는 높은 수준의 보안 조치를 통해 IoT 장치에서 IoT 보안을 지속하는 방법을 설명합니다.
사물 인터넷(IoT) 보안은 IoT 장치의 하드웨어 기반부터 실행 환경에 이르는 다양한 보호 계층에 따라 달라집니다. 위협은 모든 연결 장치에 존재하지만, 일반 IoT 응용 분야의 클라우드 연결 요구 사항으로 인해 IoT 장치와 클라우드 서비스 모두 새로운 공격에 노출될 수 있습니다. 위협을 완화하기 위해 IoT 클라우드 제공업체에서는 특정 보안 프로토콜 및 정책을 사용하며, 이를 잘못 사용할 경우 IoT 응용 제품을 취약하게 만들 수 있습니다. 개발자는 미리 구성된 개발 기판을 사용하여 주요 IoT 클라우드 서비스에서 연결을 인증하고 IoT 장치 및 클라우드 리소스 사용 권한을 부여하는 데 사용되는 보안 방법을 빠르게 체험해 볼 수 있습니다.
이 기사에서는 두 주요 클라우드 서비스인 Amazon Web Services(AWS)와 Microsoft Azure의 연결 요구 사항을 설명하고, 개발자가 다양한 벤더의 개발 키트 및 연결된 소프트웨어를 사용하여 이러한 서비스에 빠르게 연결할 수 있는 방법을 보여줍니다.
클라우드 서비스에서 IoT 포털의 역할
IoT 장치가 클라우드 서비스, 원격 호스트와 같은 리소스에 연결되면, IoT 장치뿐 아니라 IoT 네트워크 전체가 합법적인 서비스 또는 서버로 위장한 위협에 잠재적으로 노출될 수 있습니다. 마찬가지로, 클라우드 서비스는 클라우드 방어를 뚫기 위해 IoT 장치 트랜잭션을 모방하는 해커의 공격 위협에 직면합니다. IoT 장치와 클라우드 리소스를 모두 보호하기 위해 클라우드 서비스에서는 로그인 및 후속 승인에서 ID를 상호 인증하는 특정 보안 프로토콜을 사용하여 허용된 서비스 사용을 확인해야 합니다. 이러한 프로토콜은 IoT 장치와 클라우드 리소스 사이에 보안 포털을 제공하는 서비스에 일반적으로 포함되어 있습니다.
사용 가능한 다른 IoT 클라우드 서비스 플랫폼과 마찬가지로 AWS와 Azure는 IoT 장치에서 각 제공업체의 전체 클라우드 리소스(예: 가상 머신(VM) 및 SaaS(Software-as-a-Service) 제품)와 상호 작용하는 데 사용해야 하는 특정 진입 포털을 제공합니다. 기능적으로 유사한 메커니즘 및 기능을 사용하여 Azure IoT 허브와 AWS IoT는 해당 엔터프라이즈 클라우드 제품에 이 포털을 제공합니다.
최소한 이러한 IoT 포털에서는 각 제공업체의 소프트웨어 개발 키트(SDK)를 통해 구현되는 특정 인증 프로토콜을 사용하여 보안 연결을 구축합니다. AWS의 경우 장치 게이트웨이를 통한 상호 인증을 사용하여 IoT 장치에 연결합니다. 장치 게이트웨이에서는 장치 레지스트리에 보관된 정보를 사용하여 IoT 장치를 다른 IoT 지원 서비스와 연결하여 AWS 서비스에 대한 액세스를 관리하는 데 필요한 고유한 장치 ID, 보안 자격 증명 및 다른 메타데이터를 저장합니다(그림 1). Azure에서는 ID 레지스트리가 비슷한 역할을 합니다.
그림 1: 다른 클라우드 제공업체와 마찬가지로 AWS는 IoT 장치와 엔터프라이즈 클라우드 서비스 간 트랜잭션의 보안과 효율성을 개선하기 위해 설계된 특수 서비스를 개발자에게 제공합니다. (이미지 출처: Amazon Web Services)
AWS IoT 및 Azure IoT는 각 물리적 IoT 장치에 연결된 가상 장치에서 상태 정보를 유지하는 서비스를 제공합니다. AWS IoT에서는 장치 섀도가 이 기능을 제공하고, Azure IoT에서는 장치 트윈스가 유사한 기능을 제공합니다.
보안 포털의 이 개념은 AWS Greengrass, Azure IoT Edge와 같은 IoT 에지 서비스로 확장됩니다. 이러한 에지 서비스 제품은 일부 클라우드 서비스 및 기능을 로컬 네트워크에 제공하며, 대규모 배포에서 에지 시스템은 IoT 장치 및 시스템에 물리적으로 더 가깝게 배치됩니다. 산업 자동화 등에서 개발자는 Azure IoT Edge와 같은 서비스를 사용하여 응용 제품 비즈니스 논리를 구현하거나, 대기 시간을 줄이는 데 필요한 다른 기능을 제공하거나, 로컬 작업자에게 서비스를 제공할 수 있습니다(그림 2).
그림 2: 에지 컴퓨팅을 지원하기 위해 클라우드 서비스 제공업체는 일부 Azure IoT 클라우드 서비스를 IoT 응용 제품과 연결된 물리적 장치에 가깝게 배치하는 Microsoft Azure IoT Edge와 같은 특수 서비스를 제공합니다. (이미지 출처: Microsoft Azure)
IoT 포털 연결을 위한 요구 사항 처리
에지 시스템을 통해 연결하든 제공업체의 IoT 서비스를 통해 직접 연결하든 상관없이 IoT 장치는 일반적으로 제공업체의 IoT 포털을 통해 연결하고 제공업체의 클라우드 서비스를 사용하려면 일련의 요구 사항을 충족해야 합니다. 세부적으로는 차이가 있지만 IoT 장치는 최소한 개인 키, X.509 인증서 또는 기타 보안 토큰과 같은 일부 항목을 제공해야 합니다. 키, 인증서 또는 토큰은 IoT 포털에서 장치 클라우드 연결 시퀀스의 인증 단계 중에 IoT 장치의 ID 증명 또는 증빙을 제공합니다. 또한 IoT 클라우드 서비스는 일반적으로 IoT 장치와 클라우드 서비스 간의 상호 작용에 대한 액세스 권한을 정의하는 데 사용되는 정책 사양이 필요합니다.
다른 엔터프라이즈 컴퓨팅 요구 사항과 마찬가지로 인증을 위한 증명 정보와 액세스 관리를 위한 정책 정보는 AWS IoT 및 Azure IoT와 같은 주요 IoT 클라우드 서비스에서 지정한 특정 형식과 절차에 따라 제공되어야 합니다. 이러한 서비스는 최소한 인증서 기반 인증을 지원하지만, 다른 형태의 증명도 지원합니다. 예를 들어 개발자는 AWS IoT용 JSON 웹 토큰(JWT)을 기반으로 하는 토큰 기반 인증 방법 또는 Azure IoT용 공유 액세스 서명(SAS) 토큰을 사용할 수 있습니다.
앞서 언급한 대로 이러한 서비스에서는 레지스트리를 사용하여 각 IoT 장치에 대한 메타데이터를 보관합니다. 보안 및 기타 정보와 함께 이러한 레지스트리에는 IoT 장치를 연결하기 위해 정의해야 하는 액세스 권한 정책이 저장됩니다. 클라우드 서비스마다 다른 방식으로 지정되지만 이러한 정책 정의에서는 다양한 통신 채널 및 엔티티에 대한 액세스 권한을 설명합니다. 예를 들어 간단한 AWS IoT 액세스 권한 정책에서는 JSON 형식을 사용하여 AWS IoT 장치 레지스트리에 특정 "사물" 이름이 있는 IoT 장치는 연결된 동일한 사물 이름을 가진 채널에서만 메시지를 연결하여 게시할 수 있음을 나타낼 수 있습니다(목록 1).
복사
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action":["iot:Publish"],
"Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}"]
},
{
"Effect": "Allow",
"Action": ["iot:Connect"],
"Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
}
]
}
목록 1: 개발자는 JSON 형식을 사용하여 IoT 장치에 대한 AWS IoT 액세스 권한 정책을 설명합니다. (코드 출처: AWS)
클라우드 지원 개발 키트
클라우드 제공업체들이 이러한 형식과 절차에 대한 세부 사양을 제공하지만, 제공업체의 지원 포럼은 일반적으로 인증 및 액세스 관리를 방해하는 간단하지만 필수 세부 정보에 낚인 개발자들의 질문으로 채워져 있습니다. 심지어 보안의 측면에서 증명을 의도치 않게 오용하거나 액세스 정책을 불완전하게 정의할 경우 IoT 장치, 네트워크 및 응용 제품이 공격에 노출될 수 있습니다. 기성 개발 기판과 동반된 소프트웨어 패키지의 출시로 개발자는 벤더 제공 예시를 활용하여 IoT 클라우드에 빠르게 연결함으로써 이러한 연결 절차를 신속하게 진행할 수 있습니다. 예를 들어 Espressif Systems의 ESP32-Azure IoT 키트 또는 Seeed Technology의 AZ3166 IoT 개발자 키트에는 Microsoft 클라우드에 쉽게 연결하도록 설계된 Azure 인증 기판이 포함되어 있습니다.
Microsoft는 지원되는 환경 키트에 대한 인증 및 액세스 자격 증명을 비롯하여 전체적인 단계별 데모를 제공합니다. 예를 들어 AZ3166 기판을 사용하는 개발자는 기판의 버튼을 눌러 로컬 Wi-Fi 네트워크 연결을 시작합니다. 연결되면 Microsoft Visual Studio 코드용 Azure IoT 도구 확장 팩에 포함된 Azure IoT Device Workbench를 사용하여 Azure IoT 허브로 개발, 디버깅 및 상호 작용할 수 있습니다. 이 도구 세트와 샘플 코드 패키지를 사용하여 개발자는 Azure IoT 허브에서 IoT 장치용 개체를 생성하고 제공된 파일을 사용하여 IoT 기판을 Azure IoT 허브에 연결하는 데 필요한 자격 증명과 기타 메타데이터로 연결된 ID 레지스트리를 구축할 수 있습니다(그림 3).
그림 3: Microsoft Azure IoT Device Workbench에 제공된 샘플 코드와 자격 증명을 사용하면 개발자가 Seeed Technology AZ3166 IoT 개발자 키트를 Azure IoT 허브에 연결하기 위한 프로비저닝을 완료할 수 있습니다. (이미지 출처: Microsoft Azure)
Azure IoT Device Workbench에서는 개발자가 샘플 코드로 AZ3166 기판을 빠르게 로드한 후 기판의 온도 및 습도 센서에서 Azure IoT 허브로 측정값 전송을 시작할 수 있도록 추가 지원 소프트웨어와 메타데이터를 제공합니다.
장치를 IoT 클라우드와 연결하려면 IoT 클라우드에서 물리적 IoT 장치에 대한 표현을 생성하고 연결된 레지스트리를 프로비저닝하는 데 포함되는 단계만 수행하면 됩니다. 하지만 Azure IoT 허브에서 클라우드 서비스를 활용하려면 액세스 권한 정책이 필요합니다. AZ3166 센서에서 들어오는 장치-클라우드 메시지를 모니터링하기 위해 개발자는 Azure 공유 액세스 정책 화면을 사용하여 필요한 액세스 권한을 빠르게 활성화하도록 설계된 사전 구축된 정책을 선택할 수 있습니다(그림 4).
그림 4: 개발자는 사전 구축된 정책을 사용하여 Seeed Technology AZ3166 IoT 개발 키트의 센서 데이터로 Azure 클라우드 서비스 사용을 쉽게 인증할 수 있습니다. (이미지 출처: Microsoft Azure)
AWS IoT로 작업할 경우 개발자는 Microchip Technology의 AT88CKECC-AWS-XSTK-B 제로 터치 프로비저닝 키트와 같은 개발 키트 및 함께 제공되는 소프트웨어를 선택하여 클라우드 연결을 빠르게 평가할 수 있습니다. 이전 Microchip 제로 터치 프로비저닝 키트의 이 업데이트된 버전은 인증 자격 증명이 미리 로드되어 제공됩니다. 키트에 제공된 추가 스크립트를 사용하여 개발자는 개인 키와 인증서를 처리하지 않고 기판을 AWS IoT에 빠르게 연결할 수 있습니다("Take the Zero-Touch Approach to Securely Lock Down an IoT Device(제로 터치 방식을 사용하여 IoT 장치를 안전하게 잠그기)" 참조).
Renesas의 RTK5RX65N0S01000BE RX65N 클라우드 키트 및 Infineon Technologies의 KITXMC48IOTAWSWIFITOBO1 AWS IoT 키트를 비롯한 다른 개발 키트는 Amazon FreeRTOS를 기반으로 하여 응용 제품을 빠르게 개발할 수 있도록 지원하여 AWS IoT 연결 지원을 확장합니다. AWS는 AWS IoT에 연결하여 AWS 서비스를 사용하는 데 필요한 기판을 등록하고, 인증 자격 증명을 생성하고, 제공된 JSON 정책을 로드하기 위한 자세한 지침을 제공합니다.
대규모 IoT 배포를 위한 프로비저닝 간소화
위에서 설명한 것과 같은 개발 키트는 IoT 응용 제품의 시제품을 빠르게 제작하고 IoT 클라우드 서비스 연결 요구 사항을 탐구하는 데 효과적인 플랫폼 역할을 합니다. 하지만 개발자는 일반적으로 실제 응용 분야에서 IoT 장치 프로비저닝을 간소화하도록 설계된 고급 접근 방식을 선택해야 합니다. Azure IoT와 AWS IoT는 모두 대규모 배포에서 개별 장치 또는 많은 IoT 장치를 자동으로 프로비저닝할 수 있는 다양한 방법을 지원합니다.
예를 들어 AWS IoT를 사용하는 개발자는 인증서 프로비저닝에 부트스트랩 방법을 이용할 수 있습니다. 스마트 제품에는 새로운 인증서를 요청하고 액세스하는 데 필요한 최소 액세스 권한과 연결된 부트스트랩 인증서가 포함되어 있습니다(그림 5).
그림 5: AWS IoT는 IoT 장치에서 부트스트랩 인증서 프로비저닝 방법을 지원합니다. (이미지 출처: DigiKey, Amazon Web Services 자료 사용)
부트스트랩 인증서를 사용하여 장치에서 클라우드에 연결하고(그림 5의 "1"), 새 인증서를 요청하고("2"), AWS 서버리스 Lambda 함수에서 생성된 인증서의 URL을 수신하고("3"), AWS Simple Storage Services(S3) 버킷에서 인증서를 검색합니다("4"). 그런 다음 새 인증서로 장치에서 AWS IoT에 로그인하여("5") 일반 작업을 진행합니다.
AWS는 AWS Lambda 함수와 같은 실행 리소스를 사용하여 인증 토큰의 동적 프로비저닝을 지원하는 다른 클라우드 서비스를 제공합니다. 예를 들어 자동차 응용 분야에서는 사용 후 삭제되는 임시 연결을 사용할 수 있으며, 이 경우 토큰을 사용하는 것이 더 실용적이고 더 안전합니다. IoT 인증 및 승인용 AWS 모듈에서 토큰 요청을 승인하면 AWS STS(보안 토큰 서비스)에서 차량 시스템에 전달할 토큰을 생성합니다. 이러한 시스템에서는 이 토큰을 사용하여 AWS IAM(식별 및 액세스 관리) 서비스를 통해 검증해야 하는 AWS 서비스에 액세스할 수 있습니다(그림 6).
그림 6: 주요 클라우드 서비스 제공업체에서는 AWS STS(보안 토큰 서비스)에 보안 토큰을 동적으로 생성하는 이 공정과 같은 다른 형태의 인증용 증명을 지원합니다. (이미지 출처: Amazon Web Services)
AWS는 액세스 권한의 동적 할당을 위해 유사한 기능을 제공합니다. 여기서 다른 AWS Lambda 함수는 유효한 토큰과 연결된 일련의 정책을 할당합니다(그림 7).
그림 7: 개발자는 클라우드 서비스를 사용하여 액세스 권한을 동적으로 할당할 수 있으므로, 사용 후 삭제되는 임시 연결 또는 단기 작업을 포함하는 응용 분야에 특히 유용합니다. (이미지 출처: Amazon Web Services)
개발자는 다양한 IoT 클라우드 서비스를 활용하여 대규모 배포에서 프로비저닝을 더욱 효과적으로 처리할 수 있습니다. 예를 들어 AWS IoT는 앞서 설명한 부트스트랩 방법에 대한 대규모 배포 지원을 비롯한 플릿 프로비저닝 기능을 제공합니다. Azure IoT의 DPS(장치 프로비저닝 서비스)는 동일한 X.509 인증서 또는 SAS 토큰을 공유하는 대량의 IoT 장치 프로비저닝을 지원하는 그룹 등록 기능을 제공합니다.
보안에 대한 공유 책임
IoT 클라우드 제공업체는 IoT 응용 분야에 대한 엔드 투 엔드 보안을 개선하기 위한 많은 효과적인 방법을 제공합니다. 그럼에도 불구하고 IoT 개발자는 이러한 방법이 특정 IoT 응용 분야의 보안 요구 사항을 완전히 충족할 수 있다고 생각해서는 안 됩니다. 실제로 클라우드 서비스 제공업체는 AWS의 공유 책임 모델과 같은 특정 모델을 포함하는 IoT 응용 제품 보안에서 구체적인 역할과 책임을 신중하게 요약합니다(그림 8).
그림 8: 다른 주요 클라우드 제공업체와 마찬가지로 AWS는 클라우드 인프라와 고객 응용 제품을 모두 보호하기 위해 클라우드 사용자와 공유하는 책임을 설명합니다. (이미지 출처: Amazon Web Services)
AWS와 Microsoft Azure는 각각 리소스, 데이터 및 응용 제품을 보호하기 위한 제공업체의 자체 역할과 고객의 역할을 설명하는 공유 책임 문서를 제공합니다. Microsoft는 이러한 문서에서 공유 보안과 규정 준수 요구 사항 사이의 관계에 대한 개요를 제공합니다. 궁극적으로 클라우드 제공업체는 클라우드 보안에 대한 책임을 지고, 고객은 클라우드에서 사용되는 응용 제품, 데이터 및 리소스에 대한 책임을 집니다.
결론
IoT 응용 제품은 암호화 및 보안 키 저장소에 대한 하드웨어 기반 메커니즘을 기반으로 하는 여러 보안 계층에 따라 달라집니다. 모든 연결 제품과 마찬가지로 보안 위협은 IoT 장치가 클라우드 서비스에 연결될 때 발생하는 모든 상호 작용에서 일어날 수 있습니다. IoT 클라우드 제공업체는 고객과 스스로를 보호하기 위해 인증 및 액세스 권한 관리를 위한 특정 요구 사항을 규정합니다. 제공업체에서 이러한 요구 사항과 관련된 사양에 관한 세부 문서를 제공하지만, 개발자가 보안 연결을 구현하는 과정에서 리소스가 노출되거나 리소스에 접근하지 못할 수도 있습니다. 개발자는 개발 기판 및 연결된 소프트웨어를 사용하여 클라우드 서비스에 빠르게 연결하고 엔드 투 엔드 보안으로 IoT 응용 제품의 시제품을 빠르게 제작할 수 있습니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.
