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#1
由 Certificate.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}
。这可能会导致授权失败。