The PubSubKeyPushTargetType is formally defined in Table 194.

An instance of this ObjectType includes all information required to establish a secure connection to the Server that is the target of a push operation as described in 5.4.4.3. If any of the connection information changes, the PubSubKeyPushTarget must be removed and a new PubSubKeyPushTarget with updated connection information must be added.

Table 194 – PubSubKeyPushTargetType definition

Attribute

Value

BrowseName

PubSubKeyPushTargetType

IsAbstract

False

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

Subtype of BaseObjectType defined in OPC 10000-5.

HasPushed SecurityGroup

Object

<SecurityGroupName>

SecurityGroupType

Optional‌Placeholder

HasProperty

Variable

ApplicationUri

String

PropertyType

Mandatory

HasProperty

Variable

EndpointUrl

String

PropertyType

Mandatory

HasProperty

Variable

SecurityPolicyUri

String

PropertyType

Mandatory

HasProperty

Variable

UserTokenType

UserTokenPolicy

PropertyType

Mandatory

HasProperty

Variable

RequestedKeyCount

UInt16

PropertyType

Mandatory

HasProperty

Variable

RetryInterval

Duration

PropertyType

Mandatory

HasProperty

Variable

LastPushExecutionTime

DateTime

PropertyType

Mandatory

HasProperty

Variable

LastPushErrorTime

DateTime

PropertyType

Mandatory

HasComponent

Method

ConnectSecurityGroups

Defined in 8.6.3

Mandatory

HasComponent

Method

DisconnectSecurityGroups

Defined in 8.6.4

Mandatory

HasComponent

Method

TriggerKeyUpdate

Defined in 8.6.5

Mandatory

Conformance Units

PubSub Model SKS Push

The Property ApplicationUri is the ApplicationUri of the Server that is the target of a push. The push operation shall fail if the ApplicationUri of the connected target Server does not match this parameter.

The Property EndpointUrl is the URL of the Endpoint of the Server that is the target of a push.

The Property SecurityPolicyUri is a String that contains the security policy the SKS shall use to establish a SecureChannel to the PubSubKeyPushTarget. The MessageSecurityMode shall always be SignAndEncrypt.

The Property UserTokenType contains the type of user toke to be used for the connection to the PubSubKeyPushTarget. The default is Anonymous and authorization is accomplished in this case with the application identity of the SKS.

The Property RequestedKeyCount is the number of keys that are to be pushed on each update. The minimum setting for this is three.

The Property RetryInterval defines the interval the SKS shall use to retry pushing keys after an error appeared.

The Property LastPushExecutionTime indicates the time the last push operation was executed successfully on the PubSubKeyPushTarget. A null DateTime value indicates that no successful push was executed.

The Property LastPushErrorTime indicates the last time a push operation failed on the PubSubKeyPushTarget. A null DateTime value indicates that no error has occurred.

The first push is started at the time a SecurityGroup is assigned to the PubSubKeyPushTarget. The assignment is done with the Method ConnectSecurityGroups or with a successful update of the PubSubKeyPushTargets with PubSubConfigurationType CloseAndUpdate. The sequence for push is described in 5.4.4.3.

In a period of half the KeyLifetime of a SecurityGroup, the SKS shall open a secure communication to each related PubSubKeyPushTargets and shall call SetSecurityKeys to push the security keys for a SecurityGroup into a Publisher or Subscriber. The SKS shall push the previous security key, the current key, and at least one future key to bridge longer unavailability time of the SKS. If it is not possible to push security keys to a PubSubKeyPushTarget due to errors in establishing the communication or due to errors returned from the SetSecurityKeys Method call, the SKS shall retry pushing the security keys in a period of RetryInterval. If multiple future security keys are pushed, it is up to the SKS to define when security keys are pushed, but at a minimum it shall be at the half KeyLifetime of the current key when only one future key is remaining.

Since the SKS is unaware of the state of a PubSubKeyPushTarget, it is recommended for a PubSubKeyPushTarget to persist security keys. This allows the PubSubKeyPushTarget to continue secured PubSub communication after a power cycle, as long as the outage time is smaller than the time covered with currentKey and FutureKeys. If keys are not persisted, it may take up to half the KeyLifetime to get the first set of security keys. The PubSubKeyPushTargets persisting security keys shall have an understanding of time (either synchronized or battery backup) allowing them to determine whether the current key is still valid to use, or whether to use a future key following a power interruption.

This Method connects instances of SecurityGroupType to this PubSubKeyPushTarget. This indicates that the SKS shall use the push model to distribute the keys of the SecurityGroup to the PubSubKeyPushTarget.

The SKS shall push keys following this assignment. If an assignment does already exist, the entry is ignored.

If the assignment for a SecurityGroup already exists, a Good_EntryReplaced should be returned for that SecurityGroup and a new push of the existing keys shall be triggered to the push target.

