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 것이 좋습니다.

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

AWS IoT Greengrass 보안 개요

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

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

A - Greengrass 서비스 역할

AWS IoT Core AWS Lambda, 및 기타 서비스에서 AWS 리소스에 액세스할 AWS IoT Greengrass 때 위임되는 고객 생성 IAM 역할. AWS 자세한 설명은 Greengrass 서비스 역할 섹션을 참조하세요.

B - 코어 디바이스 인증서

및 를 사용하여 Greengrass 코어를 인증하는 데 사용되는 X.509 인증서 AWS IoT Core AWS IoT Greengrass 자세한 설명은 AWS IoT Greengrass에 대한 디바이스 인증 및 권한 부여 섹션을 참조하세요.

C - 디바이스 인증서

클라이언트 장치 (연결된 장치라고도 함) 를 인증하는 데 사용되는 X.509 인증서 (및) AWS IoT Core AWS IoT Greengrass 자세한 설명은 AWS IoT Greengrass에 대한 디바이스 인증 및 권한 부여 섹션을 참조하세요.

D - 그룹 역할

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

이 역할을 사용하여 사용자 정의 Lambda 함수 및 커넥터가 DynamoDB와 같은 AWS 서비스에 액세스하는 데 필요한 액세스 권한을 지정합니다. 또한 이를 AWS IoT Greengrass 사용하여 스트림 관리자 스트림을 AWS 서비스로 내보내고 Logs에 쓸 수 있습니다. CloudWatch 자세한 설명은 Greengrass 그룹 역할 섹션을 참조하세요.

참고

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

E - MQTT 서버 인증서

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

디바이스 연결 워크플로

이 섹션에서는 클라이언트 디바이스를 AWS IoT Greengrass 서비스 및 Greengrass 코어 디바이스에 연결하는 방법을 설명합니다. 클라이언트 디바이스는 코어 AWS IoT Core 디바이스와 동일한 Greengrass 그룹에 속하는 등록된 디바이스입니다.

  • 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 IoT Greengrass 대신하여 다른 AWS 서비스의 리소스에 액세스할 수 있는 권한을 부여합니다. AWS IoT Greengrass 이를 통해 AWS Lambda 기능 검색 및 디바이스 섀도 관리와 같은 필수 작업을 수행할 수 있습니다.

    AWS 리전s 전체에 동일한 서비스 역할을 사용할 수 있지만 사용하는 모든 AWS 계정 AWS 리전 위치에서 해당 서비스 역할이 사용자와 연결되어야 합니다. AWS IoT Greengrass

  5. (선택 사항) Greengrass 그룹 역할을 생성합니다. 이 IAM 역할은 Greengrass 코어에서 실행되는 Lambda 함수 및 커넥터에 서비스를 호출할 수 있는 권한을 부여합니다. AWS 예를 들어 Kinesis Firehose 커넥터에는 Amazon 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 코어와 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 인증서를 사용합니다.

기본적으로 RSA AWS IoT Greengrass 개인 키가 자동으로 생성됩니다. 코어에서 다른 프라이빗 키를 사용하도록 구성하려면 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 키 유형만 지원됩니다. 자세한 설명은 암호 암호화를 위한 프라이빗 키 지정 섹션을 참조하세요.

참고

현재는 하드웨어 기반 개인 키를 사용할 때 로컬 암호의 암호화 및 복호화를 위한 PKCS #1 v1.5 패딩 메커니즘만 AWS IoT Greengrass 지원합니다. 공급업체가 제공하는 지침에 따라 하드웨어 기반 개인 키를 수동으로 생성하려면 PKCS #1 v1.5를 선택해야 합니다. AWS IoT Greengrass OAEP (최적 비대칭 암호화 패딩) 는 지원하지 않습니다.

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