AWS IoT Greengrass에 대한 디바이스 인증 및 권한 부여 - AWS IoT Greengrass

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

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 또한 인증서 및 정책을 통해 구성 요소 및 구성을 코어 장치에 AWS IoT Greengrass 배포할 수 있습니다.

  • 클라이언트 디바이스

    MQTT 클라이언트 장치는 인증서와 정책을 사용하여 AWS IoT Greengrass 서비스에 연결합니다. AWS IoT Core 이를 통해 클라이언트 디바이스는 AWS IoT Greengrass 클라우드 검색을 사용하여 Greengrass 코어 디바이스를 찾고 연결할 수 있습니다. 클라이언트 장치는 동일한 인증서를 사용하여 AWS IoT Core 클라우드 서비스 및 코어 장치에 연결합니다. 또한 클라이언트 디바이스는 코어 디바이스와의 상호 인증을 위해 검색 정보를 사용합니다. 자세한 설명은 로컬 IoT 기기와 상호작용 섹션을 참조하세요.

X.509 인증서

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

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

  • 인터넷에 연결되거나 인터넷을 통해 연결되는 AWS IoT Core Greengrass 코어 디바이스의 AWS IoT 클라이언트 구성 요소입니다. AWS IoT Greengrass

  • 인터넷을 AWS IoT Greengrass 통해 연결하여 코어 디바이스를 검색하는 클라이언트 디바이스.

  • 로컬 네트워크를 통해 그룹의 Greengrass 디바이스에 연결하는 Greengrass 코어의 MQTT 브로커 구성 요소입니다.

AWS IoT Greengrass코어 디바이스는 Greengrass 루트 폴더에 인증서를 저장합니다.

CA(인증 기관) 인증서

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

또한 클라이언트 디바이스는 Greengrass 코어 디바이스 CA 인증서를 다운로드합니다. 이들은 이 인증서를 사용하여 상호 인증 중에 코어 디바이스의 MQTT 서버 인증서를 검증합니다.

로컬 MQTT 브로커의 인증서 교체

클라이언트 장치 지원을 활성화하면 Greengrass 코어 장치는 클라이언트 장치가 상호 인증에 사용하는 로컬 MQTT 서버 인증서를 생성합니다. 이 인증서는 코어 디바이스가 클라우드에 저장하는 코어 디바이스 CA 인증서에 의해 서명됩니다AWS IoT Greengrass. 클라이언트 디바이스는 코어 디바이스를 발견하면 코어 디바이스 CA 인증서를 검색합니다. 코어 디바이스에 연결할 때 코어 디바이스 CA 인증서를 사용하여 코어 디바이스의 MQTT 서버 인증서를 확인합니다. 코어 디바이스 CA 인증서는 5년 후에 만료됩니다.

MQTT 서버 인증서는 기본적으로 7일마다 만료되며 이 기간을 2일에서 10일 사이로 구성할 수 있습니다. 이 제한된 기간은 보안 모범 사례를 기반으로 합니다. 이 로테이션은 공격자가 MQTT 서버 인증서와 개인 키를 도용하여 Greengrass 코어 디바이스를 가장하려는 위협을 완화하는 데 도움이 됩니다.

Greengrass 코어 디바이스는 MQTT 서버 인증서가 만료되기 24시간 전에 교체합니다. Greengrass 코어 디바이스는 새 인증서를 생성하고 로컬 MQTT 브로커를 다시 시작합니다. 이 경우 Greengrass 코어 디바이스에 연결된 모든 클라이언트 디바이스의 연결이 끊어집니다. 클라이언트 디바이스는 잠시 후 Greengrass 코어 디바이스에 다시 연결할 수 있습니다.

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

