AWS IoT Greengrass 보안 개요 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 는 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트를 릴리스하지 AWS IoT Greengrass V1 않습니다. 에서 실행되는 디바이스는 중단 AWS IoT Greengrass V1 되지 않으며 계속 작동하고 클라우드에 연결됩니다. 로 마이그레이션 AWS IoT Greengrass Version 2하는 것이 좋으며, 이로 인해 추가 플랫폼에 대한 중요한 새로운 기능과 지원이 추가됩니다. https://docs.aws.amazon.com/greengrass/v2/developerguide/operating-system-feature-support-matrix.html

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS IoT Greengrass 보안 개요

AWS IoT Greengrass는 X.509 인증서, AWS IoT 정책 및 정책과 역할을 사용하여 로컬 Greengrass 환경의 장치에서 실행되는 애플리케이션을 보호합니다.

다음 다이어그램은 AWS IoT Greengrass 보안 모델의 구성 요소를 보여 줍니다.

AWS 서비스, Greengrass 코어 및 연결된 디바이스, 인증서 상호 작용을 보여주는 Greengrass 서비스 아키텍처 다이어그램입니다.
A - Greengrass 서비스 역할

AWS IoT Core, AWS Lambda 및 기타 AWS 서비스에서 AWS 리소스에 액세스할 때 AWS IoT Greengrass에서 맡는 고객 생성 IAM 역할입니다. 자세한 내용은 Greengrass 서비스 역할 단원을 참조하십시오.

B - 코어 장치 인증서

AWS IoT Core 및 AWS IoT Greengrass를 사용하여 Greengrass 코어를 인증하는 데 사용되는 X.509 인증서. 자세한 내용은 AWS IoT Greengrass에 대한 장치 인증 및 권한 부여 단원을 참조하십시오.

C - 장치 인증서

AWS IoT Core 및 AWS IoT Greengrass을(를) 사용하여 클라이언트 장치(연결된 장치라고도 함)를 인증하는 데 사용되는 X.509 인증서. 자세한 내용은 AWS IoT Greengrass에 대한 장치 인증 및 권한 부여 단원을 참조하십시오.

D - 그룹 역할

Greengrass 코어에서 AWS 서비스를 호출할 때 AWS IoT Greengrass에서 맡는 고객 생성 IAM 역할입니다.

이 역할을 사용해 사용자 정의 Lambda 함수와 커넥터가 AWS 서비스(예: )에 액세스하는 데 필요한 권한을 지정합니다. 또한 이를 사용해 AWS IoT Greengrass가 스트림 관리자 스트림을 AWS 서비스로 내보내고 CloudWatch Logs에 쓰도록 허용합니다. 자세한 내용은 Greengrass 그룹 역할 단원을 참조하십시오.

참고

AWS IoT Greengrass는 Lambda 함수의 클라우드 버전에 대해 AWS Lambda에 지정된 실행 역할을 사용하지 않습니다.

E - MQTT 서버 인증서

Greengrass 코어 장치와 Greengrass 그룹의 연결된 장치 간 전송 계층 보안(TLS) 상호 인증에 사용되는 인증서입니다. 이 인증서는 AWS 클라우드 클라우드에 저장된 그룹 CA 인증서에 의해 서명됩니다.

장치 연결 워크플로

이 섹션에서는 각각의 장치가 AWS IoT Greengrass 서비스와 Greengrass 코어 장치에 연결하는 방법을 설명합니다. 클라이언트 장치는 코어 장치와 동일한 Greengrass 그룹에 있는 등록된 AWS IoT Core 장치입니다.

  • Greengrass 코어 장치는 자체 장치 인증서, 프라이빗 키 및 AWS IoT Core 루트 CA 인증서를 사용해 AWS IoT Greengrass 서비스에 연결합니다. 코어 장치에서 구성 파일crypto 개체는 이러한 항목의 파일 경로를 지정합니다.

  • Greengrass 코어 장치는 AWS IoT Greengrass 서비스에서 그룹 멤버십 정보를 다운로드합니다.

  • Greengrass 코어 장치로 배포가 실행될 때 Device Certificate Manager(DCM)는 Greengrass 코어 장치에 대한 로컬 서버 인증서 관리를 처리합니다.

  • 클라이언트 장치는 자체 장치 인증서, 프라이빗 키 및 AWS IoT Core 루트 CA를 사용해 AWS IoT Greengrass 서비스와 연결합니다. 연결이 되면 클라이언트 장치는 Greengrass Discovery Service를 사용해 Greengrass 코어 장치의 IP 주소를 찾습니다. 또한 클라이언트 장치는 Greengrass 코어 장치와의 TLS 상호 인증에 사용되는 그룹 CA 인증서를 다운로드합니다.

  • 클라이언트 장치는 Greengrass 코어 장치와 연결을 시도하며 자체 장치 인증서와 클라이언트 ID를 전달합니다. 클라이언트 ID가 클라이언트 장치의 사물 이름과 일치하며 인증서가 유효한 경우(Greengrass 그룹의 일부), 연결이 이루어집니다. 그렇지 않으면 연결이 종료됩니다.

