Utilisation de variables de politique de certificat X.509 - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de variables de politique de certificat X.509

Cette rubrique explique en détail comment utiliser les variables de politique de certificat. Les variables de politique de certificat X.509 sont essentielles lorsque vous créez des AWS IoT Core politiques qui accordent des autorisations basées sur les attributs du certificat X.509. Si votre certificat X.509 n'inclut aucun attribut de certificat particulier mais que la variable de politique de certificat correspondante est utilisée dans votre document de stratégie, l'évaluation de la politique peut entraîner un comportement inattendu. Cela est dû au fait que la variable de stratégie manquante n'est pas évaluée dans la déclaration de stratégie.

Exemple de certificat X.509

Un certificat X.509 typique peut apparaître comme suit. Cet exemple de certificat inclut des attributs de certificat. Lors de l'évaluation des AWS IoT Core politiques, les attributs de certificat suivants seront renseignés sous forme de variables de politique de certificat : Serial Number IssuerSubject,X509v3 Issuer Alternative Name,, etX509v3 Subject Alternative Name.

Certificate: Data: Version: 3 (0x2) Serial Number: 92:12:85:cb:b7:a5:e0:86 Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=IoT Devices, OU=SmartHome, ST=WA, CN=IoT Devices Primary CA, GN=Primary CA1/initials=XY/dnQualifier=Example corp, SN=SmartHome/ title=CA1/pseudonym=Primary_CA/generationQualifier=2/serialNumber=987 Validity Not Before: Mar 26 03:25:40 2024 GMT Not After : Apr 28 03:25:40 2025 GMT Subject: C=US, O=IoT Devices, OU=LightBulb, ST=NY, CN=LightBulb Device Cert, GN=Bulb/initials=ZZ/dnQualifier=Bulb001, SN=Multi Color/title=RGB/pseudonym=RGB Device/generationQualifier=4/serialNumber=123 Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: << REDACTED >> Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment X509v3 Subject Alternative Name: DNS:example.com, IP Address:1.2.3.4, URI:ResourceIdentifier001, email:device1@example.com, DirName:/C=US/O=IoT/OU=SmartHome/CN=LightBulbCert X509v3 Issuer Alternative Name: DNS:issuer.com, IP Address:5.6.7.8, URI:PrimarySignerCA, email:primary@issuer.com, DirName:/C=US/O=Issuer/OU=IoT Devices/CN=Primary Issuer CA Signature Algorithm: sha256WithRSAEncryption << REDACTED >>

Utilisation des attributs de l'émetteur de certificats comme variables de politique de certificat

Le tableau suivant fournit des informations détaillées sur la manière dont les attributs de l'émetteur du certificat seront renseignés dans une AWS IoT Core politique.

Attributs de l'émetteur à renseigner dans une politique
Attributs de l'émetteur du certificat Variables de politique de certificat
  • C = NOUS

  • O = Appareils IoT

  • UO = SmartHome

  • ST = WA

  • CN=IoT Devices (CA principale)

  • GN = primaire CA1

  • Initiales = XY

  • dnQualifier=Exemple de société

  • SN = SmartHome

  • titre= CA1

  • Pseudonyme = Primary_CA

  • generationQualifier=2

  • serialNumber= 987

  • iot:Certificate.Issuer.Country = US

  • iot:Certificate.Issuer.Organization = IoT Devices

  • iot:Certificate.Issuer.OrganizationalUnit = SmartHome

  • iot:Certificate.Issuer.State = WA

  • iot:Certificate.Issuer.CommonName = IoT Devices Primary CA

  • iot:Certificate.Issuer.GivenName = Primary CA1

  • iot:Certificate.Issuer.initials = XY

  • iot:Certificate.Issuer.DistinguishedNameQualifier = Example corp

  • iot:Certificate.Issuer.Surname = SmartHome

  • iot:Certificate.Issuer.Title = CA1

  • iot:Certificate.Issuer.Pseudonym = Primary_CA

  • iot:Certificate.Issuer.GenerationQualifier = 2

  • iot:Certificate.Issuer.SerialNumber = 987

