AWS IoT Greengrass의 보안 모범 사례 - AWS IoT Greengrass

AWS IoT Greengrass Version 1더 이상 기능 업데이트를 받지 않으며 2023년 6월 30일까지 보안 패치와 버그 수정만 받게 됩니다. 자세한 내용은 AWS IoT Greengrass V1유지 관리 정책을 참조하세요. 중요한 새 기능을 추가하고 추가 플랫폼을 지원하는 로AWS IoT Greengrass Version 2 마이그레이션하는 것이 좋습니다.

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

AWS IoT Greengrass의 보안 모범 사례

이 주제에는 AWS IoT Greengrass에 대한 보안 모범 사례가 포함되어 있습니다.

가능한 최소 권한 부여

IAM 역할의 최소 권한 세트를 사용하여 최소 권한 원칙을 따르세요. IAM 정책에서ActionResource 속성에 대한* 와일드카드 사용을 제한하십시오. 대신, 가능한 경우 한정된 작업과 리소스를 선언하십시오. 최소 권한 및 기타 정책 모범 사례에 대한 자세한 내용은 정책 모범 사례 단원을 참조하십시오.

최소 권한 모범 사례는 Greengrass 코어 및 클라이언트 장치에 연결하는AWS IoT 정책에도 적용됩니다.

Lambda 함수에서 자격 증명을 하드코딩하지 마십시오.

사용자 정의 Lambda 함수에 자격 증명을 하드코딩하지 마십시오. 자격 증명에 대한 보호를 강화하려면 다음을 수행하십시오.

  • AWS 서비스와 상호 작용하려면 Greengrass 그룹 역할에서 특정 작업 및 리소스에 대한 권한을 정의합니다.

  • 로컬 암호를 사용하여 자격 증명을 저장합니다. 또는 함수에서AWS SDK를 사용하는 경우 기본 자격 증명 공급자 체인에서 가져오는 자격 증명을 사용하십시오.

민감한 정보를 기록하지 않음

자격 증명 및 기타 개인 식별 정보(PII)의 로깅을 방지해야 합니다. 코어 디바이스의 로컬 로그에 액세스하려면 루트 권한이 필요하고 로그에 액세스하려면 IAM 권한이 필요하지만 다음과 같은 안전 조치를 구현하는 것이 CloudWatch 좋습니다.

  • MQTT 주제 경로에는 민감한 정보를 사용하지 마십시오.

  • AWS IoT Core 레지스트리의 디바이스(사물) 이름, 유형 및 속성에 민감한 정보를 사용하지 마십시오.

  • 사용자 정의 Lambda 함수에 민감한 정보를 기록하지 마십시오.

  • Greengrass 리소스의 이름과 ID에 민감한 정보를 사용하지 마십시오.

    • 커넥터

    • 코어

    • Devices

    • 함수

    • 그룹

    • Loggers

    • 리소스(로컬, 기계 학습 또는 암호)

    • 구독

대상 구독 만들기

구독은 서비스, 디바이스 및 Lambda 함수 간에 메시지가 교환되는 방식을 정의하여 Greengrass 그룹의 정보 흐름을 제어합니다. 애플리케이션이 의도한 동작만 수행하도록 하려면, 구독을 통해 게시자가 특정 주제에만 메시지를 보내도록 하고, 구독자가 기능에 필요한 주제에서만 메시지를 받도록 제한해야 합니다.

디바이스의 시계를 동기화 상태로 유지

디바이스에서는 정확한 시간을 유지하는 것이 중요합니다. X.509 인증서에는 만료 날짜와 시간이 있습니다. 디바이스의 시계는 서버 인증서가 여전히 유효한지 확인하는 데 사용됩니다. 디바이스 시계는 시간이 지나 드리프트 상태가 되거나 배터리가 방전될 수 있습니다.

자세한 내용은 AWS IoT Core개발자 안내서의 기기 시계 동기화 유지 모범 사례를 참조하십시오.

Greengrass 코어를 사용한 디바이스 인증 관리

클라이언트 디바이스는 FreeRTOS를 실행하거나 AWS IoT디바이스 SDK 또는 AWS IoT GreengrassDiscovery API를 사용하여 동일한 Greengrass 그룹의 코어에 연결하고 인증하는 데 사용되는 검색 정보를 가져올 수 있습니다. 검색 정보에는 다음이 포함됩니다.

  • 클라이언트 장치와 동일한 Greengrass 그룹에 속한 Greengrass 코어에 대한 연결 정보입니다. 이 정보에는 코어 디바이스에 대한 각 엔드포인트의 호스트 주소와 포트 번호가 포함됩니다.

  • 로컬 MQTT 서버 인증서에 서명하는 데 사용되는 그룹 CA 인증서입니다. 클라이언트 장치는 그룹 CA 인증서를 사용하여 코어에서 제공하는 MQTT 서버 인증서의 유효성을 검사합니다.

다음은 클라이언트 디바이스에서 Greengrass 코어와의 상호 인증을 관리하는 모범 사례입니다. 이러한 모범 사례는 핵심 디바이스가 손상된 경우 위험을 완화하는 데 도움이 될 수 있습니다.

각 연결에 대한 로컬 MQTT 서버 인증서를 검증합니다.

클라이언트 장치는 코어와 연결을 설정할 때마다 코어에서 제공하는 MQTT 서버 인증서의 유효성을 검사해야 합니다. 이 유효성 검사는 코어 장치와 클라이언트 장치 간의 상호 인증의 클라이언트 장치 측입니다. 클라이언트 장치는 장애를 감지하고 연결을 종료할 수 있어야 합니다.

검색 정보를 하드코딩하지 마십시오.

클라이언트 디바이스는 코어가 고정 IP 주소를 사용하더라도 검색 작업을 통해 코어 연결 정보 및 그룹 CA 인증서를 가져와야 합니다. 클라이언트 디바이스는 이 검색 정보를 하드코딩하지 않아야 합니다.

검색 정보를 주기적으로 업데이트합니다.

클라이언트 장치는 정기적으로 검색을 실행하여 핵심 연결 정보 및 그룹 CA 인증서를 업데이트해야 합니다. 클라이언트 장치가 코어와 연결되기 전에 이 정보를 업데이트하는 것이 좋습니다. 검색 작업 사이의 시간을 줄이면 잠재적 노출 시간을 최소화할 수 있으므로 클라이언트 장치의 연결을 주기적으로 끊었다가 다시 연결하여 업데이트를 트리거하는 것이 좋습니다.

Greengrass 코어 장치에 대한 제어 권한을 상실하고 클라이언트 장치가 데이터를 코어로 전송하지 못하도록 하려면 다음을 수행하십시오.

  1. Greengrass 그룹에서 Greengrass 코어를 제거합니다.

  2. 그룹 CA 인증서를 교체합니다. AWS IoT콘솔에서 그룹의 설정 페이지에서 CA 인증서를 교체할 수 있습니다. AWS IoT GreengrassAPI에서 CreateGroupCertificateAuthority작업을 사용할 수 있습니다.

    또한 코어 디바이스의 하드 드라이브가 도난에 취약할 경우 전체 디스크 암호화를 사용하는 것이 좋습니다.

자세한 정보는 AWS IoT Greengrass에 대한 디바이스 인증 및 권한 부여을 참조하세요.

다음 사항도 참조하세요.