클라이언트 장치에 대한 AWS IoT 정책은 클라이언트 장치가 코어에 대한 연결 정보를 검색할 수 있도록 허용하는 greengrass:Discover 권한을 부여해야 합니다. 이 정책 설명에 대한 자세한 내용은 검색 권한 섹션을 참조하십시오.

AWS IoT Greengrass 보안 구성

Greengrass 애플리케이션의 보안을 구성하려면
  1. Greengrass 코어 장치에 대한 AWS IoT Core 사물을 만듭니다.

  2. Greengrass 코어 장치에 대한 키 페어와 장치 인증서를 생성합니다.

  3. AWS IoT 정책을 생성해 해당 장치 인증서에 연결합니다. 인증서 및 정책을 활용하면 Greengrass 코어 장치가 AWS IoT Core와 AWS IoT Greengrass 서비스에 액세스할 수 있습니다. 자세한 내용은 코어 장치에 대한 최소 AWS IoT 정책 단원을 참조하십시오.

    참고

    핵심 장치에 대한 AWS IoT 정책에서 사물 정책 변수(iot:Connection.Thing.*)를 사용하는 것은 지원되지 않습니다. 코어는 동일한 장치 인증서를 사용하여 AWS IoT Core에 여러 번 연결하지만 연결의 클라이언트 ID가 핵심 사물 이름과 정확히 일치하지 않을 수 있습니다.

  4. Greengrass 서비스 역할을 생성합니다. 이 IAM 역할은 다른 AWS 서비스의 리소스에 대신 액세스할 수 있도록 AWS IoT Greengrass에 권한을 부여합니다. 이를 통해 AWS IoT Greengrass는 AWS Lambda 함수 검색과 장치 섀도우 관리 등의 필수 작업을 수행할 수 있습니다.

    AWS 리전 전체에서 동일한 서비스 역할을 사용할 수 있지만, AWS IoT Greengrass를 사용하는 모든 AWS 리전에서 본인의 AWS 계정과 연결해야 합니다.

  5. (선택 사항) Greengrass 그룹 역할을 생성합니다. 이 IAM 역할은 Greengrass 코어에서 실행 중인 Lambda 함수 및 커넥터가 AWS 제품을 호출할 수 있는 권한을 부여합니다. 예를 들어, Kinesis Firehose 커넥터는 Data Firehose 전송 스트림에 레코드를 쓸 수 있는 권한이 필요합니다.

    Greengrass 그룹에는 하나의 역할만 연결할 수 있습니다.

  6. Greengrass 코어에 연결되는 각 장치에 대한 AWS IoT Core 사물을 만듭니다.

    참고

    기존 AWS IoT Core 사물 및 인증서를 사용할 수도 있습니다.

  7. Greengrass 코어에 연결할 각 장치에 대한 장치 인증서, 키 페어 및 AWS IoT 정책을 생성합니다.

AWS IoT Greengrass 코어 보안 주체

Greengrass 코어는 AWS IoT 클라이언트, 로컬 MQTT 서버 및 로컬 보안 관리자 보안 주체를 사용합니다. 이러한 보안 주체에 대한 구성은 config.json 구성 파일의 crypto 객체에 저장됩니다. 자세한 내용은 AWS IoT Greengrass 코어 구성 파일 단원을 참조하십시오.

