기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
기본 AWS IoT Core 정책 변수
AWS IoT Core 는 다음과 같은 기본 정책 변수를 정의합니다.
-
aws:SourceIp
: AWS IoT Core 메시지 브로커에 연결된 클라이언트의 IP 주소입니다. -
iot:ClientId
: AWS IoT Core 메시지 브로커에 연결하는 데 사용되는 클라이언트 ID입니다. -
iot:DomainName
: 에 연결된 클라이언트의 도메인 이름입니다 AWS IoT Core.
ClientId
및 SourceIp
정책 변수의 예
다음 AWS IoT Core 정책은 정책 변수를 사용하는 정책을 보여줍니다. 는 보안 주체가 특정 주소 범위 내에서만 API 요청할 aws:SourceIp
수 있도록 정책의 조건 요소에 사용할 수 있습니다. 예시는 사용자 및 클라우드 서비스가 AWS IoT 작업을 사용하도록 권한 부여 섹션을 참조하세요.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientid1" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}" ], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } } } ] }
이 예제에서는 정책이 평가될 때 ${iot:ClientId}
가 AWS IoT Core 메시지 브로커에 연결된 클라이언트의 ID로 대체됩니다. ${iot:ClientId}
같은 정책 변수를 사용할 경우 잘못하여 의도치 않은 주제에 대한 액세스를 개방할 수 있습니다. 예를 들어 ${iot:ClientId}
를 사용하여 주제 필터를 지정하는 정책을 사용할 경우
{ "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic" ] }
클라이언트가 +
를 클라이언트 ID로 사용하여 연결할 수 있습니다. 이는 사용자가 주제 필터 my/+/topic
와 일치하는 모든 주제를 구독하도록 허용하는 것입니다. 이러한 보안 격차를 방지하려면 iot:Connect
정책 작업을 사용하여 연결할 IDs 수 있는 클라이언트를 제어합니다. 예를 들어 이 정책은 클라이언트 ID가 clientid1
인 클라이언트만 연결하도록 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientid1" ] } ] }
참고
정책 변수 ${iot:ClientId}
를 Connect
와 함께 사용하는 것은 권장되지 않습니다. ClientId
의 값은 확인하지 않으므로 다른 클라이언트의 ID를 가진 어태처가 검증을 통과할 수 있지만 연결이 끊길 수 있습니다. ClientId
는 무엇이든 허용되므로 무작위로 클라이언트 ID를 설정하면 사물 그룹 정책을 우회할 수 있습니다.
iot:DomainName
정책 변수의 예
iot:DomainName
정책 변수를 추가하여 사용할 수 있는 도메인을 제한할 수 있습니다. iot:DomainName
정책 변수를 추가하면 디바이스가 구성된 특정 엔드포인트에만 연결할 수 있습니다.
다음 정책은 디바이스가 지정된 도메인에 연결하도록 허용합니다.
{ "Version": "2012-10-17", "Statement": { "Sid": "AllowConnectionsToSpecifiedDomain", "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "*", "Condition": { "StringEquals": { "iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com" } } } }
다음 정책은 지정된 도메인에 연결하는 디바이스를 거부합니다.
{ "Version": "2012-10-17", "Statement": { "Sid": "DenyConnectionsToSpecifiedDomain", "Effect": "Deny", "Action": [ "iot:Connect" ], "Resource": "*", "Condition": { "StringEquals": { "iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com" } } } }
정책 조건부 연산자에 대한 자세한 내용은 IAM JSON 정책 요소: 조건부 연산자 를 참조하세요. 도메인 구성에 대한 자세한 내용은 도메인 구성이란 무엇입니까?를 참조하세요.