AWS IoT정책을 사용하여 AWS IoT Core 및 AWS IoT Greengrass 데이터 플레인에 대한 액세스를 승인하십시오. AWS IoT Core데이터 플레인은 장치, 사용자 및 애플리케이션에 대한 작업을 제공합니다. 이러한 작업에는 주제에 연결하고 주제를 구독하는 AWS IoT Core 기능이 포함됩니다. AWS IoT Greengrass데이터 플레인은 Greengrass 디바이스에 대한 작업을 제공합니다. 자세한 설명은 AWS IoT Greengrass V2 정책 작업 섹션을 참조하세요. 이러한 작업에는 구성 요소 종속성을 해결하고 공용 구성 요소 아티팩트를 다운로드하는 기능이 포함됩니다.

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 정책 조치를 참조하십시오.

중요

사물 정책 변수 (iot:Connection.Thing.*) 는 코어 디바이스 또는 Greengrass 데이터 플레인 작업에 대한 AWS IoT 정책에서 지원되지 않습니다. 대신 이름이 비슷한 여러 장치를 매칭하는 와일드카드를 사용할 수 있습니다. 예를 MyGreengrassDevice1 MyGreengrassDevice2 들어 MyGreengrassDevice* 일치하도록 지정하는 등의 작업을 수행할 수 있습니다.

참고

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

AWS IoT Greengrass V2 정책 작업

AWS IoT Greengrass V2Greengrass 코어 디바이스 및 클라이언트 디바이스가 정책에서 AWS IoT 사용할 수 있는 다음과 같은 정책 조치를 정의합니다. 정책 작업에 사용할 리소스를 지정하려면 해당 리소스의 Amazon 리소스 이름 (ARN) 을 사용합니다.

핵심 디바이스 작업
greengrass:GetComponentVersionArtifact

퍼블릭 구성 요소 아티팩트 또는 Lambda 구성 요소 아티팩트를 다운로드하기 위해 미리 서명된 URL을 가져올 권한을 부여합니다.

이 권한은 코어 디바이스가 퍼블릭 구성 요소 또는 아티팩트가 있는 Lambda를 지정하는 배포를 수신할 때 평가됩니다. 코어 디바이스에 아티팩트가 이미 있는 경우 아티팩트를 다시 다운로드하지 않습니다.

리소스 유형: componentVersion

리소스 ARN 형식: arn:aws:greengrass:region:account-id:components:component-name:versions:component-version

greengrass:ResolveComponentCandidates

배포를 위한 구성 요소, 버전 및 플랫폼 요구 사항을 충족하는 구성 요소 목록을 식별할 권한을 부여합니다. 요구 사항이 충돌하거나 요구 사항을 충족하는 구성 요소가 없는 경우 이 작업은 오류를 반환하고 디바이스에서 배포가 실패합니다.

이 권한은 핵심 기기가 구성 요소를 지정하는 배포를 받을 때 평가됩니다.

리소스 유형: 없음

리소스 ARN 형식: *

greengrass:GetDeploymentConfiguration

대용량 배포 문서를 다운로드하기 위해 미리 서명된 URL을 가져올 권한을 부여합니다.

이 권한은 코어 디바이스가 7KB (배포가 사물을 대상으로 하는 경우) 또는 31KB (배포가 사물 그룹을 대상으로 하는 경우) 보다 큰 배포 문서를 지정하는 배포를 받을 때 평가됩니다. 배포 문서에는 구성 요소 구성, 배포 정책 및 배포 메타데이터가 포함됩니다. 자세한 설명은 디바이스에 AWS IoT Greengrass 구성 요소 배포 섹션을 참조하세요.

이 기능은 Greengrass 핵 구성 요소 v2.3.0 이상에서 사용할 수 있습니다.

리소스 유형: 없음

리소스 ARN 형식: *

greengrass:ListThingGroupsForCoreDevice

핵심 장치의 사물 그룹 계층 구조를 가져올 권한을 부여합니다.

이 권한은 코어 디바이스가 배포를 수신할 때 AWS IoT Greengrass 확인됩니다. 코어 디바이스는 이 작업을 사용하여 마지막 배포 이후 사물 그룹에서 제거되었는지 여부를 식별합니다. 코어 장치가 사물 그룹에서 제거되고 해당 사물 그룹이 코어 장치에 대한 배포 대상인 경우 코어 장치는 해당 배포로 설치된 구성 요소를 제거합니다.

