Class: SDM::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/models/porcelain.rb

Overview

A Query is a record of a single client request to a resource, such as a SQL query. Longer-running queries including long-running SSH commands and SSH, RDP, or Kubernetes interactive sessions will return two Query records with the same identifier, one record at the start of the query and a second record upon the completion of the query with additional detail.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(account_email: nil, account_first_name: nil, account_id: nil, account_last_name: nil, account_tags: nil, authzjson: nil, capture: nil, client_ip: nil, completed_at: nil, duration: nil, egress_node_id: nil, encrypted: nil, id: nil, identity_alias_username: nil, metadata_json: nil, query_body: nil, query_category: nil, query_hash: nil, query_key: nil, record_count: nil, remote_identity_username: nil, replayable: nil, resource_id: nil, resource_name: nil, resource_tags: nil, resource_type: nil, source_ip: nil, target: nil, timestamp: nil) ⇒ Query

Returns a new instance of Query.



14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
# File 'lib/models/porcelain.rb', line 14125

def initialize(
  account_email: nil,
  account_first_name: nil,
  account_id: nil,
  account_last_name: nil,
  account_tags: nil,
  authzjson: nil,
  capture: nil,
  client_ip: nil,
  completed_at: nil,
  duration: nil,
  egress_node_id: nil,
  encrypted: nil,
  id: nil,
  identity_alias_username: nil,
  metadata_json: nil,
  query_body: nil,
  query_category: nil,
  query_hash: nil,
  query_key: nil,
  record_count: nil,
  remote_identity_username: nil,
  replayable: nil,
  resource_id: nil,
  resource_name: nil,
  resource_tags: nil,
  resource_type: nil,
  source_ip: nil,
  target: nil,
  timestamp: nil
)
  @account_email =  == nil ? "" : 
  @account_first_name =  == nil ? "" : 
  @account_id =  == nil ? "" : 
  @account_last_name =  == nil ? "" : 
  @account_tags =  == nil ? SDM::_porcelain_zero_value_tags() : 
  @authzjson = authzjson == nil ? "" : authzjson
  @capture = capture == nil ? nil : capture
  @client_ip = client_ip == nil ? "" : client_ip
  @completed_at = completed_at == nil ? nil : completed_at
  @duration = duration == nil ? nil : duration
  @egress_node_id = egress_node_id == nil ? "" : egress_node_id
  @encrypted = encrypted == nil ? false : encrypted
  @id = id == nil ? "" : id
  @identity_alias_username = identity_alias_username == nil ? "" : identity_alias_username
  @metadata_json =  == nil ? "" : 
  @query_body = query_body == nil ? "" : query_body
  @query_category = query_category == nil ? "" : query_category
  @query_hash = query_hash == nil ? "" : query_hash
  @query_key = query_key == nil ? "" : query_key
  @record_count = record_count == nil ? 0 : record_count
  @remote_identity_username = remote_identity_username == nil ? "" : remote_identity_username
  @replayable = replayable == nil ? false : replayable
  @resource_id = resource_id == nil ? "" : resource_id
  @resource_name = resource_name == nil ? "" : resource_name
  @resource_tags = resource_tags == nil ? SDM::_porcelain_zero_value_tags() : resource_tags
  @resource_type = resource_type == nil ? "" : resource_type
  @source_ip = source_ip == nil ? "" : source_ip
  @target = target == nil ? "" : target
  @timestamp = timestamp == nil ? nil : timestamp
end

Instance Attribute Details

#account_emailObject

The email of the account performing this query, at the time the query was executed. If the account email is later changed, that change will not be reflected via this field.



14056
14057
14058
# File 'lib/models/porcelain.rb', line 14056

def 
  @account_email
end

#account_first_nameObject

The given name of the account performing this query, at the time the query was executed. If the account is later renamed, that change will not be reflected via this field.



14059
14060
14061
# File 'lib/models/porcelain.rb', line 14059

def 
  @account_first_name
end

#account_idObject

Unique identifier of the Account that performed the Query.



14061
14062
14063
# File 'lib/models/porcelain.rb', line 14061

def 
  @account_id
end

#account_last_nameObject

The family name of the account performing this query, at the time the query was executed. If the account is later renamed, that change will not be reflected via this field.



14064
14065
14066
# File 'lib/models/porcelain.rb', line 14064

def 
  @account_last_name
end

#account_tagsObject

The tags of the account accessed, at the time the query was executed. If the account tags are later changed, that change will not be reflected via this field.



14067
14068
14069
# File 'lib/models/porcelain.rb', line 14067

def 
  @account_tags
end

#authzjsonObject

Authorization metadata associated with this query.



14069
14070
14071
# File 'lib/models/porcelain.rb', line 14069

def authzjson
  @authzjson
end

#captureObject

For queries against SSH, Kubernetes, and RDP resources, this contains additional information about the captured query.



14072
14073
14074
# File 'lib/models/porcelain.rb', line 14072

