기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
X.509 인증서 정책 변수 사용
이 주제에서는 인증서 정책 변수를 사용하는 방법에 대한 세부 정보를 제공합니다. X.509 인증서 정책 변수는 X.509 인증서 속성을 기반으로 권한을 부여하는 AWS IoT Core 정책을 생성할 때 필수입니다. X.509 인증서에 특정 인증서 속성이 포함되어 있지 않지만 정책 문서에서 해당 인증서 정책 변수를 사용하는 경우 정책 평가가 예기치 않은 동작으로 이어질 수 있습니다. 이는 누락된 정책 변수가 정책 문에서 평가되지 않기 때문입니다.
이 주제에서 수행할 작업
X.509 인증서 예제
일반적인 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 >>
인증서 발행자 속성을 인증서 정책 변수로 사용
다음 표에는 인증서 발급자 속성이 AWS IoT Core 정책에 채워지는 방법에 대한 세부 정보가 나와 있습니다.
| 인증서 발행자 속성 | 인증서 정책 변수 |
|---|---|
|
|
인증서 주체 속성을 인증서 정책 변수로 사용
다음 표에는 인증서 주체 속성이 AWS IoT Core 정책에 채워지는 방법에 대한 세부 정보가 나와 있습니다.
| 인증서 주체 속성 | 인증서 정책 변수 |
|---|---|
|
|
인증서 발행자 대체 이름 속성을 인증서 정책 변수로 사용
다음 표에는 인증서 발행자 대체 이름 속성이 AWS IoT Core 정책에 채워지는 방법에 대한 세부 정보가 나와 있습니다.
| X509v3 발행자 대체 이름 | 정책의 속성 |
|---|---|
|
|
인증서 주체 대체 이름 속성을 인증서 정책 변수로 사용
다음 표에는 인증서 주체 대체 이름 속성이 AWS IoT Core 정책에 채워지는 방법에 대한 세부 정보가 나와 있습니다.
| X509v3 주체 대체 이름 | 정책의 속성 |
|---|---|
|
|
다른 인증서 속성을 인증서 정책 변수로 사용
다음 표에는 다른 인증서 속성이 AWS IoT Core 정책에 채워지는 방법에 대한 세부 정보가 나와 있습니다.
| 기타 인증서 속성 | 인증서 정책 변수 |
|---|---|
|
|
|
X.509 인증서 정책 변수 제한 사항
X.509 인증서 정책 변수에는 다음의 제한 사항이 적용됩니다.
- 누락된 정책 변수
-
X.509 인증서에 특정 인증서 속성이 포함되어 있지 않지만 정책 문서에서 해당 인증서 정책 변수를 사용하는 경우 정책 평가가 예기치 않은 동작으로 이어질 수 있습니다. 이는 누락된 정책 변수가 정책 문에서 평가되지 않기 때문입니다.
- 인증서 SerialNumber 형식
-
AWS IoT Core 는 인증서 일련 번호를 10진수 정수의 문자열 표현으로 처리합니다. 예를 들어 정책에서 인증서 일련 번호와 일치하는 클라이언트 ID와의 연결만 허용하는 경우 클라이언트 ID는 십진수 형식의 일련 번호여야 합니다.
- 와일드카드
-
인증서 속성에 와일드카드 문자가 있을 경우 정책 변수가 인증서 속성 값으로 대체되지 않습니다. 이렇게 하면 정책 문서에
${policy-variable}텍스트가 남습니다. 이는 인증 실패를 초래할 수 있습니다.*,$,+,?,#등의 와일드카드 문자를 사용할 수 있습니다. - 어레이 필드
-
어레이를 포함하는 인증서 속성은 5개 항목으로 제한됩니다. 추가 항목은 무시됩니다.
- 문자열 길이
-
모든 문자열 값은 1,024자로 제한됩니다. 인증서 속성이 1,024자를 초과하는 문자열을 포함할 경우 정책 변수가 인증서 속성 값으로 대체되지 않습니다. 이렇게 하면 정책 문서에
${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가 됩니다.
인증서 정책 변수를 사용하는 정책 예제
다음 정책 문서에서는 인증서 일련번호와 일치하는 클라이언트 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 조건 연산자를 사용하여 정책 평가 중에 정책에 사용되는 인증서 정책 변수가 채워지도록 할 수도 있습니다. 다음 정책 문서는 인증서 일련번호 및 인증서 주체 일반 이름 속성이 있는 경우에만 인증서가 있는 iot:Connect를 허용합니다.
모든 인증서 정책 변수에는 문자열 값이 있으므로 모든 문자열 조건 연산자가 지원됩니다.
-
{ "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" } } } ] }