이 기능은 v2.5.0 이상의 Greengrass 핵 구성 요소에서 사용됩니다.

리소스 유형: (코어 디바이스) thing

리소스 ARN 형식: arn:aws:iot:region:account-id:thing/core-device-thing-name

greengrass:VerifyClientDeviceIdentity

코어 디바이스에 연결된 클라이언트 디바이스의 ID를 확인할 수 있는 권한을 부여합니다.

이 권한은 코어 장치가 클라이언트 장치 인증 구성 요소를 실행하고 클라이언트 장치로부터 MQTT 연결을 수신할 때 평가됩니다. 클라이언트 기기는 기기 인증서를 제공합니다. AWS IoT 그러면 코어 디바이스가 디바이스 인증서를 AWS IoT Greengrass 클라우드 서비스에 전송하여 클라이언트 디바이스의 ID를 확인합니다. 자세한 설명은 로컬 IoT 기기와 상호작용 섹션을 참조하세요.

리소스 유형: 없음

리소스 ARN 형식: *

greengrass:VerifyClientDeviceIoTCertificateAssociation

클라이언트 장치가 AWS IoT 인증서와 연결되어 있는지 여부를 확인할 수 있는 권한을 부여합니다.

이 권한은 코어 장치가 클라이언트 장치 인증 구성 요소를 실행하고 클라이언트 장치가 MQTT를 통해 연결하도록 승인할 때 평가됩니다. 자세한 설명은 로컬 IoT 기기와 상호작용 섹션을 참조하세요.

참고

코어 디바이스에서 이 작업을 사용하려면 Greengrass 서비스 역할을 사용자와 연결하고 권한을 허용해야 합니다. AWS 계정 iot:DescribeCertificate

리소스 유형: thing (클라이언트 장치)

리소스 ARN 형식: arn:aws:iot:region:account-id:thing/client-device-thing-name

greengrass:PutCertificateAuthorities

클라이언트 디바이스가 코어 디바이스를 확인하기 위해 다운로드할 수 있는 CA (인증 기관) 인증서를 업로드할 권한을 부여합니다.

이 권한은 코어 장치가 클라이언트 장치 인증 구성 요소를 설치하고 실행할 때 평가됩니다. 이 구성 요소는 로컬 인증 기관을 만들고 이 작업을 사용하여 CA 인증서를 업로드합니다. 클라이언트 장치는 Discover 작업을 사용하여 연결할 수 있는 핵심 장치를 찾을 때 이러한 CA 인증서를 다운로드합니다. 클라이언트 디바이스가 코어 디바이스의 MQTT 브로커에 연결되면 이러한 CA 인증서를 사용하여 코어 디바이스의 ID를 확인합니다. 자세한 설명은 로컬 IoT 기기와 상호작용 섹션을 참조하세요.

리소스 유형: 없음

ARN 형식: *

greengrass:GetConnectivityInfo

코어 디바이스의 연결 정보를 가져올 권한을 부여합니다. 이 정보는 클라이언트 장치를 코어 장치에 연결할 수 있는 방법을 설명합니다.

이 권한은 코어 장치가 클라이언트 장치 인증 구성 요소를 설치하고 실행할 때 평가됩니다. 이 구성 요소는 연결 정보를 사용하여 작업과 함께 AWS IoT Greengrass 클라우드 서비스에 업로드할 유효한 CA 인증서를 생성합니다. PutCertificateAuthories 클라이언트 디바이스는 이러한 CA 인증서를 사용하여 코어 디바이스의 ID를 확인합니다. 자세한 설명은 로컬 IoT 기기와 상호작용 섹션을 참조하세요.

AWS IoT Greengrass컨트롤 플레인에서 이 작업을 사용하여 코어 디바이스의 연결 정보를 볼 수도 있습니다. 자세한 내용을 알아보려면 AWS IoT Greengrass V1 API 참조GetConnectivityInfo 섹션을 참조하십시오.

리소스 유형: thing (코어 디바이스)

리소스 ARN 형식: arn:aws:iot:region:account-id:thing/core-device-thing-name

