기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
게시/구독 정책 예제
사용하는 정책은 에 연결하는 방법에 따라 달라집니다 AWS IoT Core. MQTT 클라이언트, HTTP또는 를 사용하여 AWS IoT Core 에 연결할 수 있습니다 WebSocket. MQTT 클라이언트에 연결하면 X.509 인증서로 인증합니다. HTTP 또는 WebSocket 프로토콜을 통해 연결하면 서명 버전 4 및 Amazon Cognito 로 인증합니다.
등록된 디바이스의 경우 Connect
작업에 사물 정책 변수를 사용하고 연결에 사용되는 보안 주체에 사물을 연결하는 것이 좋습니다.
MQTT 및 AWS IoT Core 정책에서 와일드카드 문자 사용
MQTT 및 AWS IoT Core 정책은 와일드카드 문자가 다르므로 신중하게 고려한 후 선택해야 합니다. 에서 MQTT와일드카드 문자 +
및 #
는 MQTT 주제 필터에서 여러 주제 이름을 구독하는 데 사용됩니다. AWS IoT Core 정책은 *
및 를 와일드카드 문자?
로 사용하고 IAM 정책 규칙 을 따릅니다. 정책 문서에서 *
는 문자 조합을 나타내고 ?
는 단일 문자를 나타냅니다. 정책 문서에서 MQTT 와일드카드 문자 +
및 #
는 특별한 의미가 없는 문자로 취급됩니다. 정책의 resource
속성에 여러 주제 이름과 주제 필터를 설명하려면 ?
와일드카드 문자 대신 *
및 MQTT 와일드카드 문자를 사용합니다.
정책 문서에 사용할 와일드카드 문자를 선택할 때는 *
문자가 단일 주제 수준으로 제한되지 않는다는 점을 고려하세요. +
문자는 주제 필터에서 단일 MQTT 주제 수준으로 제한됩니다. 와일드카드 사양을 단일 MQTT 주제 필터 수준으로 제한하는 데 도움이 되도록 여러 ?
문자를 사용하는 것이 좋습니다. 정책 리소스에서 와일드카드 문자를 사용하는 방법에 대한 자세한 내용과 일치하는 항목의 자세한 예는 리소스에서 와일드카드 사용을 참조하세요ARNs.
아래 표에는 MQTT 클라이언트에 대한 MQTT 및 AWS IoT Core 정책에 사용되는 다양한 와일드카드 문자가 나와 있습니다.
와일드카드 문자 |
MQTT 와일드카드 문자입니다. |
의 예 MQTT |
AWS IoT Core 정책 와일드카드 문자임 |
MQTT 클라이언트 AWS IoT Core 정책 예제 |
# |
예 |
some/# |
아니요 |
N/A |
+ |
예 |
some/+/topic |
아니요 |
N/A |
* |
아니요 |
N/A |
예 |
topicfilter/some/*/topic
topicfilter/some/sensor*/topic
|
? |
아니요 |
N/A |
예 |
topic/some/?????/topic
topicfilter/some/sensor???/topic
|
특정 주제에 대한 메시지 게시, 구독 및 수신 정책
다음은 등록된 디바이스와 등록되지 않은 디바이스에서 'some_specific _topic'이라는 주제에 대해 메시지를 게시, 구독 및 수신하는 예를 보여줍니다. 또한 예제에서는 Publish
및 Receive
가이 'topic'을 리소스로 사용하고 Subscribe
가 topicfilter'를 리소스로 사용함을 강조합니다.
- Registered devices
-
AWS IoT Core 레지스트리에 등록된 디바이스의 경우 다음 정책을 통해 디바이스는 레지스트리의 사물 이름과 clientId 일치하는 에 연결할 수 있습니다. 또한 'some_specific_topic'이라는 주제에 대한 Publish
, Subscribe
및 Receive
권한을 제공합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
]
}
]
}
- Unregistered devices
-
AWS IoT Core 레지스트리에 등록되지 않은 디바이스의 경우 다음 정책에서는 clientId1, clientId2 또는 clientId3을 사용하여 디바이스를 연결할 수 있도록 허용합니다. 또한 'some_specific_topic'이라는 주제에 대한 Publish
, Subscribe
및 Receive
권한을 제공합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
]
}
]
}
특정 접두사가 붙은 주제에 대한 메시지 게시, 구독 및 수신 정책
다음은 등록된 디바이스와 등록되지 않은 디바이스에서 'topic_prefix'라는 접두사가 붙은 주제에 대해 메시지를 게시, 구독 및 수신하는 예를 보여줍니다.
*
이 예제에서는 와일드카드 문자를 사용합니다. *
는 단일 문에서 여러 주제 이름에 대한 권한을 제공하는 데 유용하지만, 필요한 것보다 더 많은 권한을 디바이스에 제공하여 의도하지 않은 결과를 초래할 수 있습니다. 따라서 신중하게 고려한 *
후에만 와일드카드 문자를 사용하는 것이 좋습니다.
- Registered devices
-
AWS IoT Core 레지스트리에 등록된 디바이스의 경우 다음 정책을 통해 디바이스는 레지스트리의 사물 이름과 clientId 일치하는 에 연결할 수 있습니다. 또한 'topic_prefix' 접두사가 붙은 주제에 대한 Publish
, Subscribe
및 Receive
권한을 제공합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*"
]
}
]
}
- Unregistered devices
-
AWS IoT Core 레지스트리에 등록되지 않은 디바이스의 경우 다음 정책에서는 clientId1, clientId2 또는 clientId3을 사용하여 디바이스를 연결할 수 있도록 허용합니다. 또한 'topic_prefix' 접두사가 붙은 주제에 대한 Publish
, Subscribe
및 Receive
권한을 제공합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*"
]
}
]
}
각 디바이스와 관련된 주제에 대한 메시지 게시, 구독 및 수신 정책
다음은 등록된 디바이스와 등록되지 않은 디바이스에서 해당 디바이스와 관련된 주제에 대해 메시지를 게시, 구독 및 수신하는 예를 보여줍니다.
- Registered devices
-
AWS IoT Core 레지스트리에 등록된 디바이스의 경우 다음 정책을 통해 디바이스는 레지스트리의 사물 이름과 clientId 일치하는 에 연결할 수 있습니다. 이 정책은 사물별 주제(sensor/device/${iot:Connection.Thing.ThingName}
)에 게시하고 사물별 주제(command/device/${iot:Connection.Thing.ThingName}
)를 구독 및 수신할 수 있는 권한을 제공합니다. 레지스트리의 사물 이름이 “thing1”인 경우 디바이스는 “sensor/device/thing1” 주제에 게시할 수 있습니다. 또한 디바이스는 '명령/장치/ 사물1' 주제를 구독하고 수신할 수 있습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
]
}
]
}
- Unregistered devices
-
AWS IoT Core 레지스트리에 등록되지 않은 디바이스의 경우 다음 정책에서는 clientId1, clientId2 또는 clientId3을 사용하여 디바이스를 연결할 수 있도록 허용합니다. 이 정책은 클라이언트별 주제(sensor/device/${iot:ClientId}
)에 게시하고 클라이언트별 주제(command/device/${iot:ClientId}
)를 구독 및 수신할 수 있는 권한을 제공합니다. 디바이스가 에 clientId1 clientId 로 연결되면 주제 “센서/장치/clientId1”에 게시할 수 있습니다. 또한 디바이스는 주제를 구독하고 수신할 수 있습니다device/clientId1/command
.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
]
}
]
}
주제 이름에 사물 속성이 포함된 주제에 대한 메시지 게시, 구독 및 수신 정책
다음은 등록된 디바이스에서 이름에 사물 속성이 포함된 주제를 게시, 구독 및 수신하는 예를 보여줍니다.
사물 속성은 레지스트리에 등록된 AWS IoT Core 디바이스에만 존재합니다. 등록되지 않은 디바이스에 해당하는 예제는 없습니다.
- Registered devices
-
AWS IoT Core 레지스트리에 등록된 디바이스의 경우 다음 정책을 통해 디바이스는 레지스트리의 사물 이름과 clientId 일치하는 에 연결할 수 있습니다. 이 정책은 주제 이름에 사물 속성이 포함된 경우 주제(sensor/${iot:Connection.Thing.Attributes[version]}
)에 게시하고 주제(command/${iot:Connection.Thing.Attributes[location]}
)를 구독 및 수신할 수 있는 권한을 제공합니다. 레지스트리의 사물 이름에 version=v1
및 가 있는 경우 location=Seattle
디바이스는 주제 “센서/v1”에 게시하고 주제 “명령/시애틀”을 구독하고 수신할 수 있습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/sensor/${iot:Connection.Thing.Attributes[version]}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/command/${iot:Connection.Thing.Attributes[location]}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/command/${iot:Connection.Thing.Attributes[location]}"
]
}
]
}
- Unregistered devices
-
사물 속성은 AWS IoT Core 레지스트리에 등록된 디바이스에만 존재하므로 등록되지 않은 사물에 해당하는 예는 없습니다.
주제 이름의 하위 주제에 대한 메시지 게시를 거부하는 정책
다음은 등록된 디바이스와 등록되지 않은 디바이스에서 특정 하위 주제를 제외한 모든 주제에 메시지를 게시하는 예를 보여줍니다.
- Registered devices
-
AWS IoT Core 레지스트리에 등록된 디바이스의 경우 다음 정책을 통해 디바이스는 레지스트리의 사물 이름과 clientId 일치하는 에 연결할 수 있습니다. 이 정책은 'department/' 접두사가 붙은 모든 주제에 게시할 수 있는 권한을 제공하지만 'department/admins' 하위 주제에 게시할 수 있는 권한은 제공하지 않습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/department/*"
]
},
{
"Effect": "Deny",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/department/admins"
]
}
]
}
- Unregistered devices
-
AWS IoT Core 레지스트리에 등록되지 않은 디바이스의 경우 다음 정책에서는 clientId1, clientId2 또는 clientId3을 사용하여 디바이스를 연결할 수 있도록 허용합니다. 이 정책은 'department/' 접두사가 붙은 모든 주제에 게시할 수 있는 권한을 제공하지만 'department/admins' 하위 주제에 게시할 수 있는 권한은 제공하지 않습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/department/*"
]
},
{
"Effect": "Deny",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/department/admins"
]
}
]
}
주제 이름의 하위 주제에 대한 메시지 수신을 거부하는 정책
다음은 등록된 디바이스와 등록되지 않은 디바이스에서 특정 하위 주제를 제외한 특정 접두사가 붙은 주제에 대해 메시지를 구독하고 수신하는 예를 보여줍니다.
- Registered devices
-
AWS IoT Core 레지스트리에 등록된 디바이스의 경우 다음 정책을 통해 디바이스는 레지스트리의 사물 이름과 clientId 일치하는 에 연결할 수 있습니다. 이 정책은 디바이스가 'topic_prefix' 접두사가 붙은 모든 주제를 구독할 수 있도록 허용합니다. iot:Receive
명령문에서 NotResource
를 사용하면 'topic_prefix/restricted' 접두사가 붙은 주제를 제외하고 디바이스가 구독한 모든 주제에서 메시지를 수신할 수 있습니다. 예를 들어, 이 정책에 따라 디바이스는 'topic_prefix/topic1' 및 'topic_prefix/restricted'를 구독할 수 있지만 'topic_prefix/topic1' 주제의 메시지만 수신하고 'topic_prefix/restricted' 주제의 메시지는 수신하지 않습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*"
}
]
}
- Unregistered devices
-
AWS IoT Core 레지스트리에 등록되지 않은 디바이스의 경우 다음 정책에서는 clientId1, clientId2 또는 clientId3을 사용하여 디바이스를 연결할 수 있도록 허용합니다. 이 정책은 디바이스가 'topic_prefix' 접두사가 붙은 모든 주제를 구독할 수 있도록 허용합니다. iot:Receive
명령문에서 NotResource
를 사용하면 'topic_prefix/restricted' 접두사가 붙은 주제를 제외하고 디바이스가 구독한 모든 주제에서 메시지를 수신할 수 있습니다. 예를 들어 이 정책을 사용하면 디바이스가 'topic_prefix/topic1'과 'topic_prefix/restricted'을 구독할 수 있습니다. 하지만 주제 'topic_prefix/topic1'에서는 메시지만 수신하고 주제 'topic_prefix/restricted'에서는 메시지를 수신하지 않습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*"
}
]
}
MQTT 와일드카드 문자를 사용하여 주제를 구독하는 정책
MQTT 와일드카드 문자 + 및 #은 리터럴 문자열로 처리되지만 AWS IoT Core 정책에서 사용할 때는 와일드카드로 처리되지 않습니다. 에서 MQTT+ 및 #은 주제 필터를 구독할 때만 와일드카드로 취급되지만 다른 모든 컨텍스트에서는 리터럴 문자열로 취급됩니다. 이러한 MQTT 와일드카드는 신중하게 고려한 후에 AWS IoT Core 정책의 일부로만 사용하는 것이 좋습니다.
다음은 AWS IoT Core 정책에서 MQTT 와일드카드를 사용하여 등록된 사물과 등록되지 않은 사물의 예를 보여줍니다. 이러한 와일드카드는 리터럴 문자열로 취급됩니다.
- Registered devices
-
AWS IoT Core 레지스트리에 등록된 디바이스의 경우 다음 정책을 통해 디바이스는 레지스트리의 사물 이름과 clientId 일치하는 에 연결할 수 있습니다. 이 정책은 디바이스가 'department/+/employees' 및 'location/#' 주제를 구독할 수 있도록 허용합니다. +와 #은 AWS IoT Core 정책에서 리터럴 문자열로 취급되므로 디바이스는 '부서/+/직원' 주제를 구독할 수 있지만 '부서/엔지니어링/직원' 주제는 구독할 수 없습니다. 마찬가지로, 디바이스는 'location/#' 주제를 구독할 수 있지만 'location/Seattle' 주제는 구독할 수 없습니다. 그러나 디바이스가 'department/+/employees' 주제를 구독하면 정책에 따라 'department/engineering/employees' 주제에서 메시지를 수신할 수 있습니다. 마찬가지로, 디바이스가 'location/#' 주제를 구독하면 'location/Seattle' 주제에서도 메시지를 수신하게 됩니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
}
]
}
- Unregistered devices
-
AWS IoT Core 레지스트리에 등록되지 않은 디바이스의 경우 다음 정책에서는 clientId1, clientId2 또는 clientId3을 사용하여 디바이스를 연결할 수 있도록 허용합니다. 이 정책은 디바이스가 'department/+/employees' 및 'location/#' 주제를 구독할 수 있도록 허용합니다. + 및 #은 AWS IoT Core 정책에서 리터럴 문자열로 취급되므로 디바이스는 '부서/+/직원' 주제를 구독할 수 있지만 '부서/엔지니어링/직원' 주제는 구독할 수 없습니다. 마찬가지로, 디바이스는 'location/#' 주제를 구독할 수 있지만 'location/Seattle' 주제는 구독할 수 없습니다. 그러나 디바이스가 'department/+/employees' 주제를 구독하면 정책에 따라 'department/engineering/employees' 주제에서 메시지를 수신할 수 있습니다. 마찬가지로, 디바이스가 'location/#' 주제를 구독하면 'location/Seattle' 주제에서도 메시지를 수신하게 됩니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
}
]
}
HTTP 및 WebSocket 클라이언트에 대한 정책
HTTP 또는 WebSocket 프로토콜을 통해 연결하면 서명 버전 4 및 Amazon Cognito 로 인증합니다. Amazon Cognito 자격 증명은 인증되거나 인증되지 않을 수 있습니다. 인증된 자격 증명은 지원되는 자격 증명 공급자가 인증한 사용자를 위한 것이고, 인증되지 않은 자격 증명은 대개 자격 증명 공급자를 통해 인증하지 않는 게스트 사용자에 속합니다. Amazon Cognito는 인증되지 않은 자격 증명을 지원하는 고유 식별자 및 AWS 자격 증명을 제공합니다. 자세한 내용은 Amazon Cognito 자격 증명으로 권한 부여 단원을 참조하십시오.
다음 작업의 경우 를 통해 Amazon Cognito 자격 증명에 연결된 AWS IoT Core 정책을 AWS IoT Core 사용합니다AttachPolicy
API. 이렇게 하면 인증된 자격 증명이 있는 Amazon Cognito 자격 증명 풀에 연결된 권한의 범위가 줄어듭니다.
-
iot:Connect
-
iot:Publish
-
iot:Subscribe
-
iot:Receive
-
iot:GetThingShadow
-
iot:UpdateThingShadow
-
iot:DeleteThingShadow
즉, Amazon Cognito 자격 증명에는 IAM 역할 정책 및 AWS IoT Core 정책의 권한이 필요합니다. 를 통해 IAM 역할 정책을 풀에 연결하고 AWS IoT Core 정책을 Amazon Cognito Identity에 AWS IoT Core 연결합니다AttachPolicy
API.
인증된 사용자와 인증되지 않은 사용자의 자격 증명 유형은 서로 다릅니다. Amazon Cognito 자격 증명에 AWS IoT 정책을 연결하지 않으면 인증된 사용자가 에서 권한 부여에 실패 AWS IoT 하고 AWS IoT 리소스 및 작업에 액세스할 수 없습니다.
다른 AWS IoT Core 작업 또는 인증되지 않은 자격 증명의 경우 AWS IoT Core 는 Amazon Cognito 자격 증명 풀 역할에 연결된 권한의 범위를 좁히지 않습니다. 인증된 자격 증명과 인증되지 않은 자격 증명 모두에 대해 이 정책은 Amazon Cognito 풀 역할에 연결하도록 권장되는 가장 허용적인 정책입니다.
HTTP
인증되지 않은 Amazon Cognito 자격 증명이 Amazon Cognito 자격 증명과 관련된 주제에 HTTP 메시지를 게시하도록 허용하려면 Amazon Cognito 자격 증명 풀 역할에 다음 IAM 정책을 연결합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Publish",
],
"Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"]
}
]
}
인증된 사용자를 허용하려면 를 사용하여 AWS IoT Core AttachPolicy Amazon Cognito 자격 증명 풀 역할과 Amazon Cognito 자격 증명에 이전 정책을 연결합니다API.
Amazon Cognito 자격 증명을 승인할 때 는 정책을 모두 AWS IoT Core 고려하고 지정된 최소 권한을 부여합니다. 두 정책이 모두 요청된 작업을 허용하는 경우에만 작업이 허용됩니다. 어느 한 정책이 작업을 허용하지 않을 경우 해당 작업은 승인되지 않습니다.
MQTT
인증되지 않은 Amazon Cognito 자격 증명이 계정 WebSocket 의 Amazon Cognito 자격 증명과 관련된 주제에 MQTT 메시지를 게시하도록 허용하려면 Amazon Cognito 자격 증명 풀 역할에 다음 IAM 정책을 연결합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"]
},
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": ["arn:aws:iot:us-east-1:123456789012:client/${cognito-identity.amazonaws.com:sub}"]
}
]
}
인증된 사용자를 허용하려면 를 사용하여 AWS IoT Core AttachPolicy Amazon Cognito 자격 증명 풀 역할과 Amazon Cognito 자격 증명에 이전 정책을 연결합니다API.
Amazon Cognito 자격 증명을 승인할 때 는 지정된 최소 권한을 모두 AWS IoT Core 고려하고 부여합니다. 두 정책이 모두 요청된 작업을 허용하는 경우에만 작업이 허용됩니다. 어느 한 정책이 작업을 허용하지 않을 경우 해당 작업은 승인되지 않습니다.