X.509 证书策略变量 Amazon IoT Core - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

X.509 证书策略变量 Amazon IoT Core

X.509 证书策略变量有助于编写策略。 Amazon IoT Core 这些策略根据 X.509 证书属性授予权限。以下各节介绍如何使用这些证书策略变量。

CertificateId

RegisterCertificateAPI 中,certificateId显示在响应正文中。要获取有关您的证书的信息,请使用certificateId中的DescribeCertificate

颁发者属性

根据证书颁发者设置的证书属性,以下 Amazon IoT Core 策略变量支持允许或拒绝权限。

  • iot:Certificate.Issuer.DistinguishedNameQualifier

  • iot:Certificate.Issuer.Country

  • iot:Certificate.Issuer.Organization

  • iot:Certificate.Issuer.OrganizationalUnit

  • iot:Certificate.Issuer.State

  • iot:Certificate.Issuer.CommonName

  • iot:Certificate.Issuer.SerialNumber

  • iot:Certificate.Issuer.Title

  • iot:Certificate.Issuer.Surname

  • iot:Certificate.Issuer.GivenName

  • iot:Certificate.Issuer.Initials

  • iot:Certificate.Issuer.Pseudonym

  • iot:Certificate.Issuer.GenerationQualifier

使用者属性

以下 Amazon IoT Core 策略变量支持根据证书颁发者设置的证书主题属性授予或拒绝权限。

  • iot:Certificate.Subject.DistinguishedNameQualifier

  • iot:Certificate.Subject.Country

  • iot:Certificate.Subject.Organization

  • iot:Certificate.Subject.OrganizationalUnit

  • iot:Certificate.Subject.State

  • iot:Certificate.Subject.CommonName

  • iot:Certificate.Subject.SerialNumber

  • iot:Certificate.Subject.Title

  • iot:Certificate.Subject.Surname

  • iot:Certificate.Subject.GivenName

  • iot:Certificate.Subject.Initials

  • iot:Certificate.Subject.Pseudonym

  • iot:Certificate.Subject.GenerationQualifier

X.509 证书为这些属性提供了包含一个或多个值的选项。默认情况下,每个多值属性的策略变量会返回第一个值。例如,Certificate.Subject.Country 属性可能包含国家/地区名称列表,但在策略中进行评估时,iot:Certificate.Subject.Country 会替换为第一个国家/地区名称。

您可以使用从 1 开始的索引请求第一个值以外的特定属性值。例如,iot:Certificate.Subject.Country.1Certificate.Subject.Country 属性中第二个国家/地区名称替换。如果您指定不存在的索引值(例如,如果您在只有两个值分配到属性时请求第三个值),则不会执行替换功能,并且授权将失败。您可以在策略变量名称中使用 .List 后缀指定属性的所有值。

Registered devices

对于在注册 Amazon IoT Core 表中注册为事物的设备,以下策略允许在注册 Amazon IoT Core 表中注册了事物名称的客户端进行连接。该政策将发布特定于事物名称的主题的权限仅限于那些拥有Certificate.Subject.Organization属性设置为或的证书的客户端。"Example Corp" "AnyCompany"此限制是通过使用指定条件的"Condition"字段来实现的,必须满足该条件才能允许执行前面的操作。在此情况下,条件是与证书关联的 Certificate.Subject.Organization 属性必须包括列出的值之一:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:Connect" ], "Resource":[ "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}" ] }, { "Effect":"Allow", "Action":[ "iot:Publish" ], "Resource":[ "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:Connection.Thing.ThingName}" ], "Condition":{ "ForAllValues:StringEquals":{ "iot:Certificate.Subject.Organization.List":[ "Example Corp", "AnyCompany" ] } } } ] }
Unregistered devices

对于未在注册 Amazon IoT Core 表中注册为事物的设备,以下策略授予 Amazon IoT Core 使用客户端 ID client1 client2、和进行连接的权限client3。该政策将向特定于客户端 ID 的主题发布的权限仅限于那些拥有Certificate.Subject.Organization属性设置为"Example Corp"或的证书的客户端。"AnyCompany"通过使用 "Condition" 字段来完成此限制,该字段指定要允许前面的操作而必须满足的条件。在此情况下,条件是与证书关联的 Certificate.Subject.Organization 属性必须包括列出的值之一:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:Connect" ], "Resource":[ "arn:aws:iot:us-east-1:123456789012:client/client1", "arn:aws:iot:us-east-1:123456789012:client/client2", "arn:aws:iot:us-east-1:123456789012:client/client3" ] }, { "Effect":"Allow", "Action":[ "iot:Publish" ], "Resource":[ "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}" ], "Condition":{ "ForAllValues:StringEquals":{ "iot:Certificate.Subject.Organization.List":[ "Example Corp", "AnyCompany" ] } } } ] }

颁发者备用名称属性

以下 Amazon IoT Core 策略变量支持根据证书颁发者设置的颁发者备用名称属性授予或拒绝权限。

  • iot:Certificate.Issuer.AlternativeName.RFC822Name

  • iot:Certificate.Issuer.AlternativeName.DNSName

  • iot:Certificate.Issuer.AlternativeName.DirectoryName

  • iot:Certificate.Issuer.AlternativeName.UniformResourceIdentifier

  • iot:Certificate.Issuer.AlternativeName.IPAddress

使用者备用名称属性

以下 Amazon IoT Core 策略变量支持根据证书颁发者设置的主题备用名称属性授予或拒绝权限。

  • iot:Certificate.Subject.AlternativeName.RFC822Name

  • iot:Certificate.Subject.AlternativeName.DNSName

  • iot:Certificate.Subject.AlternativeName.DirectoryName

  • iot:Certificate.Subject.AlternativeName.UniformResourceIdentifier

  • iot:Certificate.Subject.AlternativeName.IPAddress

其它属性

根据证书iot:Certificate.SerialNumber的序列号,您可以使用来允许或拒绝对 Amazon IoT Core 资源的访问。iot:Certificate.AvailableKeys 策略变量包含具有值的所有证书策略变量的名称。

X.509 证书策略变量限制

以下限制适用于 X.509 证书策略变量:

通配符

如果证书属性中存在通配符,则策略变量不会被证书属性值所取代。这会将${policy-variable}文本留在政策文件中。这可能会导致授权失败。可以使用以下通配符:*$+?#

数组字段

包含数组的证书属性限制为五项。其它的项将被忽略。

字符串长度

所有字符串值的长度限制为 1024 个字符。如果证书属性包含长度超过 1024 个字符的字符串,则该策略变量不会被证书属性值所取代。这将保留${policy-variable}在政策文件中。这可能会导致授权失败。

特殊字符

在策略变量中使用时,任何特殊字符(例如 ,"\+=<>;)都必须使用反斜杠 (\) 作为前缀。例如,Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US 改为 Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US