greengrass:UpdateConnectivityInfo

코어 디바이스의 연결 정보를 업데이트할 권한을 부여합니다. 이 정보는 클라이언트 장치를 코어 장치에 연결할 수 있는 방법을 설명합니다.

이 권한은 코어 장치가 IP 탐지기 구성 요소를 실행할 때 평가됩니다. 이 구성 요소는 클라이언트 장치가 로컬 네트워크의 핵심 장치에 연결하는 데 필요한 정보를 식별합니다. 그러면 이 구성 요소는 이 작업을 사용하여 연결 정보를 AWS IoT Greengrass 클라우드 서비스에 업로드하므로 클라이언트 장치가 검색 작업을 통해 이 정보를 검색할 수 있습니다. 자세한 설명은 로컬 IoT 기기와 상호작용 섹션을 참조하세요.

AWS IoT Greengrass컨트롤 플레인에서 이 작업을 사용하여 코어 디바이스의 연결 정보를 수동으로 업데이트할 수도 있습니다. 자세한 내용을 알아보려면 AWS IoT Greengrass V1 API 참조UpdateConnectivityInfo 섹션을 참조하십시오.

리소스 유형: thing (코어 디바이스)

리소스 ARN 형식: arn:aws:iot:region:account-id:thing/core-device-thing-name

클라이언트 디바이스 작업
greengrass:Discover

클라이언트 장치가 연결할 수 있는 핵심 장치의 연결 정보를 검색할 수 있는 권한을 부여합니다. 이 정보는 클라이언트 장치를 코어 장치에 연결할 수 있는 방법을 설명합니다. 클라이언트 장치는 BatchAssociateClientDeviceWithCoreDevice작업을 사용하여 연결된 핵심 장치만 검색할 수 있습니다. 자세한 설명은 로컬 IoT 기기와 상호작용 섹션을 참조하세요.

리소스 유형: thing (클라이언트 장치)

리소스 ARN 형식: arn:aws:iot:region:account-id:thing/client-device-thing-name

코어 디바이스 정책 업데이트 AWS IoT

AWS IoT Greengrass및 AWS IoT 콘솔 또는 AWS IoT API를 사용하여 핵심 장치의 정책을 보고 업데이트할 수 있습니다. AWS IoT

참고

