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 정책을 사용합니다. 인증서 및 정책을 통해 디바이스끼리, 그리고 AWS IoT Core 및 AWS IoT Greengrass와 안전하게 연결할 수 있습니다.

X.509 인증서는 X.509 퍼블릭 키 인프라 표준을 사용하여 퍼블릭 키를 인증서에 포함된 자격 증명과 연결하는 디지털 인증서입니다. X.509 인증서는 인증 기관(CA)이라고 부르는, 신뢰할 수 있는 엔터티가 발행합니다. CA는 X.509 인증서 발행하는 데 사용되는 CA 인증서라고 하는 하나 이상의 특수 인증서를 유지 관리합니다. 인증 기관만 CA 인증서에 액세스할 수 있습니다.

AWS IoT 정책은 AWS IoT 디바이스에 허용되는 작업 집합을 정의합니다. 특히 MQTT 메시지 게시 및 디바이스 섀도우 검색과 같은 AWS IoT Core 및 AWS IoT Greengrass 데이터 플레인 작업에 대한 액세스를 허용하거나 거부합니다.

모든 디바이스에는 AWS IoT Core 레지스트리의 항목, AWS IoT 정책이 연결된 활성화된 X.509 인증서가 필요합니다. 디바이스는 두 가지 범주로 나뉩니다.

  • Greengrass 코어. 코어 디바이스는 인증서와 AWS IoT 정책을 사용하여 AWS IoT Core에 안전하게 연결됩니다. 또한 인증서와 정책은 AWS IoT Greengrass가 구성 정보, Lambda 함수, 커넥터 및 관리형 구독을 코어 디바이스에 배포할 수 있도록 합니다.

  • 클라이언트 디바이스. 클라이언트 디바이스(연결된 디바이스, Greengrass 디바이스 또는 디바이스라고도 함)는 MQTT를 통해 Greengrass 코어에 연결하는 디바이스입니다. 인증서와 정책을 사용하여 AWS IoT Core와 AWS IoT Greengrass 서비스에 연결합니다. 이렇게 하면 클라이언트 디바이스는 AWS IoT Greengrass Discovery Service를 사용하여 코어 디바이스를 찾아 연결할 수 있습니다. 클라이언트 디바이스는 AWS IoT Core 디바이스 게이트웨이 및 코어 디바이스를 연결하는 데 동일한 인증서를 사용합니다. 또한 클라이언트 디바이스는 코어 디바이스와의 상호 인증을 위해 검색 정보를 사용합니다. 자세한 내용은 장치 연결 워크플로Greengrass 코어를 사용한 디바이스 인증 관리 섹션을 참조하세요.

X.509 인증서

코어 디바이스와 클라이언트 디바이스 간의 통신과 디바이스 간, 그리고 AWS IoT Core 또는 AWS IoT Greengrass와의 통신은 반드시 인증되어야 합니다. 이 상호 인증은 등록된 X.509 디바이스 인증서와 암호화 키를 기반으로 수행됩니다.

AWS IoT Greengrass 환경에서 디바이스는 다음 TLS(전송 계층 보안) 연결에 퍼블릭 키와 프라이빗 키가 있는 인증서를 사용합니다.

  • 인터넷을 통해 AWS IoT Core와 AWS IoT Greengrass에 연결하는 Greengrass 코어의 AWS IoT 클라이언트 구성 요소.

  • 인터넷을 통해 코어 검색 정보를 얻기 위해 AWS IoT Greengrass에 연결되어 있는 클라이언트 연결 디바이스.

  • 로컬 네트워크를 통해 그룹의 클라이언트 디바이스에 연결되어 있는 Greengrass 코어의 MQTT 서버 구성 요소.

AWS IoT Greengrass 코어 디바이스는 두 위치에 인증서를 저장합니다.

  • /greengrass-root/certs의 코어 디바이스 인증서. 일반적으로 코어 디바이스 인증서의 이름은 hash.cert.pem(예: 86c84488a5.cert.pem)입니다. 이 인증서는 코어가 AWS IoT Core 및 AWS IoT Greengrass 서비스에 연결될 때 AWS IoT 클라이언트가 상호 인증을 위해 사용합니다.

  • /greengrass-root/ggc/var/state/server의 MQTT 서버 인증서. MQTT 서버 인증서의 이름이 server.crt로 지정됩니다. 이 인증서는 로컬 MQTT 서버(Greengrass 코어에 있음) 사이의 상호 인증에 사용됩니다.

    참고

    greengrass-root는 디바이스에서 AWS IoT Greengrass 코어 소프트웨어가 설치된 경로를 나타냅니다. 일반적으로 이는 /greengrass 디렉터리입니다.