The Client shall be authorized to modify the configuration for the SKS functionality and shall use at least a signed communication channel when invoking this Method on the Server.

Signature

ConnectSecurityGroups (

[in]NodeId[] SecurityGroupIds,

[out]StatusCode[]ConnectResults

);

Argument

Description

SecurityGroupIds

The NodeIds of the SecurityGroups to connect to the PushTarget.

ConnectResults

The result codes for the SecurityGroups to connect.

Method Result Codes

ResultCode

Description

Bad_UserAccessDenied

The Session user is not allowed to connect SecurityGroups to the push target.

Bad_SecurityModeInsufficient

The communication channel is not using signing.

Operation Result Codes

ResultCode

Description

Good_EntryReplaced

The PushTarget was already assigned to the SecurityGroup, a new push was triggered

Bad_NodeIdUnknown

A SecurityGroupNodeId is unknown.

Bad_NodeIdInvalid

A SecurityGroupNodeId is not a NodeId of a SecurityGroupType Object.

Table 195 specifies the AddressSpace representation for the ConnectSecurityGroups Method.

Table 195 – ConnectSecurityGroups Method AddressSpace definition

Attribute

Value

BrowseName

ConnectSecurityGroups

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

InputArguments

Argument[]

PropertyType

Mandatory

HasProperty

Variable

OutputArguments

Argument[]

PropertyType

Mandatory

ConformanceUnits

PubSub Model SKS Push

This Method disconnects instances of SecurityGroupType from this PubSubKeyPushTarget. This indicates that the SKS shall stop using the push model to distribute the keys of those SecurityGroups to the PubSubKeyPushTarget.

The Client shall be authorized to modify the configuration for the SKS functionality and shall use at least a signed communication channel when invoking this Method on the Server.

Signature

DisconnectSecurityGroups (

[in]NodeId[] SecurityGroupIds,

[out]StatusCode[]DisconnectResults

);

Argument

Description

SecurityGroupIds

The NodeIds of the SecurityGroups to disconnect.

DisconnectResults

The result codes for the SecurityGroups to disconnect.

Method Result Codes

ResultCode

Description

Bad_UserAccessDenied

The Session user is not allowed to disconnect SecurityGroups from the push target.

Bad_SecurityModeInsufficient

The communication channel is not using signing.

Operation Result Codes

ResultCode

Description

Bad_NodeIdUnknown

A SecurityGroupNodeId is unknown.

Bad_NodeIdInvalid

A SecurityGroupNodeId is not a NodeId of a SecurityGroupType Object.

Table 196 specifies the AddressSpace representation for the DisconnectSecurityGroups Method.

Table 196 – DisconnectSecurityGroups Method AddressSpace definition

Attribute

Value

BrowseName

DisconnectSecurityGroups

References

NodeClass

BrowseName

DataType

TypeDefinition

ModellingRule

HasProperty

Variable

InputArguments

Argument[]

PropertyType

Mandatory

HasProperty

Variable

OutputArguments

Argument[]

PropertyType

Mandatory

ConformanceUnits

PubSub Model SKS Push

This Method triggers a key update of all SecurityGroups related to the PubSubKeyPushTarget. The SKS shall push the new set of keys for all related SecurityGroups, even if not currently scheduled.

The Client shall be authorized to modify the configuration for the SKS functionality and shall use at least a signed communication channel when invoking this Method on the Server.

Signature

TriggerKeyUpdate ();

Method Result Codes

ResultCode

Description

Bad_UserAccessDenied

The Session user is not allowed to trigger a key update on this push target.

Bad_SecurityModeInsufficient

The communication channel is not using signing.

The HasPushedSecurityGroup ReferenceType is a concrete ReferenceType that can be used directly. It is a subtype of the HierarchicalReferences ReferenceType.

The SourceNode of References of this type shall be an Object of ObjectType PubSubKeyPushTargetType or an ObjectType that is a subtype of PubSubKeyPushTargetType defined in 8.6.1.

The TargetNode of this ReferenceType shall be an Object of the ObjectType SecurityGroupType defined in 8.4.1.

Servers shall provide the inverse Reference that relates a SecurityGroup Object back to a PubSubKeyPushTargetType Object.

The representation of the HasPushedSecurityGroup ReferenceType in the AddressSpace is specified in Table 197.

Table 197 – HasPushedSecurityGroup ReferenceType

Attributes

Value

BrowseName

HasPushedSecurityGroup

InverseName

HasPushTarget

Symmetric

False

IsAbstract

False

References

NodeClass

BrowseName

Comment

Subtype of HierarchicalReferences defined in OPC 10000-5.

Conformance Units

PubSub Model SKS Push

Table 198 specifies the AddressSpace representation for the TriggerKeyUpdate Method.

Table 198 – TriggerKeyUpdate Method AddressSpace definition

Attribute

Value

BrowseName

TriggerKeyUpdate

ConformanceUnits

PubSub Model SKS Push