클라이언트 디바이스 인증
클라이언트 디바이스 인증 구성 요소(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에 대한 연결이 있어야 합니다.
-
엔드포인트 및 포트
이 구성 요소는 기본 작업에 필요한 엔드포인트 및 포트 외에 다음 엔드포인트 및 포트에 대한 아웃바운드 요청도 수행할 수 있어야 합니다. 자세한 내용은 프록시 또는 방화벽을 통해 디바이스 트래픽 허용 단원을 참조하십시오.
엔드포인트 | 포트 | 필수 | 설명 |
---|---|---|---|
|
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:
- 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로deviceClientId
deviceClientId
를 바꿉니다.
-
-
mqtt:publish
- 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topic:
- 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로mqttTopic
mqttTopic
을 바꿉니다.이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.
-
-
mqtt:subscribe
– 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topicfilter:
- 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로mqttTopicFilter
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를 가리키도록
certificateUri
및certificateChainUri
필드를 조정합니다.이 객체에는 다음 정보가 포함됩니다.
- 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:
- 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로deviceClientId
deviceClientId
를 바꿉니다.
-
-
mqtt:publish
- 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topic:
- 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로mqttTopic
mqttTopic
을 바꿉니다.이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.
-
-
mqtt:subscribe
– 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topicfilter:
- 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로mqttTopicFilter
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를 가리키도록
certificateUri
및certificateChainUri
필드를 조정합니다.이 객체에는 다음 정보가 포함됩니다.
- 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:
- 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로deviceClientId
deviceClientId
를 바꿉니다.
-
-
mqtt:publish
- 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topic:
- 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로mqttTopic
mqttTopic
을 바꿉니다.이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.
-
-
mqtt:subscribe
– 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topicfilter:
- 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로mqttTopicFilter
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를 가리키도록
certificateUri
및certificateChainUri
필드를 조정합니다.이 객체에는 다음 정보가 포함됩니다.
- 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:
- 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로deviceClientId
deviceClientId
를 바꿉니다.
-
-
mqtt:publish
- 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topic:
- 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로mqttTopic
mqttTopic
을 바꿉니다.이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.
-
-
mqtt:subscribe
– 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topicfilter:
- 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로mqttTopicFilter
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:
- 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로deviceClientId
deviceClientId
를 바꿉니다.
-
-
mqtt:publish
- 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topic:
- 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로mqttTopic
mqttTopic
을 바꿉니다.이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.
-
-
mqtt:subscribe
– 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topicfilter:
- 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로mqttTopicFilter
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:
- 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로deviceClientId
deviceClientId
를 바꿉니다.
-
-
mqtt:publish
- 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.이 작업에서는 다음 리소스가 지원됩니다.
-
mqtt:topic:
- 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로mqttTopic
mqttTopic
을 바꿉니다.이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.
-
-
mqtt:subscribe
– 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.이 작업에서는 다음과 같은 리소스가 지원됩니다.
-
mqtt:topicfilter:
- 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로mqttTopicFilter
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:
- 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로deviceClientId
deviceClientId
를 바꿉니다.
-
-
mqtt:publish
- 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.이 작업에서는 다음과 같은 리소스가 지원됩니다.
-
mqtt:topic:
- 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로mqttTopic
mqttTopic
을 바꿉니다.이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.
-
-
mqtt:subscribe
– 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.이 작업에서는 다음과 같은 리소스가 지원됩니다.
-
mqtt:topicfilter:
- 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로mqttTopicFilter
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:
- 클라이언트 디바이스에서 코어 디바이스의 MQTT 브로커에 연결하는 데 사용되는 클라이언트 ID에 따라 액세스를 제한합니다. 사용할 클라이언트 ID로deviceClientId
deviceClientId
를 바꿉니다.
-
-
mqtt:publish
- 주제에 MQTT 메시지를 게시하는 권한을 부여합니다.이 작업에서는 다음과 같은 리소스가 지원됩니다.
-
mqtt:topic:
- 클라이언트 디바이스에서 메시지가 게시되는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제로mqttTopic
mqttTopic
을 바꿉니다.이 리소스에서는 MQTT 주제 와일드카드가 지원되지 않습니다.
-
-
mqtt:subscribe
– 메시지를 수신할 MQTT 주제 필터를 구독할 권한을 부여합니다.이 작업에서는 다음과 같은 리소스가 지원됩니다.
-
mqtt:topicfilter:
- 클라이언트 디바이스에서 메시지를 구독할 수 있는 MQTT 주제에 따라 액세스를 제한합니다. 사용할 주제 필터로mqttTopicFilter
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
-
/logs/greengrass.log/greengrass/v2
- Windows
-
C:\greengrass\v2
\logs\greengrass.log
이 구성 요소의 로그를 보려면
-
코어 디바이스에서 다음과 같은 명령을 실행하여 실시간으로 이 구성 요소의 로그 파일을 봅니다.
또는/greengrass/v2
C:\greengrass\v2
를 AWS IoT Greengrass 루트 폴더의 경로로 바꿉니다.- Linux
-
sudo tail -f
/logs/greengrass.log/greengrass/v2
- Windows (PowerShell)
-
Get-Content
C:\greengrass\v2
\logs\greengrass.log -Tail 10 -Wait
Changelog
다음 표에는 각 구성 요소 버전의 변경 사항이 설명되어 있습니다.
버전 |
변경 사항 |
---|---|
2.5.1 |
|
2.5.0 |
|
2.4.5 |
|
2.4.4 |
Greengrass nucleus 버전 2.12.0 릴리스용으로 업데이트된 버전입니다. |
2.4.3 |
Greengrass nucleus 버전 2.11.0 릴리스용으로 업데이트된 버전입니다. |
2.4.2 |
|
2.4.1 |
Greengrass nucleus 버전 2.10.0 릴리스용으로 업데이트된 버전입니다. |
2.4.0 |
|
2.3.2 |
|
2.3.1 |
|
2.3.0 |
주의더는 이 버전을 사용할 수 없습니다. 이 버전의 개선 사항은 이 구성 요소의 이후 버전에서 사용할 수 있습니다. 새로운 기능
|
2.2.3 |
Greengrass nucleus 버전 2.8.0 릴리스용으로 업데이트된 버전입니다. |
2.2.2 |
|
2.2.1 |
Greengrass nucleus 버전 2.7.0 릴리스용으로 업데이트된 버전입니다. |
2.2.0 |
|
2.1.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 |
초기 버전 |