AWS IoT Greengrass 보안 개요 - AWS IoT Greengrass

다음에 대한 설명서를 보고 있습니다.AWS IoT Greengrass Version 1.AWS IoT Greengrass Version 2의 최신 주요 버전입니다AWS IoT Greengrass. 사용에 관한 자세한 내용은 단원을 참조하십시오.AWS IoT Greengrass V2에 대한 자세한 내용은AWS IoT Greengrass Version 2개발자 안내서.

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

AWS IoT Greengrass 보안 개요

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

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

A - Greengrass 서비스 역할

에 의해 가정된 고객이 만든 IAM 역할AWS IoT Greengrass에 액세스 할 때AWS에서 자원AWS IoT Core,AWS Lambda및 기타AWS서비스. 자세한 정보는 Greengrass 서비스 역할을 참조하십시오.

B - 코어 디바이스 인증서

AWS IoT Core 및 AWS IoT Greengrass를 사용하여 Greengrass 코어를 인증하는 데 사용되는 X.509 인증서. 자세한 정보는 AWS IoT Greengrass에 대한 디바이스 인증 및 권한 부여을 참조하십시오.

C - 디바이스 인증서

AWS IoT Core 및 AWS IoT Greengrass를 사용하여 Greengrass (연결된) 바이러스를 인증하는 데 사용되는 X.509 인증서. 자세한 정보는 AWS IoT Greengrass에 대한 디바이스 인증 및 권한 부여을 참조하십시오.

D - 그룹 역할

에 의해 가정된 고객이 만든 IAM 역할AWS IoT Greengrass호출 할 때AWSGreengrass 코어에서 서비스를 제공합니다.

이 역할을 사용해 사용자 정의 Lambda 함수와 커넥터가 액세스하는 데 필요한 권한을 지정합니다.AWS서비스를 제공합니다 (예: DynamoDB). 당신은 또한 그것을 사용하여AWS IoT Greengrass를 사용하여 스트림 관리자 스트림을AWSServices에 로그인하고 CloudWatch Logs 자세한 정보는 Greengrass 그룹 역할을 참조하십시오.

참고

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

E - MQTT 서버 인증서

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

디바이스 연결 워크플로

이 섹션에서는 Greengrass 연결 디바이스가 AWS IoT Greengrass 서비스 및 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 Greengrass자체 디바이스 인증서, 프라이빗 키 및AWS IoT Core루트 CA 인증서입니다. 연결이 되면 AWS IoT Core 디바이스는 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 정책을 참조하십시오.

    참고

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

  4. Greengrass 서비스 역할을 생성합니다. 이 IAM 역할은AWS IoT Greengrass를 사용하여 다른AWS를 대신하여 제품을 배포합니다. 이를 통해 AWS IoT Greengrass는 AWS Lambda 함수 검색과 디바이스 섀도우 관리 등의 필수 작업을 수행할 수 있습니다.

    동일한 서비스 역할을AWS 리전와 연결되어야합니다. 그러나AWS 계정의 모든AWS 리전당신이 사용하는 곳AWS IoT Greengrass.

  5. (선택 사항) Greengrass 그룹 역할을 생성합니다. 이 IAM 역할은 Greengrass 코어에서 실행 중인 Lambda 함수 및 커넥터가AWS서비스. 예를 들어,Kinesis Firehose 커넥터에는 Amazon Kinesis 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 인증서를 사용합니다. 자세한 내용은 단원을 참조하십시오.X.509 인증서 및AWS IoT CoreAWS IoT Core개발자 안내서.

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

MQTT 서버

로컬 MQTT 서버는 로컬 네트워크를 통한 Greengrass 코어와 그룹의 기타 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 프라이빗 키가 지정된 경우(GGGGC 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 인증서 유효성 검사를 지원해야 합니다.

Secrets Manager

로컬 보안 관리자는 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