AWS IoT Greengrass코어 소프트웨어 설치 프로그램을 사용하여 리소스를 프로비저닝한 경우 코어 기기에는 모든 AWS IoT Greengrass 작업에 대한 액세스를 허용하는 AWS IoT 정책이 있습니다 (). greengrass:* 다음 단계에 따라 코어 장치가 사용하는 작업에만 액세스를 제한할 수 있습니다.

  1. AWS IoT Greengrass콘솔 탐색 메뉴에서 Core devices를 선택합니다.

  2. 코어 디바이스 페이지에서 업데이트할 코어 디바이스를 선택합니다.

  3. 코어 디바이스 세부 정보 페이지에서 코어 디바이스의 사물로 연결되는 링크를 선택합니다. 이 링크를 클릭하면 AWS IoT 콘솔에서 사물 세부 정보 페이지가 열립니다.

  4. 사물 세부 정보 페이지에서 인증서를 선택합니다.

  5. 인증서 탭에서 사물의 활성 인증서를 선택합니다.

  6. 인증서 세부 정보 페이지에서 정책을 선택합니다.

  7. 정책 탭에서 검토 및 업데이트할 AWS IoT 정책을 선택합니다. 코어 디바이스의 활성 인증서에 연결된 모든 정책에 필요한 권한을 추가할 수 있습니다.

    참고

    AWS IoT Greengrass코어 소프트웨어 설치 프로그램을 사용하여 리소스를 프로비저닝한 경우 두 가지 AWS IoT 정책이 있습니다. 이름이 지정된 정책을 선택하는 것이 좋습니다 (있는 GreengrassV2IoTThingPolicy경우). 빠른 설치 프로그램으로 만든 코어 디바이스는 기본적으로 이 정책 이름을 사용합니다. 이 정책에 권한을 추가하면 이 정책을 사용하는 다른 핵심 장치에도 이러한 권한이 부여됩니다.

  8. 정책 개요에서 활성 버전 편집을 선택합니다.

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

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

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

  1. 핵심 장치 사물에 대한 원칙을 나열하십시오. AWS IoT 사물 주체는 X.509 장치 인증서 또는 기타 식별자일 수 있습니다. 다음 명령을 실행하고 코어 디바이스의 이름으로 MyGreengrassCore바꿉니다.

    aws iot list-thing-principals --thing-name MyGreengrassCore

    이 작업은 코어 디바이스의 사물 주체를 나열하는 응답을 반환합니다.

    { "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/certificateId" ] }
  2. 코어 디바이스의 활성 인증서를 식별하십시오. 다음 명령을 실행하고 활성 인증서를 찾을 때까지 CertificateID를 이전 단계의 각 인증서 ID로 바꿉니다. 인증서 ID는 인증서 ARN 끝에 있는 16진수 문자열입니다. --query인수는 인증서 상태만 출력하도록 지정합니다.

    aws iot describe-certificate --certificate-id certificateId --query 'certificateDescription.status'

    작업은 인증서 상태를 문자열로 반환합니다. 예를 들어 인증서가 활성 상태인 경우 이 작업이 "ACTIVE" 출력됩니다.

  3. 인증서에 첨부된 AWS IoT 정책을 나열하십시오. 다음 명령을 실행하고 인증서 ARN을 인증서의 ARN으로 교체합니다.

    aws iot list-principal-policies --principal arn:aws:iot:us-west-2:123456789012:cert/certificateId

    이 작업은 인증서에 연결된 AWS IoT 정책을 나열하는 응답을 반환합니다.

    { "policies": [ { "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias" }, { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy" } ] }
  4. 보고 업데이트할 정책을 선택합니다.

    참고

    AWS IoT Greengrass코어 소프트웨어 설치 프로그램을 사용하여 리소스를 프로비저닝한 경우 두 가지 AWS IoT 정책이 있습니다. 이름이 지정된 정책을 선택하는 것이 좋습니다 (있는 GreengrassV2IoTThingPolicy경우). 빠른 설치 프로그램으로 만든 코어 디바이스는 기본적으로 이 정책 이름을 사용합니다. 이 정책에 권한을 추가하면 이 정책을 사용하는 다른 핵심 장치에도 이러한 권한이 부여됩니다.

  5. 정책 문서를 가져오세요. 다음 명령을 실행하고 ThingPolicyGreenGrassV2IoT를 정책 이름으로 대체합니다.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy

    이 작업은 정책 문서와 정책에 대한 기타 정보가 포함된 응답을 반환합니다. 정책 문서는 문자열로 직렬화된 JSON 객체입니다.

    { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\"iot:Connect\\",\ \\"iot:Publish\\",\ \\"iot:Subscribe\\",\ \\"iot:Receive\\",\ \\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "defaultVersionId": "1", "creationDate": "2021-02-05T16:03:14.098000-08:00", "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00", "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f" }
  6. 온라인 변환기나 다른 도구를 사용하여 정책 문서 문자열을 JSON 객체로 변환한 다음 이 문자열을 이름이 지정된 파일에 저장합니다. iot-policy.json

    예를 들어 jq 도구가 설치되어 있는 경우 다음 명령을 실행하여 정책 문서를 가져와서 JSON 개체로 변환한 다음 정책 문서를 JSON 개체로 저장할 수 있습니다.

    aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
  7. 정책 문서를 검토하고 필요에 따라 권한을 추가, 제거 또는 편집하십시오.

    예를 들어, Linux 기반 시스템에서는 다음 명령을 실행하여 GNU nano를 사용하여 파일을 열 수 있습니다.

    nano iot-policy.json

    완료하면 정책 문서가 코어 디바이스의 최소 AWS IoT 정책과 비슷해 보일 수 있습니다.

  8. 변경 내용을 새 버전의 정책으로 저장합니다. 다음 명령을 실행하고 ThingPolicyGreenGrassV2IoT를 정책 이름으로 대체합니다.

    aws iot create-policy-version --policy-name GreengrassV2IoTThingPolicy --policy-document file://iot-policy.json --set-as-default

    작업이 성공하면 다음 예제와 비슷한 응답이 반환됩니다.

    { "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\t\\t\\"iot:Connect\\",\ \\t\\t\\"iot:Publish\\",\ \\t\\t\\"iot:Subscribe\\",\ \\t\\t\\"iot:Receive\\",\ \\t\\t\\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "policyVersionId": "2", "isDefaultVersion": true }

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

중요

이후 버전의 Greengrass nucleus 구성 요소에는 최소 정책에 대한 추가 권한이 필요합니다. AWS IoT 추가 권한을 부여하려면 코어 디바이스의 AWS IoT 정책을 업데이트해야 할 수 있습니다.

  • Greengrass nucleus v2.5.0 이상을 실행하는 코어 디바이스는 사물 그룹에서 코어 디바이스를 제거할 때 greengrass:ListThingGroupsForCoreDevice 권한을 사용하여 구성 요소를 제거합니다.

  • Greengrass nucleus v2.3.0 이상을 실행하는 코어 디바이스는 greengrass:GetDeploymentConfiguration 권한을 사용하여 대규모 배포 구성 문서를 지원합니다.

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

  • Connect정책에는 코어 디바이스 사물 이름 뒤에 * 와일드카드가 포함됩니다 (예:). core-device-thing-name* 코어 디바이스는 동일한 디바이스 인증서를 사용하여 여러 개의 동시 구독을 수행하지만 연결의 클라이언트 ID가 코어 디바이스 사물 이름과 정확히 일치하지 않을 수 있습니다. AWS IoT Core 처음 50개 구독 이후에는 코어 기기가 클라이언트 core-device-thing-name#number ID로 사용하며, 이 ID는 구독이 50개 추가될 때마다 number 증가합니다. 예를 들어, 라는 이름의 코어 디바이스에서 150개의 동시 구독을 MyCoreDevice 생성하는 경우 다음 클라이언트 ID를 사용합니다.

    • 구독 1~50: MyCoreDevice

    • 구독 51건부터 100건까지: MyCoreDevice#2

    • 서브스크립션 101~150: MyCoreDevice#3

    와일드카드를 사용하면 접미사가 있는 이러한 클라이언트 ID를 사용하는 코어 장치를 연결할 수 있습니다.

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

  • 이 정책은 원격 분석 데이터에 대해 다음 주제에 게시할 권한을 부여합니다.

    $aws/things/core-device-thing-name/greengrass/health/json

    원격 분석을 사용하지 않도록 설정한 핵심 장치에 대해서는 이 권한을 제거할 수 있습니다. 자세한 설명은 AWS IoT Greengrass핵심 장치에서 시스템 상태 원격 측정 데이터 수집 섹션을 참조하세요.

  • 정책은 역할 별칭을 통해 AWS IoT IAM 역할을 수임할 권한을 부여합니다. 코어 디바이스는 토큰 교환 역할이라고 하는 이 역할을 사용하여 요청을 AWS 인증하는 데 사용할 수 있는 AWS 자격 증명을 획득합니다. 자세한 설명은 핵심 장치가 서비스와 상호 작용할 AWS 수 있도록 권한 부여 섹션을 참조하세요.

    AWS IoT GreengrassCore 소프트웨어를 설치할 때 이 권한만 포함하는 두 번째 AWS IoT 정책을 생성하여 연결합니다. 코어 장치의 기본 정책에 이 권한을 포함하면 다른 AWS IoT AWS IoT 정책을 분리하고 삭제할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "arn:aws:iot:region:account-id:client/core-device-thing-name*" }, { "Effect": "Allow", "Action": [ "iot:Receive", "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/greengrass/health/json", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/greengrassv2/health/json", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/jobs/*", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name/shadow/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name/jobs/*", "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name/shadow/*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:region:account-id:rolealias/token-exchange-role-alias-name" }, { "Effect": "Allow", "Action": [ "greengrass:GetComponentVersionArtifact", "greengrass:ResolveComponentCandidates", "greengrass:GetDeploymentConfiguration", "greengrass:ListThingGroupsForCoreDevice" ], "Resource": "*" } ] }

클라이언트 AWS IoT 장치를 지원하기 위한 최소 정책

다음 예제 정책에는 코어 장치에서 클라이언트 장치와의 상호 작용을 지원하는 데 필요한 최소 작업 집합이 포함되어 있습니다. 클라이언트 장치를 지원하려면 코어 장치에 기본 작동을 위한 최소 AWS IoT 정책 외에도 이 AWS IoT 정책의 사용 권한이 있어야 합니다.

  • 정책을 통해 코어 기기는 자체 연결 정보를 업데이트할 수 있습니다. 이 권한 (greengrass:UpdateConnectivityInfo) 은 IP 탐지기 구성 요소를 코어 장치에 배포하는 경우에만 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name-gci/shadow/get" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name-gci/shadow/update/delta", "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-device-thing-name-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name-gci/shadow/update/delta", "arn:aws:iot:region:account-id:topic/$aws/things/core-device-thing-name-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "greengrass:PutCertificateAuthorities", "greengrass:VerifyClientDeviceIdentity" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "greengrass:VerifyClientDeviceIoTCertificateAssociation" ], "Resource": "arn:aws:iot:region:account-id:thing/*" }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-device-thing-name" ] } ] }

클라이언트 디바이스에 대한 최소 AWS IoT 정책

다음 예제 정책에는 클라이언트 장치가 MQTT를 통해 연결 및 통신하는 핵심 장치를 검색하는 데 필요한 최소 작업 집합이 포함되어 있습니다. 클라이언트 장치 AWS IoT 정책에는 장치가 관련 Greengrass 코어 장치에 대한 연결 정보를 검색할 수 있도록 허용하는 greengrass:Discover 작업이 포함되어야 합니다. Resource섹션에서 Greengrass 코어 디바이스의 ARN이 아닌 클라이언트 디바이스의 Amazon 리소스 이름 (ARN) 을 지정하십시오.

  • 이 정책은 모든 MQTT 주제에 대한 통신을 허용합니다. 베스트 보안 프랙티스를 따르려면 iot:Publishiot:Subscribe, 및 iot:Receive 권한을 클라이언트 장치가 사용 사례에 요구하는 최소 항목으로 제한하십시오.

  • 정책을 통해 AWS IoT 사물은 모든 사물에 대한 핵심 장치를 검색할 수 있습니다. 최상의 보안 관행을 따르려면 클라이언트 장치의 사물 또는 AWS IoT AWS IoT 사물 집합과 일치하는 와일드카드로 greengrass:Discover 권한을 제한하십시오.

    중요

    사물 정책 변수 (iot:Connection.Thing.*) 는 코어 디바이스 또는 Greengrass 데이터 플레인 작업에 대한 AWS IoT 정책에서 지원되지 않습니다. 대신 이름이 비슷한 여러 장치를 매칭하는 와일드카드를 사용할 수 있습니다. 예를 MyGreengrassDevice1 MyGreengrassDevice2 들어 MyGreengrassDevice* 일치하도록 지정하는 등의 작업을 수행할 수 있습니다.

  • Greengrass 코어 디바이스가 클라이언트 디바이스의 섀도우 동기화 iot:DeleteThingShadow 작업을 처리하기 때문에 클라이언트 디바이스의 AWS IoT 정책에는 일반적으로 권한 또는 작업이 필요하지 않습니다. iot:GetThingShadow iot:UpdateThingShadow 코어 디바이스가 클라이언트 디바이스 섀도우를 처리할 수 있도록 하려면 코어 디바이스의 AWS IoT 정책에서 이러한 작업을 허용하고 Resource 섹션에 클라이언트 디바이스의 ARN이 포함되어 있는지 확인하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:region:account-id:topic/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/*" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region:account-id:thing/*" ] } ] }