자세한 설명은 AWS IoT Greengrass 핵심 보안 원칙 섹션을 참조하세요.

CA(인증 기관) 인증서

코어 디바이스와 클라이언트 연결 디바이스는 AWS IoT Core 및 AWS IoT Greengrass 서비스 인증에 사용되는 루트 CA 인증서를 다운로드합니다. Amazon Root CA 1 같은 Amazon Trust Services(ATS) 루트 CA 인증서를 사용하는 것이 좋습니다. 서버 인증용 CA 인증서에 대한 자세한 내용은 AWS IoT Core개발자 설명서의 인증(IoT)를 참조하세요.

참고

루트 CA 인증서 유형은 엔드포인트와 일치해야 합니다. ATS 엔드포인트가 있는 ATS 루트 CA 인증서 (권장) 또는 레거시 엔드포인트가 있는 VeriSign 루트 CA 인증서를 사용합니다. 일부 Amazon Web Services 리전만 레거시 엔드포인트를 지원합니다. 자세한 설명은 서비스 엔드포인트는 루트 CA 인증서 유형과 일치해야 합니다 섹션을 참조하세요.

클라이언트 디바이스는 Greengrass 그룹 CA 인증서도 다운로드합니다. 상호 인증 중에 Greengrass 코어에서 MQTT 서버 인증서를 검증하는 데 사용됩니다. 자세한 설명은 장치 연결 워크플로 섹션을 참조하세요. MQTT 서버 인증서의 기본 만료 기간은 7일입니다.

로컬 MQTT 서버에서의 인증서 교체

클라이언트 디바이스는 Greengrass 코어 디바이스와의 상호 인증을 위해 로컬 MQTT 서버 인증서를 사용합니다. 이 인증서는 기본적으로 7일이 경과하면 만료됩니다. 이 제한된 기간은 보안 모범 사례를 기반으로 합니다. MQTT 서버 인증서는 클라우드에 저장된 그룹 CA 인증서에 의해 서명됩니다.

Greengrass 코어 디바이스가 온라인 상태 및 지속적으로 AWS IoT Greengrass 서비스에 직접적으로 액세스가 가능해야 인증서 교체를 할 수 있습니다. 인증서가 만료되면 코어 디바이스는 새 인증서를 획득하기 위해 AWS IoT Greengrass 서비스와의 연결을 시도합니다. 연결이 성공하면 코어 디바이스는 새 MQTT 서버 인증서를 다운로드하고 로컬 MQTT 서비스를 다시 시작합니다. 이 시점에서 코어와 연결된 모든 클라이언트 디바이스는 연결이 해제됩니다. 코어 디바이스가 만료 시 오프라인이면 대체 인증서를 받지 않습니다. 코어 디바이스에 시도되는 모든 연결은 거절됩니다. 기존 연결은 영향을 받지 않습니다. 클라이언트 디바이스는 AWS IoT Greengrass 서비스와의 연결이 복원되기 전까지 코어와 연결할 수 없으며 새로운 MQTT 서버 인증서를 다운로드할 수 있습니다.

만료 기한은 필요에 따라 7일에서 30일 사이로 설정할 수 있습니다. 자주 교체하기 위해서는 잦은 클라우드 연결이 요구됩니다. 교체가 자주 이루어지지 않으면 보안 문제를 초래할 수 있습니다. 인증서 만료 값을 30일 이상으로 설정하려면 AWS Support에 문의하십시오.

AWS IoT 콘솔에서는 그룹의 설정 페이지에서 인증서를 관리할 수 있습니다. AWS IoT GreengrassAPI에서 UpdateGroupCertificateConfiguration작업을 사용할 수 있습니다.

MQTT 서버 인증서가 만료되면 인증서의 유효성을 검사하는 시도가 실패합니다. 클라이언트 디바이스는 장애를 감지하고 연결을 종료할 수 있어야 합니다.

데이터 영역 작업에 대한 AWS IoT 정책

