証明書のポリシーの例 - AWS IoT Core

証明書のポリシーの例

AWS IoT Core レジストリに登録されているデバイスの場合、次のポリシーにより、モノの名前に一致するクライアント ID で AWS IoT Core に接続し、デバイスが自らを認証するために使用した証明書の certificateId に名前が等しいトピックに発行するアクセス許可が付与されます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"] } ] }

AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーにより、クライアント ID、AWS IoT Core、client1、および client2client3 に接続し、デバイスが自らを認証するために使用した証明書の certificateId に名前が等しいトピックに発行するアクセス許可が付与されます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"] }, { "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" ] } ] }

AWS IoT Core レジストリに登録されているデバイスの場合、次のポリシーにより、モノの名前に一致するクライアント ID で AWS IoT Core に接続し、デバイスが自らを認証するために使用した証明書のサブジェクト CommonName フィールドに名前が等しいトピックに発行するアクセス許可が付与されます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"] } ] }
注記

この例では、証明書のサブジェクト共通名が、サブジェクト共通名が登録された各証明書に対して一意であることを前提にして、トピック ID として使用されます。複数のデバイス間で証明書が共有されている場合、サブジェクト共通名は、その証明書を共有するすべてのデバイスで同じになります。したがって、複数のデバイスの同じトピックに発行する権限が許可されます (推奨されません)。

AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーにより、クライアント ID AWS IoT Core、client1、および client2client3 に接続し、デバイスが自らを認証するために使用した証明書のサブジェクト CommonName フィールドに名前が等しいトピックに発行するアクセス許可が付与されます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"] }, { "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" ] } ] }
注記

この例では、証明書のサブジェクト共通名が、サブジェクト共通名が登録された各証明書に対して一意であることを前提にして、トピック ID として使用されます。複数のデバイス間で証明書が共有されている場合、サブジェクト共通名は、その証明書を共有するすべてのデバイスで同じになります。したがって、複数のデバイスの同じトピックに発行する権限が許可されます (推奨されません)。

AWS IoT Core レジストリに登録されているデバイスの場合、次のポリシーにより、モノの名前に一致するクライアント ID で AWS IoT Core に接続し、デバイスに認証に使用される証明書で、その admin/ フィールドが Subject.CommonName.2 に設定されている場合に、Administrator というプレフィックスが付いた名前のトピックに発行するアクセス許可が付与されます。

JSON
{ "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/admin/*"], "Condition": { "StringEquals": { "iot:Certificate.Subject.CommonName.2": "Administrator" } } } ] }

AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーにより、クライアント ID、AWS IoT Core、client1、および client2client3 に接続し、デバイスに認証に使用される証明書で、その admin/ フィールドが Subject.CommonName.2 に設定されている場合に、Administrator というプレフィックスが付いた名前のトピックに発行するアクセス許可が付与されます。

JSON
{ "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/admin/*"], "Condition": { "StringEquals": { "iot:Certificate.Subject.CommonName.2": "Administrator" } } } ] }

AWS IoT Core レジストリに登録されているデバイスの場合、次のポリシーにより、デバイスはモノの名前を使用して、デバイスの認証に使用された証明書で、そのいずれかの admin/ フィールドが ThingName に設定されている場合、Subject.CommonName に続いて Administrator で構成されている特定のトピックで発行することができます。

JSON
{ "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/admin/${iot:Connection.Thing.ThingName}"], "Condition": { "ForAnyValue:StringEquals": { "iot:Certificate.Subject.CommonName.List": "Administrator" } } } ] }

AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーにより、クライアント ID、AWS IoT Core、client1、および client2client3 に接続し、デバイスに認証に使用される証明書で、そのいずれかの admin フィールドが Subject.CommonName に設定されている場合に、トピック Administrator に発行するアクセス許可が付与されます。

JSON
{ "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/admin"], "Condition": { "ForAnyValue:StringEquals": { "iot:Certificate.Subject.CommonName.List": "Administrator" } } } ] }