기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터 영역에서 AWS IoT 작업을 안전하게 사용할 수 있도록 디바이스 권한 부여
디바이스가 데이터 영역에서 AWS IoT 작업과 안전하게 상호 작용하도록 권한을 부여하려면 AWS IoT Core 정책을 사용해야 합니다. 작업에 대한 AWS IoT Core 정책은 정책 문을 포함하는 JSON 문서입니다. 이러한 정책은 Effect, Action, Resource 요소도 사용하며 IAM 정책과 유사한 규칙을 따릅니다. 요소에 대한 자세한 내용은 IAM 사용 설명서의 IAM JSON 정책 요소 참조를 참조하세요.
정책은 MQTT 및 HTTPS 프로토콜 모두에서 사용할 수 있으며 TCP 또는 TLS 상호 인증을 사용하여 디바이스를 인증해야 합니다. 다음은 서로 다른 통신 프로토콜에서 이러한 정책을 사용하는 방법을 보여줍니다.
주의
IAM 정책 또는 AWS IoT Core 정책에 "Action":
["iot:*"]
와 같은 와일드카드 권한을 사용하지 않는 것이 좋습니다. 와일드카드 권한을 사용하는 것은 권장되는 보안 모범 사례가 아닙니다. 자세한 내용은 AWS IoT policies overly permissive를 참조하세요.
MQTT 프로토콜에 대한 AWS IoT Core 정책
MQTT 프로토콜에 대한 AWS IoT Core 정책은 작업 디바이스 MQTT API 작업을 사용할 수 있는 권한을 부여합니다. MQTT API 작업은 작업 명령에 예약된 MQTT 주제로 작업하는 데 사용됩니다. 이러한 API 작업에 대한 자세한 내용은 작업 디바이스 MQTT API 작업 섹션을 참조하세요.
MQTT 정책은 iot:Connect
, iot:Publish
, iot:Subscribe
, iot:Receieve
등의 정책 작업을 사용하여 작업 주제와 함께 작동합니다. 이러한 정책을 사용하면 메시지 브로커에 연결하고, 작업 MQTT 주제를 구독하고, 디바이스와 클라우드 간에 MQTT 메시지를 송수신할 수 있습니다. 이러한 작업에 대한 자세한 내용은 AWS IoT Core 정책 작업 섹션을 참조하세요.
AWS IoT 작업 주제에 대한 자세한 내용은 작업 주제 섹션을 참조하세요.
다음 예시에서는 iot:Publish
및 iot:Subscribe
을(를) 사용하여 작업과 작업 실행을 게시하고 구독하는 방법을 보여줍니다.
이 예에서 다음과 같이 대체합니다.
-
region
을 사용자의 AWS 리전으로 대체합니다. 예:us-east-1
. -
account-id
를 사용자의 AWS 계정번호로 대체합니다. 예:57EXAMPLE833
. -
thing-name
을 작업의 대상인 IoT 사물의 이름으로 대체합니다. 예:MyIoTThing
.
{ "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account-id
:topic/$aws/events/job/*", "arn:aws:iot:region
:account-id
:topic/$aws/events/jobExecution/*", "arn:aws:iot:region
:account-id
:topic/$aws/things/thing-name
/jobs/*" ] } ], "Version": "2012-10-17" }
HTTPS 프로토콜에 대한 AWS IoT Core 정책
데이터 영역의 AWS IoT Core 정책 또한 HTTPS 프로토콜을 TLS 인증 메커니즘과 함께 사용하여 디바이스를 인증할 수 있습니다. 데이터 영역에서 정책은 iotjobsdata:
접두사를 사용하여 디바이스가 수행할 수 있는 작업 API 작업에 권한을 부여합니다. 예를 들어, iotjobsdata:DescribeJobExecution
정책 작업은 사용자에게 DescribeJobExecution
API를 사용할 권한을 부여합니다.
참고
데이터 영역 정책 작업은 iotjobsdata:
접두사를 사용해야 합니다. 제어 영역에서 작업은 iot:
접두사를 사용해야 합니다. 제어 영역과 데이터 영역 정책 작업이 모두 사용되는 경우 IAM 정책 예시는 제어 영역과 데이터 영역 모두에 대한 IAM 정책 예시 섹션을 참조하세요.
다음 표는 디바이스가 API 작업을 사용하도록 권한을 부여하는 AWS IoT Core 정책과 권한 목록을 보여줍니다. 데이터 영역에서 수행할 수 있는 API 작업 목록은 작업 디바이스 HTTP API 섹션을 참조하세요.
참고
이 작업 실행 정책 작업은 HTTP TLS 엔드포인트에만 적용됩니다. MQTT 엔드포인트를 사용할 경우 앞서 정의한 MQTT 정책 작업을 사용해야 합니다.
정책 작업 | API 작업 | 리소스 유형 | 설명 |
---|---|---|---|
iotjobsdata:DescribeJobExecution |
DescribeJobExecution |
|
작업 실행을 검색할 수 있는 권한을 나타냅니다. 작업 실행 검색을 요청할 때마다 iotjobsdata:DescribeJobExecution 권한이 확인됩니다. |
iotjobsdata:GetPendingJobExecutions |
GetPendingJobExecutions |
thing | 사물에 대해 단말 상태가 아닌 작업의 목록을 검색할 수 있는 권한을 나타냅니다. 목록 검색이 요청될 때마다 iotjobsdata:GetPendingJobExecutions 권한이 확인됩니다. |
iotjobsdata:StartNextPendingJobExecution |
StartNextPendingJobExecution |
thing | 사물에 대해 대기 중인 다음 작업 실행을 가져오고 시작할 수 있는 권한을 나타냅니다. (즉, QUEUED 에서 IN_PROGRESS 상태로 작업 실행을 업데이트함) 대기 중인 다음 작업의 실행 시작이 요청될 때마다 iotjobsdata:StartNextPendingJobExecution 권한이 확인됩니다. |
iotjobsdata:UpdateJobExecution |
UpdateJobExecution |
thing | 작업 실행을 업데이트할 수 있는 권한을 나타냅니다. 작업 실행 상태 업데이트가 요청될 때마다 iotjobsdata:UpdateJobExecution 권한이 확인됩니다. |
다음은 모든 리소스에 대해 데이터 영역 API 작업에 대한 작업을 수행할 수 있는 권한을 허용하는 AWS IoT Core 정책의 예입니다. IoT 사물과 같은 특정 리소스로 정책 범위를 지정할 수 있습니다. 이 예에서 다음과 같이 대체합니다.
-
region
을 사용자의 AWS 리전으로 대체합니다. 예:us-east-1
. -
account-id
를 사용자의 AWS 계정번호로 대체합니다. 예:57EXAMPLE833
. -
thing-name
을 IoT 사물의 이름으로 대체합니다. 예:MyIoTthing
.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iotjobsdata:GetPendingJobExecutions", "iotjobsdata:StartNextPendingJobExecution", "iotjobsdata:DescribeJobExecution", "iotjobsdata:UpdateJobExecution" ], "Effect": "Allow", "Resource": "arn:aws:iot:
region
:account-id
:thing/thing-name
" } ] }
이러한 정책을 사용해야 하는 경우는 IoT 디바이스가 AWS IoT Core 정책을 사용하여 이 API 작업 중 하나에 액세스하는 경우입니다. 예를 들면 DescribeJobExecution
API의 다음 예와 같습니다.
GET /things/thingName/jobs/jobId?executionNumber=executionNumber&includeJobDocument=includeJobDocument&namespaceId=namespaceId HTTP/1.1