AWS IoT 정책을 사용하여 AWS IoT Core 및 AWS IoT Greengrass 데이터 플레인에 대한 액세스 권한을 부여합니다. AWS IoT Core 데이터 플레인은 AWS IoT Core 연결 및 주제 구독과 같은 디바이스, 사용자 및 애플리케이션 작업으로 구성됩니다. AWS IoT Greengrass 데이터 플레인은 배포 검색 및 연결 정보 업데이트와 같은 Greengrass 디바이스 작업으로 구성됩니다.

AWS IoT 정책은 IAM 정책과 유사한 JSON 문서입니다. 여기에는 다음 속성을 지정하는 하나 이상의 정책 설명이 포함됩니다.

  • Effect. 액세스 모드(Allow 또는 Deny 일 수 있음)

  • Action. 정책에서 허용하거나 거부하는 작업 목록.

  • Resource. 작업이 허용되거나 거부되는 리소스 목록입니다.

AWS IoT 정책은 *을(를) 와일드카드 문자로 지원하며 MQTT 와일드카드 문자(+#)를 리터럴 문자열로 취급합니다. * 와일드카드에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서리소스 ARN에서 와일드카드 사용을 참조하십시오.

자세한 내용은 AWS IoT Core 개발자 안내서AWS IoT 정책AWS IoT 정책 조치를 참조하십시오.

참고

AWS IoT Core은(는) 사물 그룹에 AWS IoT 정책을 연결하여 디바이스 그룹에 대한 권한을 정의할 수 있게 합니다. 사물 그룹 정책은 AWS IoT Greengrass 데이터 영역 작업에 대한 액세스를 허용하지 않습니다. AWS IoT Greengrass 데이터 영역 작업에 대한 사물 액세스를 허용하려면 사물 인증서에 연결하는 AWS IoT 정책에 권한을 추가하세요.

AWS IoT Greengrass 정책 작업

Greengrass 코어 작업

AWS IoT Greengrass는 Greengrass 코어 디바이스가 AWS IoT 정책에서 사용할 수 있는 다음 정책 작업을 정의합니다.

greengrass:AssumeRoleForGroup

토큰 교환 서비스(TES) 시스템 Lambda 함수를 사용하여 보안 인증을 검색할 수 있는 Greengrass 핵심 디바이스에 대한 권한. 검색된 자격 증명에 연결된 권한은 구성된 그룹 역할에 연결된 정책을 기반으로 합니다.

이 권한은 Greengrass 코어 디바이스가 자격 증명을 검색하려고 할 때 확인됩니다(자격 증명이 로컬로 캐시되지 않는다고 가정).

greengrass:CreateCertificate

Greengrass 코어 디바이스가 자체 서버 인증서를 만들 수 있는 권한입니다.

이 권한은 Greengrass 코어 디바이스가 인증서를 만들 때 확인됩니다. Greengrass 코어 디바이스는 처음 실행될 때, 코어의 연결 정보가 변경될 때 및 지정된 교체 기간에 서버 인증서 생성을 시도합니다.

greengrass:GetConnectivityInfo

Greengrass 코어 디바이스가 자체 연결 정보를 검색할 수 있는 권한입니다.

이 권한은 Greengrass 코어 디바이스가 AWS IoT Core에서 연결 정보를 검색하려고 할 때 확인됩니다.

greengrass:GetDeployment

Greengrass 코어 디바이스가 배포를 검색할 수 있는 권한입니다.

이 권한은 Greengrass 코어 디바이스가 클라우드에서 배포 및 배포 상태를 검색하려고 할 때 확인됩니다.

greengrass:GetDeploymentArtifacts

그룹 정보 또는 Lambda 함수 같은 배포 아티팩트를 검색할 수 있는 Greengrass 코어 디바이스에 대한 권한입니다.

이 권한은 Greengrass 코어 디바이스가 배포를 수신한 다음 배포 아티팩트를 검색하려고 할 때 확인됩니다.

greengrass:UpdateConnectivityInfo

Greengrass 코어 디바이스가 IP 또는 호스트 이름 정보로 자체 연결 정보를 업데이트할 수 있는 권한입니다.

이 권한은 Greengrass 코어 디바이스가 클라우드에서 연결 정보를 업데이트하려고 할 때 확인됩니다.

greengrass:UpdateCoreDeploymentStatus

Greengrass 코어 디바이스가 배포 상태를 업데이트할 수 있는 권한입니다.

이 권한은 Greengrass 코어 디바이스가 배포를 수신한 다음 배포 상태를 업데이트하려고 할 때 확인됩니다.

 

Greengrass 디바이스 작업

AWS IoT Greengrass는 클라이언트 디바이스가 AWS IoT 정책에서 사용할 수 있는 다음과 같은 정책 작업을 정의합니다.

greengrass:Discover

클라이언트 디바이스가 Discovery API를 사용하여 그룹의 코어 연결 정보 및 그룹 인증 기관을 검색할 수 있는 권한입니다.

이 권한은 클라이언트 디바이스가 TLS 상호 인증을 사용하여 검색 API를 직접 호출할 때 확인됩니다.

AWS IoT Greengrass 코어 디바이스에 대한 최소 AWS IoT 정책

다음 예제 정책에는 코어 디바이스용 기본 Greengrass 기능을 지원하는 데 필요한 최소 작업 세트가 포함됩니다.

  • 이 정책은 코어 디바이스가 섀도우 상태에 사용되는 주제를 포함하여 메시지를 게시하고 구독하고 메시지를 수신할 수 있는 MQTT 정책과 주제 필터를 나열합니다. Greengrass 그룹의 AWS IoT Core, Lambda 함수, 커넥터 및 디바이스 간에 메시지 교환을 지원하려면 허용할 주제와 주제 필터를 지정합니다. 자세한 내용은 AWS IoT Core 개발자 안내서게시/구독 정책 예제를 참조하십시오.

  • 정책에는 AWS IoT Core가 코어 디바이스의 섀도우를 가져오고 업데이트하고 삭제하도록 허용하는 섹션이 포함됩니다. Greengrass 그룹의 클라이언트 디바이스에 대한 섀도우 동기화를 허용하려면 Resource 목록에서 대상 Amazon 리소스 이름(ARN)을 지정합니다(예: arn:aws:iot:region:account-id:thing/device-name).

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

  • greengrass:UpdateCoreDeploymentStatus 권한의 경우 Resource ARN의 최종 세그먼트는 코어 디바이스의 URL로 인코딩된 ARN입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account-id:client/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] }, { "Effect": "Allow", "Action": [ "greengrass:AssumeRoleForGroup", "greengrass:CreateCertificate" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeployment" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeploymentArtifacts" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:UpdateCoreDeploymentStatus" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*/cores/arn%3Aaws%3Aiot%3Aregion%3Aaccount-id%3Athing%2Fcore-name" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] } ] }