def capture
  @capture
end

#client_ipObject

The IP address the Query was performed from, as detected at the StrongDM control plane.



14074
14075
14076
# File 'lib/models/porcelain.rb', line 14074

def client_ip
  @client_ip
end

#completed_atObject

The time at which the Query was completed. Empty if this record indicates the start of a long-running query.



14077
14078
14079
# File 'lib/models/porcelain.rb', line 14077

def completed_at
  @completed_at
end

#durationObject

The duration of the Query.



14079
14080
14081
# File 'lib/models/porcelain.rb', line 14079

def duration
  @duration
end

#egress_node_idObject

The unique ID of the node through which the Resource was accessed.



14081
14082
14083
# File 'lib/models/porcelain.rb', line 14081

def egress_node_id
  @egress_node_id
end

#encryptedObject

Indicates that the body of the Query is encrypted.



14083
14084
14085
# File 'lib/models/porcelain.rb', line 14083

def encrypted
  @encrypted
end

#idObject

Unique identifier of the Query.



14085
14086
14087
# File 'lib/models/porcelain.rb', line 14085

def id
  @id
end

#identity_alias_usernameObject

The username of the IdentityAlias used to access the Resource.



14087
14088
14089
# File 'lib/models/porcelain.rb', line 14087

def identity_alias_username
  @identity_alias_username
end

#metadata_jsonObject

Driver specific metadata associated with this query.



14089
14090
14091
# File 'lib/models/porcelain.rb', line 14089

def 
  @metadata_json
end

#query_bodyObject

The captured content of the Query. For queries against SSH, Kubernetes, and RDP resources, this contains a JSON representation of the QueryCapture.



14092
14093
14094
# File 'lib/models/porcelain.rb', line 14092

def query_body
  @query_body
end

#query_categoryObject

The general category of Resource against which Query was performed, e.g. "web" or "cloud".



14094
14095
14096
# File 'lib/models/porcelain.rb', line 14094

def query_category
  @query_category
end

#query_hashObject

The hash of the body of the Query.



14096
14097
14098
# File 'lib/models/porcelain.rb', line 14096

def query_hash
  @query_hash
end

#query_keyObject

The symmetric key used to encrypt the body of this Query and its replay if replayable. If the Query is encrypted, this field contains an encrypted symmetric key in base64 encoding. This key must be decrypted with the organization's private key to obtain the symmetric key needed to decrypt the body. If the Query is not encrypted, this field is empty.



14101
14102
14103
# File 'lib/models/porcelain.rb', line 14101

def query_key
  @query_key
end

#record_countObject

The number of records returned by the Query, for a database Resource.



14103
14104
14105
# File 'lib/models/porcelain.rb', line 14103

def record_count
  @record_count
end

#remote_identity_usernameObject

The username of the RemoteIdentity used to access the Resource.



14105
14106
14107
# File 'lib/models/porcelain.rb', line 14105

def remote_identity_username
  @remote_identity_username
end

#replayableObject

Indicates that the Query is replayable, e.g. for some SSH or K8s sessions.



14107
14108
14109
# File 'lib/models/porcelain.rb', line 14107

def replayable
  @replayable
end

#resource_idObject

Unique identifier of the Resource against which the Query was performed.



14109
14110
14111
# File 'lib/models/porcelain.rb', line 14109

def resource_id
  @resource_id
end

#resource_nameObject

The name of the resource accessed, at the time the query was executed. If the resource is later renamed, that change will not be reflected via this field.



14112
14113
14114
# File 'lib/models/porcelain.rb', line 14112

def resource_name
  @resource_name
end

#resource_tagsObject

The tags of the resource accessed, at the time the query was executed. If the resource tags are later changed, that change will not be reflected via this field.



14115
14116
14117
# File 'lib/models/porcelain.rb', line 14115

def resource_tags
  @resource_tags
end

#resource_typeObject

The specific type of Resource against which the Query was performed, e.g. "ssh" or "postgres".



14117
14118
14119
# File 'lib/models/porcelain.rb', line 14117

def resource_type
  @resource_type
end

#source_ipObject

The IP address the Query was performed from, as detected at the ingress gateway.



14119
14120
14121
# File 'lib/models/porcelain.rb', line 14119

def source_ip
  @source_ip
end

#targetObject

The target destination of the query, in host:port format.



14121
14122
14123
# File 'lib/models/porcelain.rb', line 14121

def target
  @target
end

#timestampObject

The time at which the Query was started.



14123
14124
14125
# File 'lib/models/porcelain.rb', line 14123

def timestamp
  @timestamp
end

Instance Method Details

#to_json(options = {}) ⇒ Object



14187
14188
14189
14190
14191
14192
14193
# File 'lib/models/porcelain.rb', line 14187

def to_json(options = {})
  hash = {}
  self.instance_variables.each do |var|
    hash[var.id2name.delete_prefix("@")] = self.instance_variable_get var
  end
  hash.to_json
end