X.509 証明書の AWS IoT Core ポリシー変数 - AWS IoT

X.509 証明書の AWS IoT Core ポリシー変数

X.509 証明書のポリシー変数は X.509 証明書の属性に基づいてアクセス許可を付与する AWS IoT Core ポリシーを書き込むことができます。次のセクションでそれらの証明書のポリシー変数を使用する方法を説明します。

CertificateId

RegisterCertificate API では、レスポンス本文に certificateId が表示されます。証明書に関する情報を取得するには、DescribeCertificatecertificateId を使用します。

発行元の属性

次の AWS 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

件名の属性

次の AWS 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 証明書は、これらの属性が 1 つ以上の値を含むようにします。デフォルトでは、複数値の各属性用のポリシー変数は最初の値を返します。たとえば、Certificate.Subject.Country 属性には国名のリストが含まれる場合がありますが、ポリシーで評価されると、iot:Certificate.Subject.Country は最初の国名に置き換えられます。1 から始めるインデックスを使用して、最初の値以外の特定の属性値をリクエストできます。たとえば、iot:Certificate.Subject.Country.1 は、Certificate.Subject.Country 属性の 2 番目の国名に置き換えられます。存在していないインデックス値を指定する場合、(たとえば、属性に割り当てられた値が 2 つのみのとき 3 番目の値を要求すると) 置き換えはされず、認可は失敗します。ポリシーの変数名で、.List サフィックスを使用して、属性の値をすべて指定できます。

Registered devices (2)

AWS IoT Core レジストリでモノとして登録されているデバイスの場合、次のポリシーにより、モノの名前が AWS IoT Core レジストリに登録されたクライアントの接続が許可されます。ただし、モノの名前に固有のトピックに発行する権限が、Certificate.Subject.Organization 属性が "Example Corp" または "AnyCompany" に設定された証明書を持つクライアントに制限されます。この制限は、前述のアクションを許可するために満たす必要がある条件を指定する "Condition" フィールドを使用して達成できます。この場合の条件は、証明書に関連付けられた Certificate.Subject.Organization 属性に、リストされた値の 1 つを含める必要があることです。

{ "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 (2)

AWS IoT Core レジストリでモノとして登録されていないデバイスの場合、次のポリシーにより、クライアント ID client1client2client3 で AWS IoT Core に接続するアクセス許可が付与されます。ただし、クライアント ID に固有のトピックに発行する権限が、Certificate.Subject.Organization 属性が "Example Corp" または "AnyCompany" に設定された証明書を持つクライアントに制限されます。この制限は、前述のアクションを許可するために満たす必要がある条件を指定する "Condition" フィールドを使用して達成できます。この場合の条件は、証明書に関連付けられた Certificate.Subject.Organization 属性に、リストされた値の 1 つを含める必要があることです。

{ "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" ] } } } ] }

発行元の代替名属性

次の AWS 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

件名の代替名属性

次の AWS 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 を使用して、証明書のシリアルナンバーに基づいて AWS IoT Core リソースへのアクセスを許可、または、拒否することができます。iot:Certificate.AvailableKeys ポリシー変数には、値を含むすべての証明書のポリシー変数の名前が含まれます。

X.509 証明書のポリシー変数の制限

次の制限は、X.509 証明書のポリシー変数に適用されます。

ワイルドカード

ワイルドカード文字が証明書の属性にある場合は、ポリシー変数は証明書属性値に置き換えられず、ポリシードキュメントに ${policy-variable} テキストが残されます。これにより、承認が失敗する場合があります。ワイルドカード文字として、*$+?# を使用できます。

配列フィールド

配列を含む証明書の属性は、5 つの項目に制限されます。追加項目は無視されます。

文字列の長さ

すべての文字列値は 1024 文字に制限されています。証明書の属性に、文字列が 1024 文字以上含まれている場合、ポリシー変数は証明書の属性値に置き換えられず、ポリシードキュメントに ${policy-variable} を残します。これにより、承認が失敗する場合があります。

特殊文字

,"\+=<>; などの特殊文字をポリシー変数で使用する場合は、先頭にバックスラッシュ (\) を付ける必要があります。たとえば、Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=USAmazon Web Service O=\Amazon.com Inc. L\=Seattle ST\=Washington C\=US になります。