Utilisation des attributs du sujet du certificat comme variables de politique de certificat

Le tableau suivant fournit des informations détaillées sur la manière dont les attributs du sujet du certificat seront renseignés dans une AWS IoT Core politique.

Attributs du sujet à renseigner dans une politique
Attributs du sujet du certificat Variables de politique de certificat
  • C = NOUS

  • O = Appareils IoT

  • ST = NEW YORK

  • CN= Certificat de LightBulb périphérique

  • GN = ampoule

  • Initiales = ZZ

  • dnQualifier= Ampoule 001

  • SN=Multi Color

  • titre= RGB

  • pseudonyme = Appareil RGB

  • generationQualifier=4

  • serialNumber=123

  • iot:Certificate.Subject.Country = US

  • iot:Certificate.Subject.Organization = IoT Devices

  • iot:Certificate.Subject.State = NY

  • iot:Certificate.Subject.CommonName = LightBulb Device Cert

  • iot:Certificate.Subject.GivenName = Bulb

  • iot:Certificate.Subject.initials = ZZ

  • iot:Certificate.Subject.DistinguishedNameQualifier = Bulb001

  • iot:Certificate.Subject.Surname = Multi Color

  • iot:Certificate.Subject.Title = RGB

  • iot:Certificate.Subject.Pseudonym = RGB Device

  • iot:Certificate.Subject.GenerationQualifier = 4

  • iot:Certificate.Subject.SerialNumber = 123

Utilisation des attributs de nom alternatif de l'émetteur du certificat comme variables de politique de certificat

Le tableau suivant fournit des informations détaillées sur la manière dont les attributs de nom alternatif de l'émetteur du certificat seront renseignés dans une AWS IoT Core politique.

Attributs du nom alternatif de l'émetteur à renseigner dans une politique
Nom alternatif de l'émetteur X509v3 Attribut dans une politique
  • DNS:issuer.com

  • Adresse IP : 5.6.7.8

  • URI: PrimarySigner CALIFORNIE

  • courriel : primary@issuer.com

  • DirName: /c=us/o=issuer/ou=IoT Devices/cn=émetteur principal CA

  • iot:Certificate.Issuer.AlternativeName.DNSName = issuer.com

  • iot:Certificate.Issuer.AlternativeName.IPAddress = 5.6.7.8

  • iot:Certificate.Issuer.AlternativeName.UniformResourceIdentifier = PrimarySignerCA

  • iot:Certificate.Issuer.AlternativeName.RFC822Name = primary@issuer.com

  • iot:Certificate.Issuer.AlternativeName.DirectoryName = cn=Primary Issuer CA,ou=IoT Devices,o=Issuer,c=US

Utilisation des attributs de nom alternatif du sujet du certificat comme variables de politique de certificat

Le tableau suivant fournit des informations détaillées sur la manière dont les attributs du nom alternatif du sujet du certificat seront renseignés dans une AWS IoT Core politique.

Attributs du nom alternatif du sujet à renseigner dans une politique
Nom alternatif du sujet X509v3 Attribut dans une politique
  • DNS:exemple.com

  • Adresse IP : 1.2.3.4

  • URI: ResourceIdentifier 001

  • courriel : device1@example.com

  • DirName: /C = US/O = IoT/OU = /CN = SmartHome LightBulbCert

  • iot:Certificate.Subject.AlternativeName.DNSName = example.com

  • iot:Certificate.Subject.AlternativeName.IPAddress = 1.2.3.4

  • iot:Certificate.Subject.AlternativeName.UniformResourceIdentifier = ResourceIdentifier001

  • iot:Certificate.Subject.AlternativeName.RFC822Name = device1@example.com

  • iot:Certificate.Subject.AlternativeName.DirectoryName = cn=LightBulbCert,ou=SmartHome,o=IoT,c=US

