AWS IoT
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

X.509 证书策略变量

X.509 证书策略变量允许您根据 X.509 证书属性编写授予权限的 AWS IoT 策略。以下部分介绍如何使用这些证书策略变量。

发布者属性

以下 AWS IoT 策略变量允许您根据由证书发布者设置的证书属性来授予或拒绝权限。

  • 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

主题属性

以下 AWS IoT 策略变量允许您根据由证书发布者设置的证书使用者属性来授予或拒绝权限。

  • 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 由第一个国家/地区名称替换。您可以使用从零开始的索引请求特定的属性值。例如,iot:Certificate.Subject.Country#1Certificate.Subject.Country 属性中第二个国家/地区名称替换。如果您指定不存在的属性值 (例如,如果您在只有两个值分配到属性时请求第三个值),则不会执行替换功能,并且授权将失败。您可以在策略变量名称中使用 .List 后缀指定属性的所有值。以下示例策略允许任何客户端连接至 AWS IoT,但是,对于证书的 Certificate.Subject.Organization 属性设为 "Example Corp""AnyCompany" 的客户端,会限制发布权限。这可以通过使用为前面的操作指定条件的 "Condition" 属性来完成。本例中的条件是证书的 Certificate.Subject.Organization 属性必须包括一个列出的值。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:Connect" ], "Resource":[ "*" ] }, { "Effect":"Allow", "Action":[ "iot:Publish" ], "Resource":[ "*" ], "Condition":{ "ForAllValues:StringEquals":{ "iot:Certificate.Subject.Organization.List":[ "Example Corp", "AnyCompany" ] } } } ] }

发布者备用名称属性

以下 AWS IoT 策略变量允许您根据由证书发布者设置的发布者备用名称属性来授予或拒绝权限。

  • 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

主题备用名称属性

以下 AWS IoT 策略变量允许您根据由证书发布者设置的使用者备用名称属性来授予或拒绝权限。

  • 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 允许或拒绝访问 AWS IoT 资源。iot:Certificate.AvailableKeys 策略变量包含具有值的所有证书策略变量的名称。

X.509 证书策略变量限制

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

通配符

如果证书属性中有通配符,则策略变量不会由证书属性值替换,并在策略文档中保留 ${policy-variable} 文本。这可能会导致授权失败。

数组字段

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

字符串长度

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