클라이언트 디바이스 인증 - AWS IoT Greengrass

클라이언트 디바이스 인증

클라이언트 디바이스 인증 구성 요소(aws.greengrass.clientdevices.Auth)에서는 클라이언트 디바이스가 인증되고 클라이언트 디바이스 작업이 승인됩니다.

참고

클라이언트 디바이스는 Greengrass 코어 디바이스에 연결되어 처리할 MQTT 메시지와 데이터를 보내는 로컬 IoT 디바이스입니다. 자세한 내용은 로컬 IoT 디바이스와 상호 작용 단원을 참조하십시오.

버전

참고

클라이언트 디바이스 인증 버전 2.3.0은 중단되었습니다. 클라이언트 디바이스 인증 버전 2.3.1 이상으로 업그레이드하는 것이 좋습니다.

이 구성 요소에는 다음과 같은 버전이 있습니다.

  • 2.4.x

  • 2.3.x

  • 2.2.x

  • 2.1.x

  • 2.0.x

유형

이 구성 요소는 플러그인 구성 요소(aws.greengrass.plugin)입니다. Greengrass nucleus는 이 구성 요소를 nucleus와 동일한 Java 가상 머신(JVM)에서 실행합니다. 코어 디바이스에서 이 구성 요소의 버전을 변경하면 nucleus가 다시 시작됩니다.

이 구성 요소에서는 Greengrass nucleus와 동일한 로그 파일이 사용됩니다. 자세한 내용은 AWS IoT Greengrass 로그 모니터링 단원을 참조하십시오.

자세한 내용은 구성 요소 유형 단원을 참조하십시오.

운영 체제

이 구성 요소는 다음 운영 체제를 실행하는 코어 디바이스에 설치할 수 있습니다.

  • Linux

  • Windows

요구 사항

이 구성 요소의 요구 사항은 다음과 같습니다.

  • Greengrass 서비스 역할은 AWS 계정에 연결되어야 하며 iot:DescribeCertificate 권한이 허용되어야 합니다.

  • 코어 디바이스의 AWS IoT 정책에서는 다음 권한이 허용되어야 합니다.

    • 이 구성 요소가 실행되는 코어 디바이스의 ARN이 리소스에 포함되어 있는 greengrass:GetConnectivityInfo

    • 코어 디바이스에 연결되는 각 클라이언트 디바이스의 Amazon 리소스 이름(ARN)이 리소스에 포함되어 있는 greengrass:VerifyClientDeviceIoTCertificateAssociation

    • greengrass:VerifyClientDeviceIdentity

    • greengrass:PutCertificateAuthorities

    • 다음 MQTT 주제의 ARN이 리소스에 포함되어 있는 iot:Publish

      • $aws/things/coreDeviceThingName*-gci/shadow/get

    • 다음 MQTT 주제 필터의 ARN이 리소스에 포함되어 있는 iot:Subscribe

      • $aws/things/coreDeviceThingName*-gci/shadow/update/delta

      • $aws/things/coreDeviceThingName*-gci/shadow/get/accepted

    • 다음 MQTT 주제의 ARN이 리소스에 포함되어 있는 iot:Receive

      • $aws/things/coreDeviceThingName*-gci/shadow/update/delta

      • $aws/things/coreDeviceThingName*-gci/shadow/get/accepted

    자세한 내용은 데이터 영역 작업에 대한 AWS IoT 정책클라이언트 디바이스가 지원되는 최소 AWS IoT 정책 단원을 참조하세요.

  • (선택 사항) 오프라인 인증을 사용하려면 AWS IoT Greengrass 서비스에 사용되는 AWS Identity and Access Management (IAM) 역할에 다음 권한이 있어야 합니다.

    • 코어 디바이스에서 사용하여 오프라인 인증 대상 클라이언트를 나열할 수 있는 greengrass:ListClientDevicesAssociatedWithCoreDevice입니다.

  • VPC에서 클라이언트 디바이스 인증 구성 요소의 실행이 지원됩니다. 이 구성 요소를 VPC에 배포하려면 다음이 필요합니다.

    • 클라이언트 디바이스 인증 구성 요소에는 AWS IoT data, AWS IoT 자격 증명 및 Amazon S3에 대한 연결이 있어야 합니다.

엔드포인트 및 포트

이 구성 요소는 기본 작업에 필요한 엔드포인트 및 포트 외에 다음 엔드포인트 및 포트에 대한 아웃바운드 요청도 수행할 수 있어야 합니다. 자세한 내용은 프록시 또는 방화벽을 통해 디바이스 트래픽 허용 단원을 참조하십시오.

엔드포인트 포트 필수 설명

iot.region.amazonaws.com

443

AWS IoT 사물 인증서에 대한 정보를 가져오는 데 사용됩니다.

의존성

구성 요소를 배포하면 AWS IoT Greengrass에서 해당 종속성의 호환 버전도 배포합니다. 즉, 구성 요소를 성공적으로 배포하려면 구성 요소 및 모든 해당 종속성에 대한 요구 사항을 충족해야 합니다. 이 단원에는 이 구성 요소의 릴리스된 버전에 대한 종속성과 각 종속성에 대한 구성 요소 버전을 정의하는 의미 체계 버전 제약 조건이 나열되어 있습니다. AWS IoT Greengrass 콘솔에서도 각 구성 요소 버전에 대한 종속성을 볼 수 있습니다. 구성 요소 세부 정보 페이지에서 종속성 목록을 찾습니다.

2.5.1

다음 표에는 이 구성 요소의 버전 2.5.1에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <2.14.0 소프트
2.4.4 - 2.5.0

다음 표에는 이 구성 요소의 버전 2.4.4에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <2.13.0 소프트
2.4.3

다음 표에는 이 구성 요소의 버전 2.4.3에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <2.12.0 소프트
2.4.1 and 2.4.2

다음 표에는 이 구성 요소의 버전 2.4.1 및 2.4.2에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <2.11.0 소프트
2.3.0 – 2.4.0

다음 표에는 이 구성 요소의 버전 2.3.0~2.4.0에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <2.10.0 소프트
2.3.0

다음 표에는 이 구성 요소의 버전 2.3.0에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <2.10.0 소프트
2.2.3

다음 표에는 이 구성 요소의 버전 2.2.3에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <=2.9.0 소프트
2.2.2

다음 표에는 이 구성 요소의 버전 2.2.2에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <=2.8.0 소프트
2.2.1

다음 표에는 이 구성 요소의 버전 2.2.1에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <2.8.0 소프트
2.2.0

다음 표에는 이 구성 요소의 버전 2.2.0에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.6.0 <2.7.0 소프트
2.1.0

다음 표에는 이 구성 요소의 버전 2.1.0에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.2.0 <2.7.0 소프트
2.0.4

다음 표에는 이 구성 요소의 버전 2.0.4에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.2.0 <2.6.0 소프트
2.0.2 and 2.0.3

다음 표에는 이 구성 요소의 버전 2.0.2 및 2.0.3에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.2.0 <2.5.0 소프트
2.0.1

다음 표에는 이 구성 요소의 버전 2.0.1에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.2.0 <2.4.0 소프트
2.0.0

다음 표에는 이 구성 요소의 버전 2.0.0에 대한 종속성이 나열되어 있습니다.

종속성 호환 버전 종속성 유형
Greengrass nucleus >=2.2.0 <2.3.0 소프트

구성 요소 종속성에 대한 자세한 내용은 구성 요소 레시피 참조를 참조하세요.

구성

이 구성 요소는 구성 요소를 배포할 때 사용자 지정할 수 있는 다음 구성 파라미터를 제공합니다.

참고

구독 권한은 로컬 MQTT 브로커에 대한 클라이언트 구독 요청 중에 평가됩니다. 클라이언트의 기존 구독 권한이 취소되면 클라이언트에서는 더는 주제를 구독할 수 없습니다. 그러나 이전에 구독한 주제의 메시지는 계속 수신됩니다. 이 동작을 방지하려면 강제로 클라이언트의 권한이 다시 부여되도록 구독 권한을 취소한 후 로컬 MQTT 브로커를 다시 시작해야 합니다.

MQTT 5 브로커(EMQX) 구성 요소의 경우 restartIdentifier 구성을 업데이트하여 MQTT 5 브로커를 다시 시작합니다.

MQTT 3.1.1 브로커(Moquette) 구성 요소의 경우 서버 인증서가 변경되어 클라이언트에 강제로 다시 권한이 부여되면 기본적으로 매주 다시 시작됩니다. 코어 디바이스의 연결 정보(IP 주소)를 변경하거나 배포를 적용하여 브로커 구성 요소를 제거한 다음에 나중에 다시 배포하여 강제로 다시 시작할 수 있습니다.

v2.5.0
deviceGroups

디바이스 그룹은 코어 디바이스와 연결하고 통신할 권한이 있는 클라이언트 디바이스 그룹입니다. 선택 규칙을 사용하여 클라이언트 디바이스 그룹을 식별하고 디바이스 그룹마다 권한을 지정하는 클라이언트 디바이스 권한 부여 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

formatVersion

이 구성 객체의 형식 버전입니다.

다음 옵션 중 하나를 선택합니다.

  • 2021-03-05

definitions

이 코어 디바이스의 디바이스 그룹입니다. 각 정의에서는 클라이언트 디바이스가 그룹의 멤버인지 평가할 선택 규칙이 지정됩니다. 각 정의에서는 선택 규칙과 일치하는 클라이언트 디바이스에 적용할 권한 정책도 지정됩니다. 클라이언트 디바이스가 여러 디바이스 그룹의 멤버인 경우 디바이스의 권한은 각 그룹의 권한 정책으로 구성됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

groupNameKey

이 디바이스 그룹의 이름입니다. 이 디바이스 그룹을 식별하는 데 도움이 되는 이름으로 groupNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

selectionRule

이 디바이스 그룹의 멤버인 클라이언트 디바이스가 지정되는 쿼리입니다. 클라이언트 디바이스가 연결되면 코어 디바이스에서는 이 선택 규칙을 평가하여 클라이언트 디바이스가 이 디바이스 그룹의 멤버인지 결정됩니다. 클라이언트 디바이스가 멤버인 경우 코어 디바이스에서는 이 디바이스 그룹의 정책을 사용하여 클라이언트 디바이스의 작업에 권한이 부여됩니다.

각 선택 규칙은 클라이언트 디바이스와 일치할 수 있는 단일 표현식 쿼리인 하나 이상의 선택 규칙 절로 구성됩니다. 선택 규칙에서는 AWS IoT 플릿 인덱싱과 동일한 쿼리 구문이 사용됩니다. 선택 규칙 구문에 대한 자세한 내용은 AWS IoT Core 개발자 안내서AWS IoT 플릿 인덱싱 쿼리 구문을 참조하세요.

여러 클라이언트 디바이스가 하나의 선택 규칙 절과 일치되도록 와일드카드(*)를 사용합니다. 지정하는 문자열로 이름이 시작하거나 끝나는 클라이언트 디바이스와 일치하도록 사물 이름의 시작과 끝에 이 와일드카드를 사용할 수 있습니다. 모든 클라이언트 디바이스가 일치되도록 이 와일드카드를 사용할 수도 있습니다.

참고

콜론 문자(:)가 있는 값을 선택하려면 백슬래시 문자(\)로 콜론을 이스케이프합니다. JSON과 같은 형식에서는 백슬래시 문자를 이스케이프해야 하므로 콜론 문자 앞에 백슬래시 문자 2개를 입력합니다. 예를 들어 thingName: MyTeam\\:ClientDevice1를 지정하여 이름이 MyTeam:ClientDevice1인 사물을 선택합니다.

