本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
X.509 证书 Amazon IoT Core 策略变量
X.509 证书策略变量允许您根据 X.509 证书属性编写授予权限的 Amazon IoT Core 策略。以下部分介绍如何使用这些证书策略变量。
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.1 由 Certificate.Subject.Country 属性中第二个国家/地区名称替换。如果您指定不存在的索引值(例如,如果您在只有两个值分配到属性时请求第三个值),则不会执行替换功能,并且授权将失败。您可以在策略变量名称中使用 .List 后缀指定属性的所有值。
颁发者备用名称属性
以下 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。