Utilisation d'un autre attribut de certificat comme variable de politique de certificat

Le tableau suivant fournit des informations détaillées sur la manière dont les autres attributs de certificat seront renseignés dans une AWS IoT Core politique.

Autres attributs à renseigner dans une politique
Autre attribut de certificat Variable de politique de certificat

Serial Number: 92:12:85:cb:b7:a5:e0:86

iot:Certificate.SerialNumber = 10525622389124227206

Limitations applicables aux variables de stratégie de certificat X.509

Les limitations suivantes s'appliquent aux variables de stratégie de certificat X.509 :

Variables de stratégie manquantes

Si votre certificat X.509 n'inclut aucun attribut de certificat particulier mais que la variable de politique de certificat correspondante est utilisée dans votre document de stratégie, l'évaluation de la politique peut entraîner un comportement inattendu. Cela est dû au fait que la variable de stratégie manquante n'est pas évaluée dans la déclaration de stratégie.

SerialNumber Format du certificat

AWS IoT Core traite le numéro de série du certificat comme la représentation sous forme de chaîne d'un entier décimal. Par exemple, si une politique autorise uniquement les connexions dont l'ID client correspond au numéro de série du certificat, l'ID client doit être le numéro de série au format décimal.

Caractères génériques

Si des caractères génériques sont présents dans les attributs du certificat, la variable de politique n'est pas remplacée par la valeur de l'attribut du certificat. Cela laissera le ${policy-variable} texte dans le document de politique. Cela risque de provoquer un échec d'autorisation. Les caractères génériques suivants peuvent être utilisés : *, $, +, ? et #.

Champs de tableau

Les attributs de certificats qui contiennent des tableaux sont limités à cinq éléments. Les autres éléments sont ignorés.

String length

Toutes les valeurs de chaîne sont limitées à 1 024 caractères. Si un attribut de certificat contient une chaîne de plus de 1024 caractères, la variable de politique n'est pas remplacée par la valeur de l'attribut de certificat. Cela les conservera ${policy-variable} dans le document de politique. Cela risque de provoquer un échec d'autorisation.

Caractères spéciaux

Tout caractère spécial, tel que ,, ", \, +, =, <, > et ; doit être préfixé par une barre oblique inverse (\) lorsqu'il est utilisé dans une variable de stratégie. Par exemple, Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US devient Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US.

Exemples de politiques utilisant des variables de politique de certificat

Le document de politique suivant autorise les connexions avec un ID client correspondant au numéro de série du certificat et la publication sur le sujet correspondant au modèle :${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*.

Important

Si votre certificat X.509 n'inclut aucun attribut de certificat particulier mais que la variable de politique de certificat correspondante est utilisée dans votre document de stratégie, l'évaluation de la politique peut entraîner un comportement inattendu. Cela est dû au fait que la variable de stratégie manquante n'est pas évaluée dans la déclaration de stratégie. Par exemple, si vous joignez le document de politique suivant à un certificat qui ne contient pas l'iot:Certificate.Subject.Organizationattribut, les variables de politique de iot:Certificate.Subject.Organization certificat ne seront pas renseignées lors de l'évaluation de la politique.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/${iot:Certificate.SerialNumber}" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*" ] } ] }

Vous pouvez également utiliser l'opérateur de condition nulle pour vous assurer que les variables de politique de certificat utilisées dans une politique sont renseignées lors de l'évaluation de la politique. Le document de politique suivant autorise iot:Connect les certificats uniquement lorsque les attributs du numéro de série du certificat et du nom commun de l'objet du certificat sont présents.

Toutes les variables de politique de certificat ont des valeurs de chaîne, de sorte que tous les opérateurs de condition de chaîne sont pris en charge.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/*" ], "Condition": { "Null": { "iot:Certificate.SerialNumber": "false", "iot:Certificate.Subject.CommonName": "false" } } } ] }