참고

클라이언트 디바이스용 AWS IoT 정책에는 일반적으로 iot:Connect, iot:Publish, iot:Receiveiot:Subscribe 작업에 대한 유사한 권한이 필요합니다.

디바이스가 속한 Greengrass 그룹의 코어에 대한 연결 정보를 클라이언트 디바이스가 자동으로 감지하도록 허용하려면 연결된 디바이스에 대한 AWS IoT 정책에 greengrass:Discover 작업이 포함되어야 합니다. Resource 섹션에서 Greengrass 코어 디바이스의 ARN이 아닌 클라이언트 디바이스의 ARN을 지정합니다. 예:

{ "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region:account-id:thing/device-name" ] }

Greengrass 코어가 클라이언트 디바이스에 대한 섀도우 동기화 작업을 처리하기 때문에 연결된 디바이스용 AWS IoT 정책에는 일반적으로 iot:GetThingShadow, iot:UpdateThingShadow 또는 iot:DeleteThingShadow 작업에 대한 권한이 필요하지 않습니다. 이 경우 코어 AWS IoT 정책의 섀도우 작업에 대한 Resource 섹션에 연결된 디바이스의 ARN이 포함되어 있는지 확인합니다.

 

AWS IoT 콘솔에서는 코어 인증서에 연결된 정책을 보고 편집할 수 있습니다.

  1. 탐색 창의 관리에서 모든 디바이스를 확장한 다음 사물을 선택합니다.

  2. 코어를 선택합니다.

  3. 코어의 구성 페이지에서 인증서 탭을 선택합니다.

  4. 인증서 페이지에서 인증서를 선택합니다.

  5. 인증서의 구성 페이지에서 Policies(정책)을 선택한 다음 정책을 선택합니다.

    정책을 편집하려면 활성 버전 편집을 선택합니다.

  6. 정책을 검토하고 필요에 따라 권한을 추가, 제거 또는 편집합니다.

  7. 새 정책 버전을 활성 버전으로 설정하려면 정책 버전 상태에서 편집한 버전을 이 정책의 활성 버전으로 설정을 선택합니다.

  8. 새 버전으로 저장을 선택합니다.