이 구성에는 인증 및 암호화를 위해 주체 구성 요소가 사용하는 프라이빗 키의 경로가 포함되어 있습니다. AWS IoT Greengrass는 두 가지 프라이빗 키 스토리지 모드인 하드웨어 기반 또는 파일 시스템 기반(기본값)을 지원합니다. 하드웨어 보안 모듈에 키를 저장하는 방법에 대한 자세한 내용은 하드웨어 보안 통합 단원을 참조하십시오.

AWS IoT 클라이언트

AWS IoT 클라이언트(IoT 클라이언트)는 인터넷을 통한 Greengrass 코어와 AWS IoT Core 간 통신을 관리합니다. AWS IoT Greengrass는 이러한 통신에 대한 TLS 연결을 설정할 때 상호 인증을 위한 퍼블릭 및 프라이빗 키가 있는 X.509 인증서를 사용합니다. 자세한 내용은 AWS IoT Core 개발자 안내서X.509 인증서 및 AWS IoT Core을(를) 참조하십시오.

IoT 클라이언트는 RSA 및 EC 인증서와 키를 지원합니다. config.json에서 IoTCertificate 주체에 대한 인증서 및 프라이빗 키 경로가 지정되어 있습니다.

MQTT 서버

로컬 MQTT 서버는 로컬 네트워크를 통한 Greengrass 코어와 그룹의 클라이언트 장치 간 통신을 관리합니다. AWS IoT Greengrass는 이러한 통신에 대한 TLS 연결을 설정할 때 상호 인증을 위한 퍼블릭 및 프라이빗 키가 있는 X.509 인증서를 사용합니다.

기본적으로 AWS IoT Greengrass에서는 사용자를 위한 RSA 프라이빗 키를 생성합니다. 코어에서 다른 프라이빗 키를 사용하도록 구성하려면 config.json에서 MQTTServerCertificate 주체에 대한 키 경로를 제공해야 합니다. 고객이 제공한 키를 교체할 책임은 사용자에게 있습니다.

프라이빗 키 지원
RSA 키 EC 키
키 유형 Supported Supported
키 파라미터 Minimum 2048-bit length NIST P-256 or NIST P-384 curve
디스크 형식 PKCS#1, PKCS#8 SECG1, PKCS#8
최소 GGC 버전
  • 기본 RSA 키 사용: 1.0

  • RSA 키 지정: 1.7

  • EC 키 지정: 1.9

프라이빗 키의 구성은 관련 프로세스를 결정합니다. Greengrass 코어에서 서버로 지원하는 암호 제품군 목록은 TLS 암호 그룹 지원 단원을 참조하십시오.

프라이빗 키가 지정되지 않은 경우(기본값)
  • AWS IoT Greengrass는 교체 설정에 따라 키를 교체합니다.

  • 코어는 인증서를 생성하는 데 사용되는 RSA 키를 생성합니다.

  • MQTT 서버 인증서에는 RSA 퍼블릭 키 및 SHA-256 RSA 서명이 있습니다.

RSA 프라이빗 키가 지정된 경우(GGC v1.7 이상 필요)
  • 키는 직접 교체해야 합니다.

  • 코어는 지정된 키를 사용하여 인증서를 생성합니다.

  • RSA 키의 최소 길이는 2048비트여야 합니다.

  • MQTT 서버 인증서에는 RSA 퍼블릭 키 및 SHA-256 RSA 서명이 있습니다.

EC 프라이빗 키가 지정된 경우(GGC v1.9 이상 필요)
  • 키는 직접 교체해야 합니다.

  • 코어는 지정된 키를 사용하여 인증서를 생성합니다.

  • EC 프라이빗 키는 NIST P-256 또는 NIST P-384 Curve를 사용해야 합니다.

  • MQTT 서버 인증서에는 EC 퍼블릭 키 및 SHA-256 RSA 서명이 있습니다.

    키 유형과 상관없이 코어에서 제공하는 MQTT 서버 인증서에는 SHA-256 RSA 서명이 있습니다. 이러한 이유 때문에 클라이언트는 코어와의 보안 연결을 설정하도록 SHA-256 RSA 인증서 유효성 검사를 지원해야 합니다.

보안 관리자

로컬 보안 관리자는 AWS Secrets Manager에서 생성된 보안의 로컬 복사본을 안전하게 관리합니다. 보안을 암호화하는 데 사용되는 데이터 키의 보안을 유지하는 데 프라이빗 키를 사용합니다. 자세한 내용은 AWS IoT Greengrass 코어에 암호 배포 단원을 참조하십시오.