다음 선택기를 지정할 수 있습니다.

  • thingName - 클라이언트 디바이스의 AWS IoT 사물 이름입니다.

예 선택 규칙 예제

다음 선택 규칙에서는 이름이 MyClientDevice1 또는 MyClientDevice2인 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice1 OR thingName: MyClientDevice2
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice*
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 끝나는 클라이언트 디바이스가 일치됩니다.

thingName: *MyClientDevice
예 선택 규칙 예제(모든 디바이스 일치)

다음 선택 규칙에서는 모든 클라이언트 디바이스가 일치됩니다.

thingName: *
policyName

이 디바이스 그룹의 클라이언트 디바이스에 적용되는 권한 정책입니다. policies 객체에서 정의하는 정책의 이름이 지정됩니다.

policies

코어 디바이스에 연결되는 클라이언트 디바이스에 대한 클라이언트 디바이스 권한 부여 정책입니다. 각 권한 부여 정책을 통해 작업 세트 및 클라이언트 디바이스에서 해당 작업을 수행할 수 있는 리소스가 지정됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

policyNameKey

이 권한 부여 정책의 이름입니다. 이 권한 부여 정책을 식별하는 데 도움이 되는 이름으로 policyNameKey를 바꿉니다. 이 정책 이름을 사용하여 디바이스 그룹에 적용되는 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

statementNameKey

이 정책 문의 이름입니다. 이 정책 문을 식별하는 데 도움이 되는 이름으로 statementNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

operations

이 정책의 리소스에 허용되는 작업 목록입니다.

다음 작업을 임의로 포함할 수 있습니다.

  • mqtt:connect – 코어 디바이스에 연결하는 권한을 부여합니다. 코어 디바이스에 연결하려면 클라이언트 디바이스에 이 권한이 있어야 합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:clientId:deviceClientId - 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로 deviceClientId를 바꿉니다.

  • mqtt:publish - 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topic:mqttTopic - 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로 mqttTopic을 바꿉니다.

      이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.

  • mqtt:subscribe – 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topicfilter:mqttTopicFilter - 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로 mqttTopicFilter를 바꿉니다.

      이 리소스에서는 +# MQTT 주제 와일드카드가 지원됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서MQTT 주제를 참조하세요.

      클라이언트 디바이스에서는 사용자가 허용하는 정확한 주제 필터가 구독될 수 있습니다. 예를 들어 클라이언트 디바이스에 mqtt:topicfilter:client/+/status 리소스 구독을 허용하면 클라이언트 디바이스에서는 client/+/status가 구독될 수 있지만 client/client1/status은 구독될 수 없습니다.

와일드카드(*)를 지정하여 모든 작업에 대한 액세스를 허용할 수 있습니다.

resources

이 정책의 작업에 허용되는 리소스 목록입니다. 이 정책의 작업에 해당하는 리소스를 지정합니다. 예를 들어 mqtt:publish 작업이 지정되는 정책에서 MQTT 주제 리소스(mqtt:topic:mqttTopic) 목록을 지정할 수 있습니다.

리소스 변수 내 임의의 위치에 와일드카드(*)를 지정하여 모든 리소스에 대한 액세스를 허용할 수 있습니다. 예를 들어 mqtt:topic:my*를 지정하여 해당 입력과 일치하는 리소스에 대한 액세스를 허용할 수 있습니다.

다음 리소스 변수가 지원됩니다.

  • mqtt:topic:${iot:Connection.Thing.ThingName}

    현재 정책이 평가되고 있는 AWS IoT Core 레지스트리의 사물 이름으로 해석됩니다. AWS IoT Core는 인증 시 디바이스가 제공하는 인증서를 사용하여 연결 확인에 사용할 사물을 결정합니다. 이 정책 변수는 디바이스가 MQTT 또는 WebSocket 프로토콜을 통한 MQTT를 통해 연결하는 경우에만 사용할 수 있습니다.

statementDescription

(선택 사항) 이 정책 문에 대한 설명입니다.

certificates

(선택 사항) 이 코어 디바이스의 인증서 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

serverCertificateValiditySeconds

(선택 사항) 로컬 MQTT 서버 인증서가 만료되는 시간(초)입니다. 이 옵션을 구성하여 클라이언트 디바이스와 코어 디바이스의 연결 해제 및 재연결 빈도를 사용자 지정할 수 있습니다.

이 구성 요소에서는 로컬 MQTT 서버 인증서가 만료 24시간 전에 교체됩니다. MQTT 브로커(예: Moquette MQTT 브로커 구성 요소)에서는 새 인증서가 생성되어 다시 시작됩니다. 이 경우에는 이 코어 디바이스에 연결된 모든 클라이언트 디바이스의 연결이 해제됩니다. 짧은 기간 뒤에 코어 디바이스에 클라이언트 디바이스가 다시 연결될 수 있습니다.

기본값: 604800(7일)

최솟값: 172800(2일)

최댓값: 864000(10일)

performance

(선택 사항) 이 코어 디바이스의 성능 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

maxActiveAuthTokens

(선택 사항) 최대 활성 클라이언트 디바이스 권한 부여 토큰 수입니다. 이 수를 늘리면 다시 인증하지 않아도 더 많은 수의 클라이언트 디바이스가 단일 코어 디바이스에 연결될 수 있습니다.

기본값: 2500

cloudRequestQueueSize

(선택 사항) 이 구성 요소에서 요청이 거부되기 전에 대기열에 등록되는 최대 AWS 클라우드 요청 수입니다.

기본값: 100

maxConcurrentCloudRequests

(선택 사항) AWS 클라우드에 보낼 최대 동시 요청 수입니다. 이 수를 늘려 많은 수의 클라이언트 디바이스를 연결하는 코어 디바이스의 인증 성능을 개선할 수 있습니다.

기본값: 1

certificateAuthority

(선택 사항) 코어 디바이스 중간 기관을 자신의 중간 인증 기관으로 바꾸는 인증 기관 구성 옵션입니다.

참고

사용자 지정 인증 기관(CA)으로 Greengrass 코어 디바이스를 구성하고 동일한 CA를 사용하여 클라이언트 디바이스 인증서를 발급하는 경우 Greengrass에서는 클라이언트 디바이스 MQTT 작업에 대한 권한 부여 정책 확인이 우회됩니다. 클라이언트 디바이스 인증 구성 요소에서는 사용하도록 구성된 CA에서 서명한 인증서를 사용하는 클라이언트가 완전히 신뢰됩니다.

사용자 지정 CA를 사용할 때 이 동작을 제한하려면 다른 CA 또는 중간 CA를 사용하여 클라이언트 디바이스를 생성하고 서명한 다음에 올바른 중간 CA를 가리키도록 certificateUricertificateChainUri 필드를 조정합니다.

이 객체에는 다음 정보가 포함됩니다.

certificateUri

인증서의 위치입니다. 하드웨어 보안 모듈에 저장된 인증서를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

certificateChainUri

코어 디바이스 CA에 대한 인증서 체인의 위치입니다. 루트 CA로 돌아가는 전체 인증서 체인이어야 합니다. 하드웨어 보안 모듈에 저장된 인증서 체인을 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

privateKeyUri

코어 디바이스의 프라이빗 키 위치입니다. 하드웨어 보안 모듈에 저장된 인증서 프라이빗 키를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

security

(선택 사항) 이 코어 디바이스의 보안 구성 옵션입니다. 이 객체에는 다음 정보가 포함됩니다.

clientDeviceTrustDurationMinutes

코어 디바이스로 재인증해야 하기 전에 클라이언트 디바이스의 인증 정보를 신뢰할 수 있는 기간(분)입니다. 기본값은 1입니다.

metrics

(선택 사항) 이 코어 디바이스의 지표 옵션입니다. 클라이언트 디바이스 인증에 오류가 있는 경우에만 오류 지표가 표시됩니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

disableMetrics

disableMetrics 필드가 true로 설정된 경우 클라이언트 디바이스 인증에서는 지표가 수집되지 않습니다.

기본값: false

aggregatePeriodSeconds

클라이언트 디바이스에서 지표가 집계되어 원격 측정 에이전트로 보내지는 빈도가 결정되는 기간(초). 원격 측정 에이전트에서는 여전히 하루에 한 번씩 지표가 게시되기 때문에 지표가 게시되는 빈도는 변경되지 않습니다.

기본값: 3600

startupTimeoutSeconds

(선택 사항) 구성 요소가 시작되는 최대 시간(초)입니다. 이 제한 시간이 초과되면 구성 요소의 상태가 BROKEN으로 변경됩니다.

기본값: 120

예제: 구성 병합 업데이트(제한적 정책 사용)

다음 예제 구성에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
예제: 구성 병합 업데이트(허용적 정책 사용)

다음 예제 구성에서는 모든 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
예제: 구성 병합 업데이트(사물 이름 정책 사용)

