

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# X.509 証明書 AWS IoT Core ポリシー変数
<a name="cert-policy-variables"></a>

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

**重要**  
X.509 証明書に特定の証明書属性が含まれていないものの、対応する証明書ポリシー変数がポリシードキュメントで使用されている場合、ポリシー評価によって予期しない動作が発生する可能性があります。

## CertificateId
<a name="cert-policy-variables-certid"></a>

[RegisterCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCertificate.html) API では、レスポンス本文に `certificateId` が表示されます。証明書に関する情報を取得するには、[DescribeCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCertificate.html) で `certificateId` を使用できます。

## 発行元の属性
<a name="issuer-attributes"></a>

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

## 件名の属性
<a name="subject-attributes"></a>

次の 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` サフィックスを使用して、属性の値をすべて指定できます。

## 発行元の代替名属性
<a name="issuer-alternate-name-attributes"></a>

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

## 件名の代替名属性
<a name="subject-alternate-name-attributes"></a>

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

## その他の属性
<a name="other-attributes"></a>

を使用して`iot:Certificate.SerialNumber`、証明書のシリアル番号に基づいて、 AWS IoT Core リソースへのアクセスを許可または拒否できます。`iot:Certificate.AvailableKeys` ポリシー変数には、値を含むすべての証明書のポリシー変数の名前が含まれます。

# X.509 証明書のポリシー変数の使用
<a name="use-policy-variables"></a>

このトピックでは、証明書のポリシー変数の使用方法について詳しく説明します。X.509 証明書のポリシー変数は、X.509 証明書の属性に基づいてアクセス許可を付与する AWS IoT Core ポリシーを作成するときに必須です。X.509 証明書に特定の証明書属性が含まれていないものの、対応する証明書ポリシー変数がポリシードキュメントで使用されている場合、ポリシー評価によって予期しない動作が発生する可能性があります。これは、欠落しているポリシー変数がポリシーステートメントで評価されないためです。

**Topics**
+ [X.509 証明書の例](#certificate-example)
+ [証明書のポリシー変数としての証明書発行者の属性の使用](#issuer-attributes-policy)
+ [証明書のポリシー変数としての証明書のサブジェクト属性の使用](#subject-attributes-policy)
+ [証明書ポリシー変数として証明書発行者の代替名属性を使用](#issuer-alternate-name-attributes-policy)
+ [証明書ポリシー変数として証明書サブジェクトの代替名属性を使用](#subject-alternate-name-attributes-policy)
+ [証明書ポリシー変数として他の証明書属性を使用](#other-attributes-policy)
+ [X.509 証明書のポリシー変数の制限](#policy-limits)
+ [証明書ポリシー変数を使用したポリシーの例](#example-attributes-policy)

## X.509 証明書の例
<a name="certificate-example"></a>

一般的な X.509 証明書は次のように表示されます。この証明書の例には、証明書の属性が含まれています。 AWS IoT Core ポリシーの評価中、`Serial Number`、`Issuer`、`Subject`、`X509v3 Issuer Alternative Name`、および `X509v3 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 >>
```

## 証明書のポリシー変数としての証明書発行者の属性の使用
<a name="issuer-attributes-policy"></a>

次の表は、証明書発行者の属性を AWS IoT Core ポリシーに入力する方法の詳細を示しています。


**ポリシーに入力する発行者の属性**  

| 証明書発行者の属性 | 証明書のポリシー変数 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/use-policy-variables.html)  | 

## 証明書のポリシー変数としての証明書のサブジェクト属性の使用
<a name="subject-attributes-policy"></a>

次の表は、証明書のサブジェクト属性を AWS IoT Core ポリシーに入力する方法の詳細を示しています。


**ポリシーに入力されるサブジェクト属性**  

| 証明書のサブジェクト属性 | 証明書のポリシー変数 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/use-policy-variables.html)  | 

## 証明書ポリシー変数として証明書発行者の代替名属性を使用
<a name="issuer-alternate-name-attributes-policy"></a>

次の表は、証明書発行者の代替名属性が AWS IoT Core ポリシーに入力される方法の詳細を示しています。


**ポリシーに入力する発行者の代替名属性**  

| X509v3 発行者の代替名 | ポリシー内の属性 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/use-policy-variables.html)  | 

## 証明書ポリシー変数として証明書サブジェクトの代替名属性を使用
<a name="subject-alternate-name-attributes-policy"></a>

次の表は、証明書サブジェクトの代替名属性が AWS IoT Core ポリシーに入力される方法の詳細を示しています。


**ポリシーに入力されるサブジェクトの代替名属性**  

| X509v3 サブジェクトの代替名 | ポリシー内の属性 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/use-policy-variables.html)  | 

## 証明書ポリシー変数として他の証明書属性を使用
<a name="other-attributes-policy"></a>

次の表は、他の証明書属性が AWS IoT Core ポリシーに入力される方法の詳細を示しています。


**ポリシーに入力されるその他の属性**  

| その他の証明書属性 | 証明書のポリシー変数 | 
| --- | --- | 
|  `Serial Number: 92:12:85:cb:b7:a5:e0:86`  |  `iot:Certificate.SerialNumber = 10525622389124227206`  | 

## X.509 証明書のポリシー変数の制限
<a name="policy-limits"></a>

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

欠落しているポリシー変数  
X.509 証明書に特定の証明書属性が含まれていないものの、対応する証明書ポリシー変数がポリシードキュメントで使用されている場合、ポリシー評価によって予期しない動作が発生する可能性があります。これは、欠落しているポリシー変数がポリシーステートメントで評価されないためです。

証明書の SerialNumber 形式  
AWS IoT Core は、証明書のシリアル番号を 10 進数の整数の文字列表現として扱います。例えば、ポリシーで証明書のシリアル番号に一致するクライアント ID のみの接続が許可されている場合、クライアント ID は 10 進数のシリアル番号である必要があります。

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

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

文字列の長さ  
すべての文字列値は 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` になります。

## 証明書ポリシー変数を使用したポリシーの例
<a name="example-attributes-policy"></a>

次のポリシードキュメントでは、証明書のシリアル番号に一致するクライアント ID を使用して接続し、`${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*` のパターンに一致するトピックに発行できます。

**重要**  
X.509 証明書に特定の証明書属性が含まれていないものの、対応する証明書ポリシー変数がポリシードキュメントで使用されている場合、ポリシー評価によって予期しない動作が発生する可能性があります。これは、欠落しているポリシー変数がポリシーステートメントで評価されないためです。例えば、`iot:Certificate.Subject.Organization` 属性を含まない証明書に次のポリシードキュメントをアタッチした場合、ポリシー評価中に `iot:Certificate.Subject.Organization` 証明書ポリシー変数は入力されません。

****  

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

[Null 条件演算子](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null)を使用して、ポリシーの評価中にポリシーで使用される証明書ポリシー変数が入力されるようにすることもできます。次のポリシードキュメントでは、証明書のシリアル番号と証明書のサブジェクトの共通名属性が存在する場合にのみ、証明書で `iot:Connect` を許可します。

すべての証明書ポリシー変数には文字列値があるため、すべての[文字列条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)がサポートされます。

****  

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