기본적으로 IoT 클라이언트 프라이빗 키가 사용되지만 config.json에서 SecretsManager 주체에 대해 다른 프라이빗 키를 지정할 수 있습니다. RSA 키 유형만 지원됩니다. 자세한 내용은 암호 암호화를 위한 프라이빗 키 지정 단원을 참조하십시오.

참고

현재 AWS IoT Greengrass는 하드웨어 기반 프라이빗 키를 사용할 경우 로컬 보안 암호의 암호화 및 해독에 PKCS#1 v1.5 패딩 메커니즘만 지원합니다. 공급업체에서 제공한 지침에 따라 하드웨어 기반 프라이빗 키를 수동으로 생성하는 경우, PKCS#1 v1.5를 선택해야 합니다. AWS IoT Greengrass는 OAEP(Optimal Asymmetric Encryption Padding)를 지원하지 않습니다.

프라이빗 키 지원
RSA 키 EC 키
키 유형 Supported Not supported
키 파라미터 Minimum 2048-bit length Not applicable
디스크 형식 PKCS#1, PKCS#8 Not applicable
최소 GGC 버전 1.7 Not applicable

MQTT 메시징 워크플우로의 관리형 구독

AWS IoT Greengrass는 구독 테이블을 사용하여 Greengrass 그룹 내의 클라이언트 장치, 함수 및 커넥터와 AWS IoT Core 또는 로컬 섀도우 서비스 간의 MQTT 메시지 교환 방법을 정의합니다. 각 구독은 메시지가 전송되거나 수신되는 소스, 대상 및 MQTT 항목(또는 주체)를 지정합니다. 해당 구독이 정의된 경우에만 AWS IoT Greengrass를 통해 소스에서 대상으로 메시지를 보낼 수 있습니다.

구독은 소스에서 대상으로의 한 방향으로만 메시지 흐름을 정의합니다. 양방향 메시지 교환을 지원하려면 각 방향당 하나씩 총 두 개의 구독을 생성해야 합니다.

TLS 암호 그룹 지원

AWS IoT Greengrass는 AWS IoT Core 전송 보안 모델을 사용하며 클라우드와의 통신을 TLS 암호 그룹을 통해 암호화합니다. 또한 AWS IoT Greengrass 데이터는 클라우드에 저장 시 암호화됩니다. AWS IoT Core 전송 보안 및 지원되는 암호 도구 모음에 대한 자세한 내용은 AWS IoT Core 개발자 안내서전송 보안을 참조하십시오.

로컬 네트워크 통신에 대한 지원되는 암호 제품군

AWS IoT Core와 달리 AWS IoT Greengrass 코어는 인증서-서명 알고리즘에 다음과 같은 로컬 네트워크 TLS 암호 제품군을 지원합니다. 파일 시스템에 프라이빗 키가 저장되어 있으면 이러한 암호 제품군이 모두 지원됩니다. 코어가 HSM(하드웨어 보안 모듈)을 사용하도록 구성된 경우 하위 세트가 지원됩니다. 자세한 내용은 AWS IoT Greengrass 코어 보안 주체하드웨어 보안 통합 단원을 참조하세요. 이 표에는 지원에 필요한 AWS IoT Greengrass 코어 소프트웨어의 최소 버전이 포함되어 있습니다.

암호 HSM 지원 최소 GGC 버전
TLSv1.2 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Supported 1.0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Supported 1.0
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 Supported 1.0
TLS_RSA_WITH_AES_128_CBC_SHA Not supported 1.0
TLS_RSA_WITH_AES_128_GCM_SHA256 Not supported 1.0
TLS_RSA_WITH_AES_256_CBC_SHA Not supported 1.0
TLS_RSA_WITH_AES_256_GCM_SHA384 Not supported 1.0
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 Supported 1.9
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 Supported 1.9
TLSv1.1 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Supported 1.0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Supported 1.0
TLS_RSA_WITH_AES_128_CBC_SHA Not supported 1.0
TLS_RSA_WITH_AES_256_CBC_SHA Not supported 1.0
TLSv1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Supported 1.0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Supported 1.0
TLS_RSA_WITH_AES_128_CBC_SHA Not supported 1.0
TLS_RSA_WITH_AES_256_CBC_SHA Not supported 1.0