다음 예제 구성에서는 클라이언트 디바이스에서 클라이언트 디바이스의 사물 이름으로 시작하고 문자열 topic으로 끝나는 주제에 게시할 수 있습니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "myThing": { "selectionRule": "thingName: *", "policyName": "MyThingNamePolicy" } }, "policies": { "MyThingNamePolicy": { "policyStatement": { "statementDescription": "mqtt publish", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:${iot:Connection.Thing.ThingName}/*/topic" ] } } } } }
v2.4.5
deviceGroups

디바이스 그룹은 코어 디바이스와 연결하고 통신할 권한이 있는 클라이언트 디바이스 그룹입니다. 선택 규칙을 사용하여 클라이언트 디바이스 그룹을 식별하고 디바이스 그룹마다 권한을 지정하는 클라이언트 디바이스 권한 부여 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

formatVersion

이 구성 객체의 형식 버전입니다.

다음 옵션 중 하나를 선택합니다.

  • 2021-03-05

definitions

이 코어 디바이스의 디바이스 그룹입니다. 각 정의에서는 클라이언트 디바이스가 그룹의 멤버인지 평가할 선택 규칙이 지정됩니다. 각 정의에서는 선택 규칙과 일치하는 클라이언트 디바이스에 적용할 권한 정책도 지정됩니다. 클라이언트 디바이스가 여러 디바이스 그룹의 멤버인 경우 디바이스의 권한은 각 그룹의 권한 정책으로 구성됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

groupNameKey

이 디바이스 그룹의 이름입니다. 이 디바이스 그룹을 식별하는 데 도움이 되는 이름으로 groupNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

selectionRule

이 디바이스 그룹의 멤버인 클라이언트 디바이스가 지정되는 쿼리입니다. 클라이언트 디바이스가 연결되면 코어 디바이스에서는 이 선택 규칙을 평가하여 클라이언트 디바이스가 이 디바이스 그룹의 멤버인지 결정됩니다. 클라이언트 디바이스가 멤버인 경우 코어 디바이스에서는 이 디바이스 그룹의 정책을 사용하여 클라이언트 디바이스의 작업에 권한이 부여됩니다.

각 선택 규칙은 클라이언트 디바이스와 일치할 수 있는 단일 표현식 쿼리인 하나 이상의 선택 규칙 절로 구성됩니다. 선택 규칙에서는 AWS IoT 플릿 인덱싱과 동일한 쿼리 구문이 사용됩니다. 선택 규칙 구문에 대한 자세한 내용은 AWS IoT Core 개발자 안내서AWS IoT 플릿 인덱싱 쿼리 구문을 참조하세요.

여러 클라이언트 디바이스가 하나의 선택 규칙 절과 일치되도록 와일드카드(*)를 사용합니다. 지정하는 문자열로 이름이 시작하거나 끝나는 클라이언트 디바이스와 일치하도록 사물 이름의 시작과 끝에 이 와일드카드를 사용할 수 있습니다. 모든 클라이언트 디바이스가 일치되도록 이 와일드카드를 사용할 수도 있습니다.

참고

콜론 문자(:)가 있는 값을 선택하려면 백슬래시 문자(\)로 콜론을 이스케이프합니다. JSON과 같은 형식에서는 백슬래시 문자를 이스케이프해야 하므로 콜론 문자 앞에 백슬래시 문자 2개를 입력합니다. 예를 들어 thingName: MyTeam\\:ClientDevice1를 지정하여 이름이 MyTeam:ClientDevice1인 사물을 선택합니다.

다음 선택기를 지정할 수 있습니다.

  • thingName - 클라이언트 디바이스의 AWS IoT 사물 이름입니다.

예 선택 규칙 예제

다음 선택 규칙에서는 이름이 MyClientDevice1 또는 MyClientDevice2인 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice1 OR thingName: MyClientDevice2
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice*
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 끝나는 클라이언트 디바이스가 일치됩니다.

thingName: *MyClientDevice
예 선택 규칙 예제(모든 디바이스 일치)

다음 선택 규칙에서는 모든 클라이언트 디바이스가 일치됩니다.

thingName: *
policyName

이 디바이스 그룹의 클라이언트 디바이스에 적용되는 권한 정책입니다. policies 객체에서 정의하는 정책의 이름이 지정됩니다.

policies

코어 디바이스에 연결되는 클라이언트 디바이스에 대한 클라이언트 디바이스 권한 부여 정책입니다. 각 권한 부여 정책을 통해 작업 세트 및 클라이언트 디바이스에서 해당 작업을 수행할 수 있는 리소스가 지정됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

policyNameKey

이 권한 부여 정책의 이름입니다. 이 권한 부여 정책을 식별하는 데 도움이 되는 이름으로 policyNameKey를 바꿉니다. 이 정책 이름을 사용하여 디바이스 그룹에 적용되는 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

statementNameKey

이 정책 문의 이름입니다. 이 정책 문을 식별하는 데 도움이 되는 이름으로 statementNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

operations

이 정책의 리소스에 허용되는 작업 목록입니다.

다음 작업을 임의로 포함할 수 있습니다.

  • mqtt:connect – 코어 디바이스에 연결하는 권한을 부여합니다. 코어 디바이스에 연결하려면 클라이언트 디바이스에 이 권한이 있어야 합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:clientId:deviceClientId - 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로 deviceClientId를 바꿉니다.

  • mqtt:publish - 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topic:mqttTopic - 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로 mqttTopic을 바꿉니다.

      이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.

  • mqtt:subscribe – 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topicfilter:mqttTopicFilter - 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로 mqttTopicFilter를 바꿉니다.

      이 리소스에서는 +# MQTT 주제 와일드카드가 지원됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서MQTT 주제를 참조하세요.

      클라이언트 디바이스에서는 사용자가 허용하는 정확한 주제 필터가 구독될 수 있습니다. 예를 들어 클라이언트 디바이스에 mqtt:topicfilter:client/+/status 리소스 구독을 허용하면 클라이언트 디바이스에서는 client/+/status가 구독될 수 있지만 client/client1/status은 구독될 수 없습니다.

와일드카드(*)를 지정하여 모든 작업에 대한 액세스를 허용할 수 있습니다.

resources

이 정책의 작업에 허용되는 리소스 목록입니다. 이 정책의 작업에 해당하는 리소스를 지정합니다. 예를 들어 mqtt:publish 작업이 지정되는 정책에서 MQTT 주제 리소스(mqtt:topic:mqttTopic) 목록을 지정할 수 있습니다.

와일드카드(*)를 지정하여 모든 리소스에 대한 액세스를 허용할 수 있습니다. 부분 리소스 식별자와 일치하도록 와일드카드(*)를 사용할 수 있습니다. 예를 들어 "resources": "*"는 지정할 수 있지만, "resources": "mqtt:clientId:*"는 지정할 수 없습니다.

statementDescription

(선택 사항) 이 정책 문에 대한 설명입니다.

certificates

(선택 사항) 이 코어 디바이스의 인증서 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

serverCertificateValiditySeconds

(선택 사항) 로컬 MQTT 서버 인증서가 만료되는 시간(초)입니다. 이 옵션을 구성하여 클라이언트 디바이스와 코어 디바이스의 연결 해제 및 재연결 빈도를 사용자 지정할 수 있습니다.

이 구성 요소에서는 로컬 MQTT 서버 인증서가 만료 24시간 전에 교체됩니다. MQTT 브로커(예: Moquette MQTT 브로커 구성 요소)에서는 새 인증서가 생성되어 다시 시작됩니다. 이 경우에는 이 코어 디바이스에 연결된 모든 클라이언트 디바이스의 연결이 해제됩니다. 짧은 기간 뒤에 코어 디바이스에 클라이언트 디바이스가 다시 연결될 수 있습니다.

기본값: 604800(7일)

최솟값: 172800(2일)

최댓값: 864000(10일)

performance

(선택 사항) 이 코어 디바이스의 성능 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

maxActiveAuthTokens

(선택 사항) 최대 활성 클라이언트 디바이스 권한 부여 토큰 수입니다. 이 수를 늘리면 다시 인증하지 않아도 더 많은 수의 클라이언트 디바이스가 단일 코어 디바이스에 연결될 수 있습니다.

기본값: 2500

cloudRequestQueueSize

(선택 사항) 이 구성 요소에서 요청이 거부되기 전에 대기열에 등록되는 최대 AWS 클라우드 요청 수입니다.

기본값: 100

maxConcurrentCloudRequests

(선택 사항) AWS 클라우드에 보낼 최대 동시 요청 수입니다. 이 수를 늘려 많은 수의 클라이언트 디바이스를 연결하는 코어 디바이스의 인증 성능을 개선할 수 있습니다.

기본값: 1

certificateAuthority

(선택 사항) 코어 디바이스 중간 기관을 자신의 중간 인증 기관으로 바꾸는 인증 기관 구성 옵션입니다.

참고

사용자 지정 인증 기관(CA)으로 Greengrass 코어 디바이스를 구성하고 동일한 CA를 사용하여 클라이언트 디바이스 인증서를 발급하는 경우 Greengrass에서는 클라이언트 디바이스 MQTT 작업에 대한 권한 부여 정책 확인이 우회됩니다. 클라이언트 디바이스 인증 구성 요소에서는 사용하도록 구성된 CA에서 서명한 인증서를 사용하는 클라이언트가 완전히 신뢰됩니다.

사용자 지정 CA를 사용할 때 이 동작을 제한하려면 다른 CA 또는 중간 CA를 사용하여 클라이언트 디바이스를 생성하고 서명한 다음에 올바른 중간 CA를 가리키도록 certificateUricertificateChainUri 필드를 조정합니다.

이 객체에는 다음 정보가 포함됩니다.

certificateUri

인증서의 위치입니다. 하드웨어 보안 모듈에 저장된 인증서를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

certificateChainUri

코어 디바이스 CA에 대한 인증서 체인의 위치입니다. 루트 CA로 돌아가는 전체 인증서 체인이어야 합니다. 하드웨어 보안 모듈에 저장된 인증서 체인을 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

privateKeyUri

코어 디바이스의 프라이빗 키 위치입니다. 하드웨어 보안 모듈에 저장된 인증서 프라이빗 키를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

security

(선택 사항) 이 코어 디바이스의 보안 구성 옵션입니다. 이 객체에는 다음 정보가 포함됩니다.

clientDeviceTrustDurationMinutes

코어 디바이스로 재인증해야 하기 전에 클라이언트 디바이스의 인증 정보를 신뢰할 수 있는 기간(분)입니다. 기본값은 1입니다.

metrics

(선택 사항) 이 코어 디바이스의 지표 옵션입니다. 클라이언트 디바이스 인증에 오류가 있는 경우에만 오류 지표가 표시됩니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

disableMetrics

disableMetrics 필드가 true로 설정된 경우 클라이언트 디바이스 인증에서는 지표가 수집되지 않습니다.

기본값: false

aggregatePeriodSeconds

클라이언트 디바이스에서 지표가 집계되어 원격 측정 에이전트로 보내지는 빈도가 결정되는 기간(초). 원격 측정 에이전트에서는 여전히 하루에 한 번씩 지표가 게시되기 때문에 지표가 게시되는 빈도는 변경되지 않습니다.

기본값: 3600

startupTimeoutSeconds

(선택 사항) 구성 요소가 시작되는 최대 시간(초)입니다. 이 제한 시간이 초과되면 구성 요소의 상태가 BROKEN으로 변경됩니다.

기본값: 120

예제: 구성 병합 업데이트(제한적 정책 사용)

다음 예제 구성에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
예제: 구성 병합 업데이트(허용적 정책 사용)

다음 예제 구성에서는 모든 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.4.2 - v2.4.4
deviceGroups

디바이스 그룹은 코어 디바이스와 연결하고 통신할 권한이 있는 클라이언트 디바이스 그룹입니다. 선택 규칙을 사용하여 클라이언트 디바이스 그룹을 식별하고 디바이스 그룹마다 권한을 지정하는 클라이언트 디바이스 권한 부여 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

formatVersion

이 구성 객체의 형식 버전입니다.

다음 옵션 중 하나를 선택합니다.

  • 2021-03-05

definitions

이 코어 디바이스의 디바이스 그룹. 각 정의에서는 클라이언트 디바이스가 그룹의 멤버인지 평가할 선택 규칙이 지정됩니다. 각 정의에서는 선택 규칙과 일치하는 클라이언트 디바이스에 적용할 권한 정책도 지정됩니다. 클라이언트 디바이스가 여러 디바이스 그룹의 멤버인 경우 디바이스의 권한은 각 그룹의 권한 정책으로 구성됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

groupNameKey

이 디바이스 그룹의 이름입니다. 이 디바이스 그룹을 식별하는 데 도움이 되는 이름으로 groupNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

selectionRule

이 디바이스 그룹의 멤버인 클라이언트 디바이스가 지정되는 쿼리입니다. 클라이언트 디바이스가 연결되면 코어 디바이스에서는 이 선택 규칙을 평가하여 클라이언트 디바이스가 이 디바이스 그룹의 멤버인지 결정됩니다. 클라이언트 디바이스가 멤버인 경우 코어 디바이스에서는 이 디바이스 그룹의 정책을 사용하여 클라이언트 디바이스의 작업에 권한이 부여됩니다.

각 선택 규칙은 클라이언트 디바이스와 일치할 수 있는 단일 표현식 쿼리인 하나 이상의 선택 규칙 절로 구성됩니다. 선택 규칙에서는 AWS IoT 플릿 인덱싱과 동일한 쿼리 구문이 사용됩니다. 선택 규칙 구문에 대한 자세한 내용은 AWS IoT Core 개발자 안내서AWS IoT 플릿 인덱싱 쿼리 구문을 참조하세요.

여러 클라이언트 디바이스가 하나의 선택 규칙 절과 일치되도록 와일드카드(*)를 사용합니다. 지정하는 문자열로 이름이 시작하는 클라이언트 디바이스와 일치하도록 사물 이름의 끝에 이 와일드카드를 사용할 수 있습니다. 모든 클라이언트 디바이스가 일치되도록 이 와일드카드를 사용할 수도 있습니다.

참고

콜론 문자(:)가 있는 값을 선택하려면 백슬래시 문자(\\)로 콜론을 이스케이프합니다. JSON과 같은 형식에서는 백슬래시 문자를 이스케이프해야 하므로 콜론 문자 앞에 백슬래시 문자 2개를 입력합니다. 예를 들어 thingName: MyTeam\\\\:ClientDevice1를 지정하여 이름이 MyTeam:ClientDevice1인 사물을 선택합니다.

다음 선택기를 지정할 수 있습니다.

  • thingName - 클라이언트 디바이스의 AWS IoT 사물 이름입니다.

예 선택 규칙 예제

다음 선택 규칙에서는 이름이 MyClientDevice1 또는 MyClientDevice2인 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice1 OR thingName: MyClientDevice2
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice*
예 선택 규칙 예제(모든 디바이스 일치)

다음 선택 규칙에서는 모든 클라이언트 디바이스가 일치됩니다.

thingName: *
policyName

이 디바이스 그룹의 클라이언트 디바이스에 적용되는 권한 정책입니다. policies 객체에서 정의하는 정책의 이름이 지정됩니다.

policies

코어 디바이스에 연결되는 클라이언트 디바이스에 대한 클라이언트 디바이스 권한 부여 정책입니다. 각 권한 부여 정책을 통해 작업 세트 및 클라이언트 디바이스에서 해당 작업을 수행할 수 있는 리소스가 지정됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

policyNameKey

이 권한 부여 정책의 이름. 이 권한 부여 정책을 식별하는 데 도움이 되는 이름으로 policyNameKey를 바꿉니다. 이 정책 이름을 사용하여 디바이스 그룹에 적용되는 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

statementNameKey

이 정책 문의 이름입니다. 이 정책 문을 식별하는 데 도움이 되는 이름으로 statementNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

operations

이 정책의 리소스에 허용되는 작업 목록입니다.

다음 작업을 임의로 포함할 수 있습니다.

  • mqtt:connect – 코어 디바이스에 연결하는 권한을 부여합니다. 코어 디바이스에 연결하려면 클라이언트 디바이스에 이 권한이 있어야 합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:clientId:deviceClientId - 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로 deviceClientId를 바꿉니다.

  • mqtt:publish - 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topic:mqttTopic - 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로 mqttTopic을 바꿉니다.

      이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.

  • mqtt:subscribe – 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topicfilter:mqttTopicFilter - 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로 mqttTopicFilter를 바꿉니다.

      이 리소스에서는 +# MQTT 주제 와일드카드가 지원됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서MQTT 주제를 참조하세요.

      클라이언트 디바이스에서는 사용자가 허용하는 정확한 주제 필터가 구독될 수 있습니다. 예를 들어 클라이언트 디바이스에 mqtt:topicfilter:client/+/status 리소스 구독을 허용하면 클라이언트 디바이스에서는 client/+/status가 구독될 수 있지만 client/client1/status은 구독될 수 없습니다.

와일드카드(*)를 지정하여 모든 작업에 대한 액세스를 허용할 수 있습니다.

resources

이 정책의 작업에 허용되는 리소스 목록입니다. 이 정책의 작업에 해당하는 리소스를 지정합니다. 예를 들어 mqtt:publish 작업이 지정되는 정책에서 MQTT 주제 리소스(mqtt:topic:mqttTopic) 목록을 지정할 수 있습니다.

와일드카드(*)를 지정하여 모든 리소스에 대한 액세스를 허용할 수 있습니다. 부분 리소스 식별자와 일치하도록 와일드카드(*)를 사용할 수 있습니다. 예를 들어 "resources": "*"는 지정할 수 있지만, "resources": "mqtt:clientId:*"는 지정할 수 없습니다.

statementDescription

(선택 사항) 이 정책 문에 대한 설명입니다.

certificates

(선택 사항) 이 코어 디바이스의 인증서 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

serverCertificateValiditySeconds

(선택 사항) 로컬 MQTT 서버 인증서가 만료되는 시간(초)입니다. 이 옵션을 구성하여 클라이언트 디바이스와 코어 디바이스의 연결 해제 및 재연결 빈도를 사용자 지정할 수 있습니다.

이 구성 요소에서는 로컬 MQTT 서버 인증서가 만료 24시간 전에 교체됩니다. MQTT 브로커(예: Moquette MQTT 브로커 구성 요소)에서는 새 인증서가 생성되어 다시 시작됩니다. 이 경우에는 이 코어 디바이스에 연결된 모든 클라이언트 디바이스의 연결이 해제됩니다. 짧은 기간 뒤에 코어 디바이스에 클라이언트 디바이스가 다시 연결될 수 있습니다.

기본값: 604800(7일)

최솟값: 172800(2일)

최댓값: 864000(10일)

performance

(선택 사항) 이 코어 디바이스의 성능 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

maxActiveAuthTokens

(선택 사항) 최대 활성 클라이언트 디바이스 권한 부여 토큰 수입니다. 이 수를 늘리면 다시 인증하지 않아도 더 많은 수의 클라이언트 디바이스가 단일 코어 디바이스에 연결될 수 있습니다.

기본값: 2500

cloudRequestQueueSize

(선택 사항) 이 구성 요소에서 요청이 거부되기 전에 대기열에 등록되는 최대 AWS 클라우드 요청 수입니다.

기본값: 100

maxConcurrentCloudRequests

(선택 사항) AWS 클라우드에 보낼 최대 동시 요청 수입니다. 이 수를 늘려 많은 수의 클라이언트 디바이스를 연결하는 코어 디바이스의 인증 성능을 개선할 수 있습니다.

기본값: 1

certificateAuthority

(선택 사항) 코어 디바이스 중간 기관을 자신의 중간 인증 기관으로 바꾸는 인증 기관 구성 옵션입니다.

참고

사용자 지정 인증 기관(CA)으로 Greengrass 코어 디바이스를 구성하고 동일한 CA를 사용하여 클라이언트 디바이스 인증서를 발급하는 경우 Greengrass에서는 클라이언트 디바이스 MQTT 작업에 대한 권한 부여 정책 확인이 우회됩니다. 클라이언트 디바이스 인증 구성 요소에서는 사용하도록 구성된 CA에서 서명한 인증서를 사용하는 클라이언트가 완전히 신뢰됩니다.

사용자 지정 CA를 사용할 때 이 동작을 제한하려면 다른 CA 또는 중간 CA를 사용하여 클라이언트 디바이스를 생성하고 서명한 다음에 올바른 중간 CA를 가리키도록 certificateUricertificateChainUri 필드를 조정합니다.

이 객체에는 다음 정보가 포함됩니다.

certificateUri

인증서의 위치입니다. 하드웨어 보안 모듈에 저장된 인증서를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

certificateChainUri

코어 디바이스 CA에 대한 인증서 체인의 위치입니다. 루트 CA로 돌아가는 전체 인증서 체인이어야 합니다. 하드웨어 보안 모듈에 저장된 인증서 체인을 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

privateKeyUri

코어 디바이스의 프라이빗 키 위치입니다. 하드웨어 보안 모듈에 저장된 인증서 프라이빗 키를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

security

(선택 사항) 이 코어 디바이스의 보안 구성 옵션입니다. 이 객체에는 다음 정보가 포함됩니다.

clientDeviceTrustDurationMinutes

코어 디바이스로 재인증해야 하기 전에 클라이언트 디바이스의 인증 정보를 신뢰할 수 있는 기간(분)입니다. 기본값은 1입니다.

metrics

(선택 사항) 이 코어 디바이스의 지표 옵션입니다. 클라이언트 디바이스 인증에 오류가 있는 경우에만 오류 지표가 표시됩니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

disableMetrics

disableMetrics 필드가 true로 설정된 경우 클라이언트 디바이스 인증에서는 지표가 수집되지 않습니다.

기본값: false

aggregatePeriodSeconds

클라이언트 디바이스에서 지표가 집계되어 원격 측정 에이전트로 보내지는 빈도가 결정되는 기간(초). 원격 측정 에이전트에서는 여전히 하루에 한 번씩 지표가 게시되기 때문에 지표가 게시되는 빈도는 변경되지 않습니다.

기본값: 3600

startupTimeoutSeconds

(선택 사항) 구성 요소가 시작되는 최대 시간(초)입니다. 이 제한 시간이 초과되면 구성 요소의 상태가 BROKEN으로 변경됩니다.

기본값: 120

예제: 구성 병합 업데이트(제한적 정책 사용)

다음 예제 구성에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
예제: 구성 병합 업데이트(허용적 정책 사용)

다음 예제 구성에서는 모든 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.4.0 - v2.4.1
deviceGroups

디바이스 그룹은 코어 디바이스와 연결하고 통신할 권한이 있는 클라이언트 디바이스 그룹입니다. 선택 규칙을 사용하여 클라이언트 디바이스 그룹을 식별하고 디바이스 그룹마다 권한을 지정하는 클라이언트 디바이스 권한 부여 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

formatVersion

이 구성 객체의 형식 버전입니다.

다음 옵션 중 하나를 선택합니다.

  • 2021-03-05

definitions

이 코어 디바이스의 디바이스 그룹. 각 정의에서는 클라이언트 디바이스가 그룹의 멤버인지 평가할 선택 규칙이 지정됩니다. 각 정의에서는 선택 규칙과 일치하는 클라이언트 디바이스에 적용할 권한 정책도 지정됩니다. 클라이언트 디바이스가 여러 디바이스 그룹의 멤버인 경우 디바이스의 권한은 각 그룹의 권한 정책으로 구성됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

groupNameKey

이 디바이스 그룹의 이름입니다. 이 디바이스 그룹을 식별하는 데 도움이 되는 이름으로 groupNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

selectionRule

이 디바이스 그룹의 멤버인 클라이언트 디바이스가 지정되는 쿼리입니다. 클라이언트 디바이스가 연결되면 코어 디바이스에서는 이 선택 규칙을 평가하여 클라이언트 디바이스가 이 디바이스 그룹의 멤버인지 결정됩니다. 클라이언트 디바이스가 멤버인 경우 코어 디바이스에서는 이 디바이스 그룹의 정책을 사용하여 클라이언트 디바이스의 작업에 권한이 부여됩니다.

각 선택 규칙은 클라이언트 디바이스와 일치할 수 있는 단일 표현식 쿼리인 하나 이상의 선택 규칙 절로 구성됩니다. 선택 규칙에서는 AWS IoT 플릿 인덱싱과 동일한 쿼리 구문이 사용됩니다. 선택 규칙 구문에 대한 자세한 내용은 AWS IoT Core 개발자 안내서AWS IoT 플릿 인덱싱 쿼리 구문을 참조하세요.

여러 클라이언트 디바이스가 하나의 선택 규칙 절과 일치되도록 와일드카드(*)를 사용합니다. 지정하는 문자열로 이름이 시작하는 클라이언트 디바이스와 일치하도록 사물 이름의 끝에 이 와일드카드를 사용할 수 있습니다. 모든 클라이언트 디바이스가 일치되도록 이 와일드카드를 사용할 수도 있습니다.

참고

콜론 문자(:)가 있는 값을 선택하려면 백슬래시 문자(\\)로 콜론을 이스케이프합니다. JSON과 같은 형식에서는 백슬래시 문자를 이스케이프해야 하므로 콜론 문자 앞에 백슬래시 문자 2개를 입력합니다. 예를 들어 thingName: MyTeam\\\\:ClientDevice1를 지정하여 이름이 MyTeam:ClientDevice1인 사물을 선택합니다.

다음 선택기를 지정할 수 있습니다.

  • thingName - 클라이언트 디바이스의 AWS IoT 사물 이름입니다.

예 선택 규칙 예제

다음 선택 규칙에서는 이름이 MyClientDevice1 또는 MyClientDevice2인 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice1 OR thingName: MyClientDevice2
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice*
예 선택 규칙 예제(모든 디바이스 일치)

다음 선택 규칙에서는 모든 클라이언트 디바이스가 일치됩니다.

thingName: *
policyName

이 디바이스 그룹의 클라이언트 디바이스에 적용되는 권한 정책. policies 객체에서 정의하는 정책의 이름이 지정됩니다.

policies

코어 디바이스에 연결되는 클라이언트 디바이스에 대한 클라이언트 디바이스 권한 부여 정책입니다. 각 권한 부여 정책을 통해 작업 세트 및 클라이언트 디바이스에서 해당 작업을 수행할 수 있는 리소스가 지정됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

policyNameKey

이 권한 부여 정책의 이름. 이 권한 부여 정책을 식별하는 데 도움이 되는 이름으로 policyNameKey를 바꿉니다. 이 정책 이름을 사용하여 디바이스 그룹에 적용되는 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

statementNameKey

이 정책 문의 이름입니다. 이 정책 문을 식별하는 데 도움이 되는 이름으로 statementNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

operations

이 정책의 리소스에 허용되는 작업 목록입니다.

다음 작업을 임의로 포함할 수 있습니다.

  • mqtt:connect – 코어 디바이스에 연결하는 권한을 부여합니다. 코어 디바이스에 연결하려면 클라이언트 디바이스에 이 권한이 있어야 합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:clientId:deviceClientId - 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로 deviceClientId를 바꿉니다.

  • mqtt:publish - 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topic:mqttTopic - 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로 mqttTopic을 바꿉니다.

      이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.

  • mqtt:subscribe – 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topicfilter:mqttTopicFilter - 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로 mqttTopicFilter를 바꿉니다.

      이 리소스에서는 +# MQTT 주제 와일드카드가 지원됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서MQTT 주제를 참조하세요.

      클라이언트 디바이스에서는 사용자가 허용하는 정확한 주제 필터가 구독될 수 있습니다. 예를 들어 클라이언트 디바이스에 mqtt:topicfilter:client/+/status 리소스 구독을 허용하면 클라이언트 디바이스에서는 client/+/status가 구독될 수 있지만 client/client1/status은 구독될 수 없습니다.

와일드카드(*)를 지정하여 모든 작업에 대한 액세스를 허용할 수 있습니다.

resources

이 정책의 작업에 허용되는 리소스 목록입니다. 이 정책의 작업에 해당하는 리소스를 지정합니다. 예를 들어 mqtt:publish 작업이 지정되는 정책에서 MQTT 주제 리소스(mqtt:topic:mqttTopic) 목록을 지정할 수 있습니다.

와일드카드(*)를 지정하여 모든 리소스에 대한 액세스를 허용할 수 있습니다. 부분 리소스 식별자와 일치하도록 와일드카드(*)를 사용할 수 있습니다. 예를 들어 "resources": "*"는 지정할 수 있지만, "resources": "mqtt:clientId:*"는 지정할 수 없습니다.

statementDescription

(선택 사항) 이 정책 문에 대한 설명입니다.

certificates

(선택 사항) 이 코어 디바이스의 인증서 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

serverCertificateValiditySeconds

(선택 사항) 로컬 MQTT 서버 인증서가 만료되는 시간(초)입니다. 이 옵션을 구성하여 클라이언트 디바이스와 코어 디바이스의 연결 해제 및 재연결 빈도를 사용자 지정할 수 있습니다.

이 구성 요소에서는 로컬 MQTT 서버 인증서가 만료 24시간 전에 교체됩니다. MQTT 브로커(예: Moquette MQTT 브로커 구성 요소)에서는 새 인증서가 생성되어 다시 시작됩니다. 이 경우에는 이 코어 디바이스에 연결된 모든 클라이언트 디바이스의 연결이 해제됩니다. 짧은 기간 뒤에 코어 디바이스에 클라이언트 디바이스가 다시 연결될 수 있습니다.

기본값: 604800(7일)

최솟값: 172800(2일)

최댓값: 864000(10일)

performance

(선택 사항) 이 코어 디바이스의 성능 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

maxActiveAuthTokens

(선택 사항) 최대 활성 클라이언트 디바이스 권한 부여 토큰 수입니다. 이 수를 늘리면 다시 인증하지 않아도 더 많은 수의 클라이언트 디바이스가 단일 코어 디바이스에 연결될 수 있습니다.

기본값: 2500

cloudRequestQueueSize

(선택 사항) 이 구성 요소에서 요청이 거부되기 전에 대기열에 등록되는 최대 AWS 클라우드 요청 수입니다.

기본값: 100

maxConcurrentCloudRequests

(선택 사항) AWS 클라우드에 보낼 최대 동시 요청 수입니다. 이 수를 늘려 많은 수의 클라이언트 디바이스를 연결하는 코어 디바이스의 인증 성능을 개선할 수 있습니다.

기본값: 1

certificateAuthority

(선택 사항) 코어 디바이스 중간 기관을 자신의 중간 인증 기관으로 바꾸는 인증 기관 구성 옵션입니다. 이 객체에는 다음 정보가 포함됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

certificateUri

인증서의 위치입니다. 하드웨어 보안 모듈에 저장된 인증서를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

certificateChainUri

코어 디바이스 CA에 대한 인증서 체인의 위치입니다. 루트 CA로 돌아가는 전체 인증서 체인이어야 합니다. 하드웨어 보안 모듈에 저장된 인증서 체인을 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

privateKeyUri

코어 디바이스의 프라이빗 키 위치입니다. 하드웨어 보안 모듈에 저장된 인증서 프라이빗 키를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

security

(선택 사항) 이 코어 디바이스의 보안 구성 옵션입니다. 이 객체에는 다음 정보가 포함됩니다.

clientDeviceTrustDurationMinutes

코어 디바이스로 재인증해야 하기 전에 클라이언트 디바이스의 인증 정보를 신뢰할 수 있는 기간(분)입니다. 기본값은 1입니다.

metrics

(선택 사항) 이 코어 디바이스의 지표 옵션입니다. 클라이언트 디바이스 인증에 오류가 있는 경우에만 오류 지표가 표시됩니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

disableMetrics

disableMetrics 필드가 true로 설정된 경우 클라이언트 디바이스 인증에서는 지표가 수집되지 않습니다.

기본값: false

aggregatePeriodSeconds

클라이언트 디바이스에서 지표가 집계되어 원격 측정 에이전트로 보내지는 빈도가 결정되는 기간(초). 원격 측정 에이전트에서는 여전히 하루에 한 번씩 지표가 게시되기 때문에 지표가 게시되는 빈도는 변경되지 않습니다.

기본값: 3600

예제: 구성 병합 업데이트(제한적 정책 사용)

다음 예제 구성에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
예제: 구성 병합 업데이트(허용적 정책 사용)

다음 예제 구성에서는 모든 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.3.x
deviceGroups

디바이스 그룹은 코어 디바이스와 연결하고 통신할 권한이 있는 클라이언트 디바이스 그룹입니다. 선택 규칙을 사용하여 클라이언트 디바이스 그룹을 식별하고 디바이스 그룹마다 권한을 지정하는 클라이언트 디바이스 권한 부여 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

formatVersion

이 구성 객체의 형식 버전입니다.

다음 옵션 중 하나를 선택합니다.

  • 2021-03-05

definitions

이 코어 디바이스의 디바이스 그룹. 각 정의에서는 클라이언트 디바이스가 그룹의 멤버인지 평가할 선택 규칙이 지정됩니다. 각 정의에서는 선택 규칙과 일치하는 클라이언트 디바이스에 적용할 권한 정책도 지정됩니다. 클라이언트 디바이스가 여러 디바이스 그룹의 멤버인 경우 디바이스의 권한은 각 그룹의 권한 정책으로 구성됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

groupNameKey

이 디바이스 그룹의 이름입니다. 이 디바이스 그룹을 식별하는 데 도움이 되는 이름으로 groupNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

selectionRule

이 디바이스 그룹의 멤버인 클라이언트 디바이스가 지정되는 쿼리입니다. 클라이언트 디바이스가 연결되면 코어 디바이스에서는 이 선택 규칙을 평가하여 클라이언트 디바이스가 이 디바이스 그룹의 멤버인지 결정됩니다. 클라이언트 디바이스가 멤버인 경우 코어 디바이스에서는 이 디바이스 그룹의 정책을 사용하여 클라이언트 디바이스의 작업에 권한이 부여됩니다.

각 선택 규칙은 클라이언트 디바이스와 일치할 수 있는 단일 표현식 쿼리인 하나 이상의 선택 규칙 절로 구성됩니다. 선택 규칙에서는 AWS IoT 플릿 인덱싱과 동일한 쿼리 구문이 사용됩니다. 선택 규칙 구문에 대한 자세한 내용은 AWS IoT Core 개발자 안내서AWS IoT 플릿 인덱싱 쿼리 구문을 참조하세요.

여러 클라이언트 디바이스가 하나의 선택 규칙 절과 일치되도록 와일드카드(*)를 사용합니다. 지정하는 문자열로 이름이 시작하는 클라이언트 디바이스와 일치하도록 사물 이름의 끝에 이 와일드카드를 사용할 수 있습니다. 모든 클라이언트 디바이스가 일치되도록 이 와일드카드를 사용할 수도 있습니다.

참고

콜론 문자(:)가 있는 값을 선택하려면 백슬래시 문자(\\)로 콜론을 이스케이프합니다. JSON과 같은 형식에서는 백슬래시 문자를 이스케이프해야 하므로 콜론 문자 앞에 백슬래시 문자 2개를 입력합니다. 예를 들어 thingName: MyTeam\\\\:ClientDevice1를 지정하여 이름이 MyTeam:ClientDevice1인 사물을 선택합니다.

다음 선택기를 지정할 수 있습니다.

  • thingName - 클라이언트 디바이스의 AWS IoT 사물 이름입니다.

예 선택 규칙 예제

다음 선택 규칙에서는 이름이 MyClientDevice1 또는 MyClientDevice2인 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice1 OR thingName: MyClientDevice2
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice*
예 선택 규칙 예제(모든 디바이스 일치)

다음 선택 규칙에서는 모든 클라이언트 디바이스가 일치됩니다.

thingName: *
policyName

이 디바이스 그룹의 클라이언트 디바이스에 적용되는 권한 정책. policies 객체에서 정의하는 정책의 이름이 지정됩니다.

policies

코어 디바이스에 연결되는 클라이언트 디바이스에 대한 클라이언트 디바이스 권한 부여 정책입니다. 각 권한 부여 정책을 통해 작업 세트 및 클라이언트 디바이스에서 해당 작업을 수행할 수 있는 리소스가 지정됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

policyNameKey

이 권한 부여 정책의 이름. 이 권한 부여 정책을 식별하는 데 도움이 되는 이름으로 policyNameKey를 바꿉니다. 이 정책 이름을 사용하여 디바이스 그룹에 적용되는 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

statementNameKey

이 정책 문의 이름입니다. 이 정책 문을 식별하는 데 도움이 되는 이름으로 statementNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

operations

이 정책의 리소스에 허용되는 작업 목록입니다.

다음 작업을 임의로 포함할 수 있습니다.

  • mqtt:connect – 코어 디바이스에 연결하는 권한을 부여합니다. 코어 디바이스에 연결하려면 클라이언트 디바이스에 이 권한이 있어야 합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:clientId:deviceClientId - 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로 deviceClientId를 바꿉니다.

  • mqtt:publish - 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topic:mqttTopic - 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로 mqttTopic을 바꿉니다.

      이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.

  • mqtt:subscribe – 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topicfilter:mqttTopicFilter - 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로 mqttTopicFilter를 바꿉니다.

      이 리소스에서는 +# MQTT 주제 와일드카드가 지원됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서MQTT 주제를 참조하세요.

      클라이언트 디바이스에서는 사용자가 허용하는 정확한 주제 필터가 구독될 수 있습니다. 예를 들어 클라이언트 디바이스에 mqtt:topicfilter:client/+/status 리소스 구독을 허용하면 클라이언트 디바이스에서는 client/+/status가 구독될 수 있지만 client/client1/status은 구독될 수 없습니다.

와일드카드(*)를 지정하여 모든 작업에 대한 액세스를 허용할 수 있습니다.

resources

이 정책의 작업에 허용되는 리소스 목록입니다. 이 정책의 작업에 해당하는 리소스를 지정합니다. 예를 들어 mqtt:publish 작업이 지정되는 정책에서 MQTT 주제 리소스(mqtt:topic:mqttTopic) 목록을 지정할 수 있습니다.

와일드카드(*)를 지정하여 모든 리소스에 대한 액세스를 허용할 수 있습니다. 부분 리소스 식별자와 일치하도록 와일드카드(*)를 사용할 수 있습니다. 예를 들어 "resources": "*"는 지정할 수 있지만, "resources": "mqtt:clientId:*"는 지정할 수 없습니다.

statementDescription

(선택 사항) 이 정책 문에 대한 설명입니다.

certificates

(선택 사항) 이 코어 디바이스의 인증서 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

serverCertificateValiditySeconds

(선택 사항) 로컬 MQTT 서버 인증서가 만료되는 시간(초)입니다. 이 옵션을 구성하여 클라이언트 디바이스와 코어 디바이스의 연결 해제 및 재연결 빈도를 사용자 지정할 수 있습니다.

이 구성 요소에서는 로컬 MQTT 서버 인증서가 만료 24시간 전에 교체됩니다. MQTT 브로커(예: Moquette MQTT 브로커 구성 요소)에서는 새 인증서가 생성되어 다시 시작됩니다. 이 경우에는 이 코어 디바이스에 연결된 모든 클라이언트 디바이스의 연결이 해제됩니다. 짧은 기간 뒤에 코어 디바이스에 클라이언트 디바이스가 다시 연결될 수 있습니다.

기본값: 604800(7일)

최솟값: 172800(2일)

최댓값: 864000(10일)

performance

(선택 사항) 이 코어 디바이스의 성능 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

maxActiveAuthTokens

(선택 사항) 최대 활성 클라이언트 디바이스 권한 부여 토큰 수입니다. 이 수를 늘리면 다시 인증하지 않아도 더 많은 수의 클라이언트 디바이스가 단일 코어 디바이스에 연결될 수 있습니다.

기본값: 2500

cloudRequestQueueSize

(선택 사항) 이 구성 요소에서 요청이 거부되기 전에 대기열에 등록되는 최대 AWS 클라우드 요청 수입니다.

기본값: 100

maxConcurrentCloudRequests

(선택 사항) AWS 클라우드에 보낼 최대 동시 요청 수입니다. 이 수를 늘려 많은 수의 클라이언트 디바이스를 연결하는 코어 디바이스의 인증 성능을 개선할 수 있습니다.

기본값: 1

certificateAuthority

(선택 사항) 코어 디바이스 중간 기관을 자신의 중간 인증 기관으로 바꾸는 인증 기관 구성 옵션입니다. 이 객체에는 다음 정보가 포함됩니다.

certificateUri

인증서의 위치입니다. 하드웨어 보안 모듈에 저장된 인증서를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

certificateChainUri

코어 디바이스 CA에 대한 인증서 체인의 위치입니다. 루트 CA로 돌아가는 전체 인증서 체인이어야 합니다. 하드웨어 보안 모듈에 저장된 인증서 체인을 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

privateKeyUri

코어 디바이스의 프라이빗 키 위치입니다. 하드웨어 보안 모듈에 저장된 인증서 프라이빗 키를 가리키는 파일 시스템 URI 또는 URI일 수 있습니다.

security

(선택 사항) 이 코어 디바이스의 보안 구성 옵션입니다. 이 객체에는 다음 정보가 포함됩니다.

clientDeviceTrustDurationMinutes

코어 디바이스로 재인증해야 하기 전에 클라이언트 디바이스의 인증 정보를 신뢰할 수 있는 기간(분)입니다. 기본값은 1입니다.

예제: 구성 병합 업데이트(제한적 정책 사용)

다음 예제 구성에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
예제: 구성 병합 업데이트(허용적 정책 사용)

다음 예제 구성에서는 모든 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.2.x
deviceGroups

디바이스 그룹은 코어 디바이스와 연결하고 통신할 권한이 있는 클라이언트 디바이스 그룹입니다. 선택 규칙을 사용하여 클라이언트 디바이스 그룹을 식별하고 디바이스 그룹마다 권한을 지정하는 클라이언트 디바이스 권한 부여 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

formatVersion

이 구성 객체의 형식 버전입니다.

다음 옵션 중 하나를 선택합니다.

  • 2021-03-05

definitions

이 코어 디바이스의 디바이스 그룹. 각 정의에서는 클라이언트 디바이스가 그룹의 멤버인지 평가할 선택 규칙이 지정됩니다. 각 정의에서는 선택 규칙과 일치하는 클라이언트 디바이스에 적용할 권한 정책도 지정됩니다. 클라이언트 디바이스가 여러 디바이스 그룹의 멤버인 경우 디바이스의 권한은 각 그룹의 권한 정책으로 구성됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

groupNameKey

이 디바이스 그룹의 이름입니다. 이 디바이스 그룹을 식별하는 데 도움이 되는 이름으로 groupNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

selectionRule

이 디바이스 그룹의 멤버인 클라이언트 디바이스가 지정되는 쿼리입니다. 클라이언트 디바이스가 연결되면 코어 디바이스에서는 이 선택 규칙을 평가하여 클라이언트 디바이스가 이 디바이스 그룹의 멤버인지 결정됩니다. 클라이언트 디바이스가 멤버인 경우 코어 디바이스에서는 이 디바이스 그룹의 정책을 사용하여 클라이언트 디바이스의 작업에 권한이 부여됩니다.

각 선택 규칙은 클라이언트 디바이스와 일치할 수 있는 단일 표현식 쿼리인 하나 이상의 선택 규칙 절로 구성됩니다. 선택 규칙에서는 AWS IoT 플릿 인덱싱과 동일한 쿼리 구문이 사용됩니다. 선택 규칙 구문에 대한 자세한 내용은 AWS IoT Core 개발자 안내서AWS IoT 플릿 인덱싱 쿼리 구문을 참조하세요.

여러 클라이언트 디바이스가 하나의 선택 규칙 절과 일치되도록 와일드카드(*)를 사용합니다. 지정하는 문자열로 이름이 시작하는 클라이언트 디바이스와 일치하도록 사물 이름의 끝에 이 와일드카드를 사용할 수 있습니다. 모든 클라이언트 디바이스가 일치되도록 이 와일드카드를 사용할 수도 있습니다.

참고

콜론 문자(:)가 있는 값을 선택하려면 백슬래시 문자(\\)로 콜론을 이스케이프합니다. JSON과 같은 형식에서는 백슬래시 문자를 이스케이프해야 하므로 콜론 문자 앞에 백슬래시 문자 2개를 입력합니다. 예를 들어 thingName: MyTeam\\\\:ClientDevice1를 지정하여 이름이 MyTeam:ClientDevice1인 사물을 선택합니다.

다음 선택기를 지정할 수 있습니다.

  • thingName - 클라이언트 디바이스의 AWS IoT 사물 이름입니다.

예 선택 규칙 예제

다음 선택 규칙에서는 이름이 MyClientDevice1 또는 MyClientDevice2인 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice1 OR thingName: MyClientDevice2
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice*
예 선택 규칙 예제(모든 디바이스 일치)

다음 선택 규칙에서는 모든 클라이언트 디바이스가 일치됩니다.

thingName: *
policyName

이 디바이스 그룹의 클라이언트 디바이스에 적용되는 권한 정책입니다. policies 객체에서 정의하는 정책의 이름이 지정됩니다.

policies

코어 디바이스에 연결되는 클라이언트 디바이스에 대한 클라이언트 디바이스 권한 부여 정책입니다. 각 권한 부여 정책을 통해 작업 세트 및 클라이언트 디바이스에서 해당 작업을 수행할 수 있는 리소스가 지정됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

policyNameKey

이 권한 부여 정책의 이름. 이 권한 부여 정책을 식별하는 데 도움이 되는 이름으로 policyNameKey를 바꿉니다. 이 정책 이름을 사용하여 디바이스 그룹에 적용되는 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

statementNameKey

이 정책 문의 이름입니다. 이 정책 문을 식별하는 데 도움이 되는 이름으로 statementNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

operations

이 정책의 리소스에 허용되는 작업 목록입니다.

다음 작업을 임의로 포함할 수 있습니다.

  • mqtt:connect – 코어 디바이스에 연결하는 권한을 부여합니다. 코어 디바이스에 연결하려면 클라이언트 디바이스에 이 권한이 있어야 합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:clientId:deviceClientId - 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로 deviceClientId를 바꿉니다.

  • mqtt:publish - 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.

    이 작업에서는 다음 리소스가 지원됩니다.

    • mqtt:topic:mqttTopic - 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로 mqttTopic을 바꿉니다.

      이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.

  • mqtt:subscribe – 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.

    이 작업에서는 다음과 같은 리소스가 지원됩니다.

    • mqtt:topicfilter:mqttTopicFilter - 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로 mqttTopicFilter를 바꿉니다.

      이 리소스에서는 +# MQTT 주제 와일드카드가 지원됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서MQTT 주제를 참조하세요.

      클라이언트 디바이스에서는 사용자가 허용하는 정확한 주제 필터가 구독될 수 있습니다. 예를 들어 클라이언트 디바이스에 mqtt:topicfilter:client/+/status 리소스 구독을 허용하면 클라이언트 디바이스에서는 client/+/status가 구독될 수 있지만 client/client1/status은 구독될 수 없습니다.

와일드카드(*)를 지정하여 모든 작업에 대한 액세스를 허용할 수 있습니다.

resources

이 정책의 작업에 허용되는 리소스 목록입니다. 이 정책의 작업에 해당하는 리소스를 지정합니다. 예를 들어 mqtt:publish 작업이 지정되는 정책에서 MQTT 주제 리소스(mqtt:topic:mqttTopic) 목록을 지정할 수 있습니다.

와일드카드(*)를 지정하여 모든 리소스에 대한 액세스를 허용할 수 있습니다. 부분 리소스 식별자와 일치하도록 와일드카드(*)를 사용할 수 있습니다. 예를 들어 "resources": "*"는 지정할 수 있지만, "resources": "mqtt:clientId:*"는 지정할 수 없습니다.

statementDescription

(선택 사항) 이 정책 문에 대한 설명입니다.

certificates

(선택 사항) 이 코어 디바이스의 인증서 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

serverCertificateValiditySeconds

(선택 사항) 로컬 MQTT 서버 인증서가 만료되는 시간(초)입니다. 이 옵션을 구성하여 클라이언트 디바이스와 코어 디바이스의 연결 해제 및 재연결 빈도를 사용자 지정할 수 있습니다.

이 구성 요소에서는 로컬 MQTT 서버 인증서가 만료 24시간 전에 교체됩니다. MQTT 브로커(예: Moquette MQTT 브로커 구성 요소)에서는 새 인증서가 생성되어 다시 시작됩니다. 이 경우에는 이 코어 디바이스에 연결된 모든 클라이언트 디바이스의 연결이 해제됩니다. 짧은 기간 뒤에 코어 디바이스에 클라이언트 디바이스가 다시 연결될 수 있습니다.

기본값: 604800(7일)

최솟값: 172800(2일)

최댓값: 864000(10일)

performance

(선택 사항) 이 코어 디바이스의 성능 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

maxActiveAuthTokens

(선택 사항) 최대 활성 클라이언트 디바이스 권한 부여 토큰 수입니다. 이 수를 늘리면 다시 인증하지 않아도 더 많은 수의 클라이언트 디바이스가 단일 코어 디바이스에 연결될 수 있습니다.

기본값: 2500

cloudRequestQueueSize

(선택 사항) 이 구성 요소에서 요청이 거부되기 전에 대기열에 등록되는 최대 AWS 클라우드 요청 수입니다.

기본값: 100

maxConcurrentCloudRequests

(선택 사항) AWS 클라우드에 보낼 최대 동시 요청 수입니다. 이 수를 늘려 많은 수의 클라이언트 디바이스를 연결하는 코어 디바이스의 인증 성능을 개선할 수 있습니다.

기본값: 1

예제: 구성 병합 업데이트(제한적 정책 사용)

다음 예제 구성에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
예제: 구성 병합 업데이트(허용적 정책 사용)

다음 예제 구성에서는 모든 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.1.x
deviceGroups

디바이스 그룹은 코어 디바이스와 연결하고 통신할 권한이 있는 클라이언트 디바이스 그룹입니다. 선택 규칙을 사용하여 클라이언트 디바이스 그룹을 식별하고 디바이스 그룹마다 권한을 지정하는 클라이언트 디바이스 권한 부여 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

formatVersion

이 구성 객체의 형식 버전입니다.

다음 옵션 중 하나를 선택합니다.

  • 2021-03-05

definitions

이 코어 디바이스의 디바이스 그룹. 각 정의에서는 클라이언트 디바이스가 그룹의 멤버인지 평가할 선택 규칙이 지정됩니다. 각 정의에서는 선택 규칙과 일치하는 클라이언트 디바이스에 적용할 권한 정책도 지정됩니다. 클라이언트 디바이스가 여러 디바이스 그룹의 멤버인 경우 디바이스의 권한은 각 그룹의 권한 정책으로 구성됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

groupNameKey

이 디바이스 그룹의 이름입니다. 이 디바이스 그룹을 식별하는 데 도움이 되는 이름으로 groupNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

selectionRule

이 디바이스 그룹의 멤버인 클라이언트 디바이스가 지정되는 쿼리입니다. 클라이언트 디바이스가 연결되면 코어 디바이스에서는 이 선택 규칙을 평가하여 클라이언트 디바이스가 이 디바이스 그룹의 멤버인지 결정됩니다. 클라이언트 디바이스가 멤버인 경우 코어 디바이스에서는 이 디바이스 그룹의 정책을 사용하여 클라이언트 디바이스의 작업에 권한이 부여됩니다.

각 선택 규칙은 클라이언트 디바이스와 일치할 수 있는 단일 표현식 쿼리인 하나 이상의 선택 규칙 절로 구성됩니다. 선택 규칙에서는 AWS IoT 플릿 인덱싱과 동일한 쿼리 구문이 사용됩니다. 선택 규칙 구문에 대한 자세한 내용은 AWS IoT Core 개발자 안내서AWS IoT 플릿 인덱싱 쿼리 구문을 참조하세요.

여러 클라이언트 디바이스가 하나의 선택 규칙 절과 일치되도록 와일드카드(*)를 사용합니다. 지정하는 문자열로 이름이 시작하는 클라이언트 디바이스와 일치하도록 사물 이름의 끝에 이 와일드카드를 사용할 수 있습니다. 모든 클라이언트 디바이스가 일치되도록 이 와일드카드를 사용할 수도 있습니다.

참고

콜론 문자(:)가 있는 값을 선택하려면 백슬래시 문자(\\)로 콜론을 이스케이프합니다. JSON과 같은 형식에서는 백슬래시 문자를 이스케이프해야 하므로 콜론 문자 앞에 백슬래시 문자 2개를 입력합니다. 예를 들어 thingName: MyTeam\\\\:ClientDevice1를 지정하여 이름이 MyTeam:ClientDevice1인 사물을 선택합니다.

다음 선택기를 지정할 수 있습니다.

  • thingName - 클라이언트 디바이스의 AWS IoT 사물 이름입니다.

예 선택 규칙 예제

다음 선택 규칙에서는 이름이 MyClientDevice1 또는 MyClientDevice2인 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice1 OR thingName: MyClientDevice2
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice*
예 선택 규칙 예제(모든 디바이스 일치)

다음 선택 규칙에서는 모든 클라이언트 디바이스가 일치됩니다.

thingName: *
policyName

이 디바이스 그룹의 클라이언트 디바이스에 적용되는 권한 정책입니다. policies 객체에서 정의하는 정책의 이름이 지정됩니다.

policies

코어 디바이스에 연결되는 클라이언트 디바이스에 대한 클라이언트 디바이스 권한 부여 정책입니다. 각 권한 부여 정책을 통해 작업 세트 및 클라이언트 디바이스에서 해당 작업을 수행할 수 있는 리소스가 지정됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

policyNameKey

이 권한 부여 정책의 이름. 이 권한 부여 정책을 식별하는 데 도움이 되는 이름으로 policyNameKey를 바꿉니다. 이 정책 이름을 사용하여 디바이스 그룹에 적용되는 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

statementNameKey

이 정책 문의 이름입니다. 이 정책 문을 식별하는 데 도움이 되는 이름으로 statementNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

operations

이 정책의 리소스에 허용되는 작업 목록입니다.

다음과 같은 작업을 임의로 포함할 수 있습니다.

  • mqtt:connect – 코어 디바이스에 연결하는 권한을 부여합니다. 코어 디바이스에 연결하려면 클라이언트 디바이스에 이 권한이 있어야 합니다.

    이 작업에서는 다음과 같은 리소스가 지원됩니다.

    • mqtt:clientId:deviceClientId - 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로 deviceClientId를 바꿉니다.

  • mqtt:publish - 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.

    이 작업에서는 다음과 같은 리소스가 지원됩니다.

    • mqtt:topic:mqttTopic - 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로 mqttTopic을 바꿉니다.

      이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.

  • mqtt:subscribe – 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.

    이 작업에서는 다음과 같은 리소스가 지원됩니다.

    • mqtt:topicfilter:mqttTopicFilter - 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로 mqttTopicFilter를 바꿉니다.

      이 리소스에서는 +# MQTT 주제 와일드카드가 지원됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서MQTT 주제를 참조하세요.

      클라이언트 디바이스에서는 사용자가 허용하는 정확한 주제 필터가 구독될 수 있습니다. 예를 들어 클라이언트 디바이스에 mqtt:topicfilter:client/+/status 리소스 구독을 허용하면 클라이언트 디바이스에서는 client/+/status가 구독될 수 있지만 client/client1/status은 구독될 수 없습니다.

와일드카드(*)를 지정하여 모든 작업에 대한 액세스를 허용할 수 있습니다.

resources

이 정책의 작업에 허용되는 리소스 목록입니다. 이 정책의 작업에 해당하는 리소스를 지정합니다. 예를 들어 mqtt:publish 작업이 지정되는 정책에서 MQTT 주제 리소스(mqtt:topic:mqttTopic) 목록을 지정할 수 있습니다.

와일드카드(*)를 지정하여 모든 리소스에 대한 액세스를 허용할 수 있습니다. 부분 리소스 식별자와 일치하도록 와일드카드(*)를 사용할 수 있습니다. 예를 들어 "resources": "*"는 지정할 수 있지만, "resources": "mqtt:clientId:*"는 지정할 수 없습니다.

statementDescription

(선택 사항) 이 정책 문에 대한 설명입니다.

certificates

(선택 사항) 이 코어 디바이스의 인증서 구성 옵션입니다. 이 객체에는 다음 정보가 포함되어 있어야 합니다.

serverCertificateValiditySeconds

(선택 사항) 로컬 MQTT 서버 인증서가 만료되는 시간(초)입니다. 이 옵션을 구성하여 클라이언트 디바이스와 코어 디바이스의 연결 해제 및 재연결 빈도를 사용자 지정할 수 있습니다.

이 구성 요소에서는 로컬 MQTT 서버 인증서가 만료 24시간 전에 교체됩니다. MQTT 브로커(예: Moquette MQTT 브로커 구성 요소)에서는 새 인증서가 생성되어 다시 시작됩니다. 이 경우에는 이 코어 디바이스에 연결된 모든 클라이언트 디바이스의 연결이 해제됩니다. 짧은 기간 뒤에 코어 디바이스에 클라이언트 디바이스가 다시 연결될 수 있습니다.

기본값: 604800(7일)

최솟값: 172800(2일)

최댓값: 864000(10일)

예제: 구성 병합 업데이트(제한적 정책 사용)

다음 예제 구성에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
예제: 구성 병합 업데이트(허용적 정책 사용)

다음 예제 구성에서는 모든 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }
v2.0.x
deviceGroups

디바이스 그룹은 코어 디바이스와 연결하고 통신할 권한이 있는 클라이언트 디바이스 그룹입니다. 선택 규칙을 사용하여 클라이언트 디바이스 그룹을 식별하고 디바이스 그룹마다 권한을 지정하는 클라이언트 디바이스 권한 부여 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

formatVersion

이 구성 객체의 형식 버전입니다.

다음 옵션 중 하나를 선택합니다.

  • 2021-03-05

definitions

이 코어 디바이스의 디바이스 그룹. 각 정의에서는 클라이언트 디바이스가 그룹의 멤버인지 평가할 선택 규칙이 지정됩니다. 각 정의에서는 선택 규칙과 일치하는 클라이언트 디바이스에 적용할 권한 정책도 지정됩니다. 클라이언트 디바이스가 여러 디바이스 그룹의 멤버인 경우 디바이스의 권한은 각 그룹의 권한 정책으로 구성됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

groupNameKey

이 디바이스 그룹의 이름입니다. 이 디바이스 그룹을 식별하는 데 도움이 되는 이름으로 groupNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

selectionRule

이 디바이스 그룹의 멤버인 클라이언트 디바이스가 지정되는 쿼리입니다. 클라이언트 디바이스가 연결되면 코어 디바이스에서는 이 선택 규칙을 평가하여 클라이언트 디바이스가 이 디바이스 그룹의 멤버인지 결정됩니다. 클라이언트 디바이스가 멤버인 경우 코어 디바이스에서는 이 디바이스 그룹의 정책을 사용하여 클라이언트 디바이스의 작업에 권한이 부여됩니다.

각 선택 규칙은 클라이언트 디바이스와 일치할 수 있는 단일 표현식 쿼리인 하나 이상의 선택 규칙 절로 구성됩니다. 선택 규칙에서는 AWS IoT 플릿 인덱싱과 동일한 쿼리 구문이 사용됩니다. 선택 규칙 구문에 대한 자세한 내용은 AWS IoT Core 개발자 안내서AWS IoT 플릿 인덱싱 쿼리 구문을 참조하세요.

여러 클라이언트 디바이스가 하나의 선택 규칙 절과 일치되도록 와일드카드(*)를 사용합니다. 지정하는 문자열로 이름이 시작하는 클라이언트 디바이스와 일치하도록 사물 이름의 끝에 이 와일드카드를 사용할 수 있습니다. 모든 클라이언트 디바이스가 일치되도록 이 와일드카드를 사용할 수도 있습니다.

참고

콜론 문자(:)가 있는 값을 선택하려면 백슬래시 문자(\\)로 콜론을 이스케이프합니다. JSON과 같은 형식에서는 백슬래시 문자를 이스케이프해야 하므로 콜론 문자 앞에 백슬래시 문자 2개를 입력합니다. 예를 들어 thingName: MyTeam\\\\:ClientDevice1를 지정하여 이름이 MyTeam:ClientDevice1인 사물을 선택합니다.

다음 선택기를 지정할 수 있습니다.

  • thingName - 클라이언트 디바이스의 AWS IoT 사물 이름입니다.

예 선택 규칙 예제

다음 선택 규칙에서는 이름이 MyClientDevice1 또는 MyClientDevice2인 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice1 OR thingName: MyClientDevice2
예 선택 규칙 예제(와일드카드 사용)

다음 선택 규칙에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스가 일치됩니다.

thingName: MyClientDevice*
예 선택 규칙 예제(모든 디바이스 일치)

다음 선택 규칙에서는 모든 클라이언트 디바이스가 일치됩니다.

thingName: *
policyName

이 디바이스 그룹의 클라이언트 디바이스에 적용되는 권한 정책. policies 객체에서 정의하는 정책의 이름이 지정됩니다.

policies

코어 디바이스에 연결되는 클라이언트 디바이스에 대한 클라이언트 디바이스 권한 부여 정책입니다. 각 권한 부여 정책을 통해 작업 세트 및 클라이언트 디바이스에서 해당 작업을 수행할 수 있는 리소스가 지정됩니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

policyNameKey

이 권한 부여 정책의 이름. 이 권한 부여 정책을 식별하는 데 도움이 되는 이름으로 policyNameKey를 바꿉니다. 이 정책 이름을 사용하여 디바이스 그룹에 적용되는 정책을 정의합니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

statementNameKey

이 정책 문의 이름입니다. 이 정책 문을 식별하는 데 도움이 되는 이름으로 statementNameKey를 바꿉니다.

이 객체에는 다음 정보가 포함되어 있어야 합니다.

operations

이 정책의 리소스에 허용되는 작업 목록입니다.

다음과 같은 작업을 임의로 포함할 수 있습니다.

  • mqtt:connect – 코어 디바이스에 연결하는 권한을 부여합니다. 코어 디바이스에 연결하려면 클라이언트 디바이스에 이 권한이 있어야 합니다.

    이 작업에서는 다음과 같은 리소스가 지원됩니다.

    • mqtt:clientId:deviceClientId - 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로 deviceClientId를 바꿉니다.

  • mqtt:publish - 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.

    이 작업에서는 다음과 같은 리소스가 지원됩니다.

    • mqtt:topic:mqttTopic - 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로 mqttTopic을 바꿉니다.

      이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.

  • mqtt:subscribe – 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.

    이 작업에서는 다음과 같은 리소스가 지원됩니다.

    • mqtt:topicfilter:mqttTopicFilter - 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로 mqttTopicFilter를 바꿉니다.

      이 리소스에서는 +# MQTT 주제 와일드카드가 지원됩니다. 자세한 내용은 AWS IoT Core 개발자 안내서MQTT 주제를 참조하세요.

      클라이언트 디바이스에서는 사용자가 허용하는 정확한 주제 필터가 구독될 수 있습니다. 예를 들어 클라이언트 디바이스에 mqtt:topicfilter:client/+/status 리소스 구독을 허용하면 클라이언트 디바이스에서는 client/+/status가 구독될 수 있지만 client/client1/status은 구독될 수 없습니다.

와일드카드(*)를 지정하여 모든 작업에 대한 액세스를 허용할 수 있습니다.

resources

이 정책의 작업에 허용되는 리소스 목록입니다. 이 정책의 작업에 해당하는 리소스를 지정합니다. 예를 들어 mqtt:publish 작업이 지정되는 정책에서 MQTT 주제 리소스(mqtt:topic:mqttTopic) 목록을 지정할 수 있습니다.

와일드카드(*)를 지정하여 모든 리소스에 대한 액세스를 허용할 수 있습니다. 부분 리소스 식별자와 일치하도록 와일드카드(*)를 사용할 수 있습니다. 예를 들어 "resources": "*"는 지정할 수 있지만, "resources": "mqtt:clientId:*"는 지정할 수 없습니다.

statementDescription

(선택 사항) 이 정책 문에 대한 설명입니다.

예제: 구성 병합 업데이트(제한적 정책 사용)

다음 예제 구성에서는 이름이 MyClientDevice로 시작하는 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyDeviceGroup": { "selectionRule": "thingName: MyClientDevice*", "policyName": "MyRestrictivePolicy" } }, "policies": { "MyRestrictivePolicy": { "AllowConnect": { "statementDescription": "Allow client devices to connect.", "operations": [ "mqtt:connect" ], "resources": [ "*" ] }, "AllowPublish": { "statementDescription": "Allow client devices to publish on test/topic.", "operations": [ "mqtt:publish" ], "resources": [ "mqtt:topic:test/topic" ] }, "AllowSubscribe": { "statementDescription": "Allow client devices to subscribe to test/topic/response.", "operations": [ "mqtt:subscribe" ], "resources": [ "mqtt:topicfilter:test/topic/response" ] } } } } }
예제: 구성 병합 업데이트(허용적 정책 사용)

다음 예제 구성에서는 모든 클라이언트 디바이스의 연결 및 모든 주제 게시/구독이 허용되도록 지정됩니다.

{ "deviceGroups": { "formatVersion": "2021-03-05", "definitions": { "MyPermissiveDeviceGroup": { "selectionRule": "thingName: *", "policyName": "MyPermissivePolicy" } }, "policies": { "MyPermissivePolicy": { "AllowAll": { "statementDescription": "Allow client devices to perform all actions.", "operations": [ "*" ], "resources": [ "*" ] } } } } }

로컬 로그 파일

이 구성 요소는 Greengrass nucleus 구성요소와 동일한 로그 파일을 사용합니다.

Linux
/greengrass/v2/logs/greengrass.log
Windows
C:\greengrass\v2\logs\greengrass.log
이 구성 요소의 로그를 보려면
  • 코어 디바이스에서 다음과 같은 명령을 실행하여 실시간으로 이 구성 요소의 로그 파일을 봅니다. /greengrass/v2 또는 C:\greengrass\v2를 AWS IoT Greengrass 루트 폴더의 경로로 바꿉니다.

    Linux
    sudo tail -f /greengrass/v2/logs/greengrass.log
    Windows (PowerShell)
    Get-Content C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait

Changelog

다음 표에는 각 구성 요소 버전의 변경 사항이 설명되어 있습니다.

버전

변경 사항

2.5.1

버그 수정 및 개선 사항
  • FIPS 엔드포인트가 지원됩니다.

2.5.0

새로운 기능
  • 정책 리소스에 대한 ${iot:Connection.Thing.ThingName} 변수 대체가 허용됩니다.

  • 와일드카드가 포함된 정책 리소스(예: mqtt:topic:my*)가 허용됩니다.

2.4.5

새로운 기능

selectionRule 파라미터를 사용하여 사물 이름을 선택할 수 있도록 와일드카드 접두사에 대한 지원을 추가합니다.

버그 수정 및 개선 사항

경우에 따라 인증서가 새 연결 정보로 업데이트되지 않는 문제를 해결합니다.

2.4.4

Greengrass nucleus 버전 2.12.0 릴리스용으로 업데이트된 버전입니다.

2.4.3

Greengrass nucleus 버전 2.11.0 릴리스용으로 업데이트된 버전입니다.

2.4.2

새로운 기능

새로운 startupTimeoutSeconds 구성 옵션이 추가됩니다.

2.4.1

Greengrass nucleus 버전 2.10.0 릴리스용으로 업데이트된 버전입니다.

2.4.0

새로운 기능
  • 클라이언트 디바이스 인증에서 원격 측정 에이전트를 통해 게시되는 운영 지표 내보내기에 대한 지원을 추가합니다.

버그 수정 및 개선 사항
  • 클라이언트 디바이스 인증에서 클라이언트 디바이스의 ID가 확인되는 데 10초 넘게 걸리는 문제를 해결합니다.

  • 사소한 추가 수정 및 개선 사항.

2.3.2

버그 수정 및 개선 사항
  • 오프라인 상태에서 다시 시작할 때 구성 요소에서 인증서 주체가 올바르게 생성되도록 호스트 이름 정보 캐싱에 대한 지원을 추가합니다.

2.3.1

버그 수정 및 개선 사항
  • 메모리 누수가 수정됩니다.

2.3.0

주의

더는 이 버전을 사용할 수 없습니다. 이 버전의 개선 사항은 이 구성 요소의 이후 버전에서 사용할 수 있습니다.

새로운 기능

  • 코어 디바이스가 인터넷에 연결되어 있지 않을 때 코어 디바이스에 계속 연결할 수 있도록 클라이언트 디바이스의 오프라인 인증에 대한 지원을 추가합니다.

  • 코어 디바이스에서 루트 인증서로 사용하여 MQTT 브로커 인증서를 생성하는 고객 제공 인증 기관에 대한 지원을 추가합니다.

2.2.3

Greengrass nucleus 버전 2.8.0 릴리스용으로 업데이트된 버전입니다.

2.2.2

버그 수정 및 개선 사항
  • 로컬 MQTT 서버 인증서가 특정 시나리오에서 의도보다 자주 교체되는 문제를 해결합니다.

2.2.1

Greengrass nucleus 버전 2.7.0 릴리스용으로 업데이트된 버전입니다.

2.2.0

새로운 기능
  • 사용자 지정 구성 요소에 대한 지원이 추가되어 IPC(프로세스 간 통신) 작업을 직접적으로 호출하여 클라이언트 디바이스를 인증하고 권한을 부여합니다. 예를 들어 사용자 지정 MQTT 브로커 구성 요소에서 이러한 작업을 사용할 수 있습니다. 자세한 내용은 IPC: 클라이언트 디바이스 인증 및 권한 부여를 참조하세요.

  • maxActiveAuthTokens, cloudQueueSizethreadPoolSize 옵션이 추가되어 이를 구성하면 이 구성 요소의 성능을 조정할 수 있습니다.

2.1.0

새로운 기능
  • MQTT 브로커 서버 인증서가 만료되는 시기를 사용자 지정하도록 구성할 수 있는 serverCertificateValiditySeconds 옵션이 추가됩니다. 2~10일 후에 만료되도록 서버 인증서를 구성할 수 있습니다.

버그 수정 및 개선 사항
  • 이 구성 요소에서 구성 재설정 업데이트가 처리되는 방식과 관련된 문제가 해결됩니다.

  • 로컬 MQTT 서버 인증서가 특정 시나리오에서 의도보다 자주 교체되는 문제를 해결합니다.

    이 수정 사항을 적용하려면 Moquette MQTT 브로커 구성 요소의 v2.1.0 이상도 사용해야 합니다.

  • 인증서를 교체할 때 이 구성 요소의 로그에 기록되는 메시지가 개선됩니다.

  • Greengrass nucleus 버전 2.6.0 릴리스용으로 업데이트된 버전입니다.

2.0.4

Greengrass nucleus 버전 2.5.0 릴리스용으로 업데이트된 버전입니다.

2.0.3

버그 수정 및 개선 사항
  • 이제 코어 디바이스의 프라이빗 키를 교체하면 자격 증명이 새로 고쳐집니다.

  • 로그 메시지가 더 명확하도록 업데이트됩니다.

2.0.2

Greengrass nucleus 버전 2.4.0 릴리스용으로 업데이트된 버전입니다.

2.0.1

Greengrass nucleus 버전 2.3.0 릴리스용으로 업데이트된 버전입니다.

2.0.0

초기 버전